Quotation report

I am building a report in quotes and it's almost done. A couple of things are keeping from completion.
1) If a quote has multiple line items and each material has numerous quantities, how do I determine the qty of a given material that has been completed (ordered) and the qty that is still open?
2) On what table does the above info reside? The info being the qty that has been completed into an order. Not the order qty in the quote (VBAP-KWMENG), not the confirmed qty in the quote (VBEP-BMENG)
3) On a quote as described above, I am trying to tell my ABAP developer how to reflect the associated Order document (for the completed materials that have been ordered off the quotation doc) on the report (as seen in document flow). I know this reside on the same table as the quote # (VBAK-VBELN). My question is, how do I map the Quote # to the associated order #?
I hope I was not too winded with the question.
Any help would be appreciated.
Cheers mates!

Hi Madhu,
                  my means is quotation is created with 10 quantity but againest this quatation SO has become for 5 quantity only.
so i want he report where i can see how much quantity of quatation is still pending to convert into SO.
Hope you will get understand.
Thanks .

Similar Messages

  • Requirement for Quotation Report.

    Dear Experts,
    I have a requirement for Report for Quotation.
    In the Report Client wants to see for Particular Quotation Inquiry Number, Inquiry Value, Sales Order and Sales Order Value.
    I  have checked in VBFA Table if the Sales Order is Open for that Quotation it doesnt gets updated in the VBFA Table.
    Is there any other way I could capture the Sales Order Number for that particular Quotation.
    Please suggest the way out.
    Thanks.
    Parag.

    Hi,
    The logic would be
    Give the input value as quotation number.
    Pass quotation number into VBAK- VBELN and get VBAK-VGBEL to get  Inquiry number
    Pass quotaion number into  VBAK-VGBEL  and get  VBAK- VBELN  Sale order  number
    subsequently pass these Inquiry and quotation numbers and get the relevant details of Inquiry and Quaotation
    check this logic using t.code:SE16n
    Hope this helps.
    Regards,
    Sharan

  • Quotation report with open quantity

    Hi,
           Can you please tell me any standard report where i can check how many quantity is open in quoatation.
    Regards,
    Monty

    Hi Madhu,
                      my means is quotation is created with 10 quantity but againest this quatation SO has become for 5 quantity only.
    so i want he report where i can see how much quantity of quatation is still pending to convert into SO.
    Hope you will get understand.
    Thanks .

  • Create Quotation by sending different partner data to header & item table in a Report

    Hello all,
       Can any one please guide me how can I send different Partner data to Header & Item by running a Z Quotation Report in SE38. Actually Now I am able to create a Quotation which takes same Partner data of Header to Item data as well but my requirement is to send different Partner data to Header & Item in a quotation.
    If you have sample code for the same please do share. I will be thankful to you.
    Waiting for helpful suggestions.
    Regards
    -Ajay

    Hi Ajay,
    I was referring to CRM_PARTNER_MAINTAIN_MULTI_OW and CRM_PARTNER_MAINTAIN_SINGLE_OW function modules. A sample working code (written in badi) for an order below.
    l_wa_partner_com-partner_no  = l_v_bp_guid.
    l_wa_partner_com-partner_fct  = l_c_partner_fct.
    l_wa_field_names-fieldname = l_c_field_partner.
    INSERT l_wa_field_names INTO TABLE l_i_input_fields.
    l_wa_field_names-fieldname = l_c_field_fct.
    INSERT l_wa_field_names INTO TABLE l_i_input_fields.
    ** Update the order with new partners
    CALL FUNCTION 'CRM_PARTNER_MAINTAIN_SINGLE_OW'
    EXPORTING
    iv_ref_guid                    = is_orderadm_h_wrk-guid
    iv_ref_kind                    = l_c_ref_kind " Pass B here in u'r case
    is_partner_com            = l_wa_partner_com
    CHANGING
    ct_input_field_names   = l_i_input_fields
    EXCEPTIONS
    error_occurred             = 1
    OTHERS                      = 2.
    IF sy-subrc <> 0.
    ENDIF.
    Thanks,
    Faisal

  • How to Sales Reports in CRM system

    Dear all,
    we have CRM and ECC system which are up and running.
    and also we have BW server connected to both systems. We want to see some reports like quotations report, sales orders report, deliveries report,etc... which are exclusively available in ECC system.
    Could any one of you explain me how to activate BW Infocubes and how to see Sd reports in CRM system with the help of BW system.
    Your suggestions will be highly appreciated.
    Thank you
    Raghu Ram

    Refer pre-configured scenarios and step by step guide here:
    http://help.sap.com/bp_biv170/html/BW/I15_EN_DE.htm
    For further more scenarios refer:
    http://help.sap.com/saphelp_nw70/helpdata/en/04/47a46e4e81ab4281bfb3bbd14825ca/frameset.htm

  • Can not display BI report in Web ui

    I created reporting profile with both bi and interactive reporting active and assigned to the business role functional profile
    I gave the BI connection client in the report that I wanted. When I select the report in webu ui, it's taking me to a sign on pad. I assume this for BI sign on pad and When i enter sign on, it's not taking me any where.
    This just a standard report in CRM My top 5 quotations. All necessary steps in basic bi connection, basic sales analytics are done too
    How does the the connection between BI and crm works?
    Please advise

    Hi Experts,
    We are using Webiu 2007 with BI 7. 
    We linked our sandbox to RWT system to test the report output. In my CRS, I have source system RWT defined and the same way in BI also we have assigned CRS to link these systems together. It is my understanding that when we select the report, we are just calling the from BI into CRM.  I have done the following steps in CRM
    1) Created reporting profile in CRM analytics as both BI and CRM interactive reporting activated
    2) Assigned this reporting profile to business role
    3) I selected My-Top-5 quotation report and gave the BI system in display  bi reports
    4) I can see the report on webui.
    Problem: When I selected the report,  a logon pad appears and I enter RWT user id and password, it's doing nothing.  But, I have another user who is logging in for the first time got an error "Error loading template "OTPLB_OCRM_QUTO_Q0001_1 notification number BRAIN276". When the same new user tried to login second or third time, it's not showing the error and nothing is happening when we enter userid and pass word.  But, we can logon to GUI RWT.
    We tried to pull a query view report and web template reports see if we can display data. The BI team gave me couple of info objects keys. 
    1) I created the report with object key and type as one for 3.x template and one for 3.x query view
    2) Created logical links for these two reports and selected these two reports in business role. Now the reports are showing in webui
    3) When I select any of these, it taking to a blank screen without any logon screen. 
    BW team says that these reports are running with data in their system.
    Can someone please help?

  • Having two copies of the same report on the same page.

    buddy.....I've tried urs suggestion,but now it is showing two quotations(easily adjustible in 2 pages) on 3 pages. I've tried Page Protect to set to No for all the repeating frames and fixed the horizontal & vertical length of all repeating frames.
    plzzz let me to describe my report more deeply, it picks data from two tables,one master table containing quotation#,customer-id, date.2nd block contains details about repairing items. so all the data is in two
    repeating frames which can be easily printed in half page. 2nd copy of this quotation will also print on the same page in the lower half portion of a page.
    is it enough for u????
    still if u peeps have any problem in understanding my problem then I think u peeps should have a look on my quotation report so that u may have a better idea of this problem.

    hi gentlemen...I've solved this problem by doing a trick that I've create dual items in data-model i.e two queries and data group for each block and printed them on the same page,so it has solved my problem, is it the right way I've done the things or there is some other better idea???

  • Quotation with target value (field ZWERT)

    Hello
    the requirement is to create a sd quotation, which is not based on target qty or order qty!! furthermore I need to have a sd quotation which is based on target value. Is there any way to have this? I tried all the standard quotation types (AG, AV, AS, ...)! All of them are qty based not value based! What can I change in customizing to have it value based? could it be solved by change the field "Screen sequence grp." from AG to WK1 without change any logic for standard quotation reports??
    please help...
    thx
    deniz

    For me, it does not make sense.  Just from practical approach point of view, a seller would decide his selling price to his end customer based on what off-take they are going to lift.  Having said this, to decide the final selling price, you need to know what quantity you are going to sell.  You cannot fix the selling price for who orders 10 nos. and sell at the same price for those who orders 1000 nos.
    G. Lakshmipathi

  • Two copies of the same mail folders / Problem with TimeMachine backup

    I have two copies of the same IMAP mail folders in my library
    1. ~/Library/Mail (actual version)
    2. ~/Library/Mail/V2 (old version)
    I guess this is the reason why my TimeMachine does not backup the emails (it only backups the folder with only one version in folder "V2")
    How can I resolve this problem ?
    Manny thanks,
    Ole

    buddy.....I've tried urs suggestion,but now it is showing two quotations(easily adjustible in 2 pages) on 3 pages. I've tried Page Protect to set to No for all the repeating frames and fixed the horizontal & vertical length of all repeating frames.
    plzzz let me to describe my report more deeply, it picks data from two tables,one master table containing quotation#,customer-id, date.2nd block contains details about repairing items. so all the data is in two
    repeating frames which can be easily printed in half page. 2nd copy of this quotation will also print on the same page in the lower half portion of a page.
    is it enough for u????
    still if u peeps have any problem in understanding my problem then I think u peeps should have a look on my quotation report so that u may have a better idea of this problem.

  • Arranging Random Data Pieces From SLX/Smart Catalogue Into Table Format

    Hi,
    We have a performance data grid that needs to appear on our quotation report.  The data is organized currently into rows in a 2-table linked format and manually entered as plain txt by the user.  We are now migrating towards designing a report in Crystal Reports to try to recreate this table layout but still needing to mine data for other purposes.  Therefore, the data pieces need to be distinct and separate.  Further, the data pieces required for the table can vary and can be organized in up to 9 different ways depending upon the given situation.  Is there an effective way to aesthetically arrange random data pieces in a table format?  The data pieces are coming from SalesLogix / SmartCatalog.  Has any other user of Crystal Reports attempted to do this - i.e. create a data table on a Crystal report?
    Sincerely,
    Sarah Imig
    International Sales Administrator/Database Administrator
    HayssenSandiacre

    Hi,
    We have a performance data grid that needs to appear on our quotation report.  The data is organized currently into rows in a 2-table linked format and manually entered as plain txt by the user.  We are now migrating towards designing a report in Crystal Reports to try to recreate this table layout but still needing to mine data for other purposes.  Therefore, the data pieces need to be distinct and separate.  Further, the data pieces required for the table can vary and can be organized in up to 9 different ways depending upon the given situation.  Is there an effective way to aesthetically arrange random data pieces in a table format?  The data pieces are coming from SalesLogix / SmartCatalog.  Has any other user of Crystal Reports attempted to do this - i.e. create a data table on a Crystal report?
    Sincerely,
    Sarah Imig
    International Sales Administrator/Database Administrator
    HayssenSandiacre

  • How to find which  Smartform it display

    Dear Experts,
    I display print preview in t-code VA23  to show my quotation report ,
    and  this report built by smartform ,
    How could I find which smartform form it use?
    Thanks a lot in advanced.
    Yacoa

    Transaction NACE -> Select Application V1 -> Click Output Type -> Select your output type from the list -> Click on Process routines, you will see the smartform that is assigned to your output type
    To see which output type is assigned to your Form, in VA23/VA22, click on Extras -> Output -> Header -> Edit. You will then see list of output types triggered, one of which will be for the printing through smartform

  • Help as soon as possible

    hi i want to create a Pending quotation report for a sales representative

    You don't. You will have to send it to someone in the country of purchase to have them take it in, or go there yourself to take it in for repair.
    Message was edited by: AmishCake

  • CRM ONLINE 2013: On Approval Of Quotation, Run Report, Generate PDF and Send an Email With PDF as attachment

    Hi,
    I am using CRM ONLINE 2013.
    How to automate below process?
    1. On Approval Of Quotation, Run Report.
    2. Generate PDF.
    3. Send an Email With PDF as attachment.
    As i have gone through many forums for this topic, but creating a plugin code for generating Report PDF is not possible in CRM ONLINE.
    So, What is the alternate way to do this..?
    Thanks.

    This is my entire code mentioned below:-
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
        <script type="text/javascript">
            if (typeof (SDK) == "undefined")
            { SDK = { __namespace: true }; }
            SDK.JScriptRESTDataOperations = {
                _context: function () {
                    if (typeof GetGlobalContext != "undefined")
                    { return GetGlobalContext(); }
                    else {
                        if (typeof Xrm != "undefined") {
                            return Xrm.Page.context;
                        else { return new Error("Context is not available."); }
                _getServerUrl: function () {
                    var serverUrl = this._context().getServerUrl()
                    if (serverUrl.match(/\/$/)) {
                        serverUrl = serverUrl.substring(0, serverUrl.length - 1);
                    return serverUrl;
                _ODataPath: function () {
                    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
                _errorHandler: function (req) {
                    return new Error("Error : " +
      req.status + ": " +
      req.statusText + ": " +
      JSON.parse(req.responseText).error.message.value);
                _dateReviver: function (key, value) {
                    var a;
                    if (typeof value === 'string') {
                        a = /Date\(([-+]?\d+)\)/.exec(value);
                        if (a) {
                            return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
                    return value;
                Create: function (object, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 201) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send(JSON.stringify(object));
                Retrieve: function (id, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 200) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                Update: function (id, object, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.setRequestHeader("X-HTTP-Method", "MERGE");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 204 || this.status == 1223) {
                                successCallback();
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send(JSON.stringify(object));
                Delete: function (id, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.setRequestHeader("X-HTTP-Method", "DELETE");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 204 || this.status == 1223) {
                                successCallback();
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
                    if (filter != null) {
                        filter = "?" + filter;
                    else { filter = ""; }
                    var req = new XMLHttpRequest();
                    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 200) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                __namespace: true
        </script>
        <script type="text/javascript">
            //Create Email and link it with Order as Regarding field
            var Xrm;
            var email = new Object();
            var ownerID = "";
            var CustomerId = "";
            if (window.opener) { Xrm = window.opener.Xrm; }
            else if (window.parent) { Xrm = window.parent.Xrm; }
            //Get ownerid who send email of quotation to customer
            function GetOwnerID() {
                var owner = Xrm.Page.getAttribute("ownerid").getValue();
                ownerID = owner[0].id;
                var ownerName = owner[0].name;
                var entityType = owner[0].entityType;
                GetToEmailGUID();
            //Get customerid who receive email of quotation from owner
            function GetToEmailGUID() {
                var Customer = Xrm.Page.getAttribute('customerid').getValue();
                CustomerId = Customer[0].id;
                var CustomerName = Customer[0].name;
                var entityType = Customer[0].entityType;
                //if CustomerId is type of "Account" then get Primary Contact id of that account
                if (entityType == "account") {
                    var contact = Xrm.Page.getAttribute("customerid").getValue();
                    if (contact === null) return;
                    var serverUrl = Xrm.Page.context.getClientUrl();
                    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
                    var req = new XMLHttpRequest();
                    req.open("GET", oDataSelect, false);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
                    req.onreadystatechange = function () {
                        if (req.readyState === 4) {
                            if (req.status === 200) {
                                var retrieved = JSON.parse(req.responseText).d;
                                CustomerId = retrieved.PrimaryContactId.Id;
                            else {
                                alert(this.statusText);
                    req.send();
            function CreateEmail() {
                GetOwnerID();
                email.Subject = "Email with Report Attachment";
                //Set The current order as the Regarding object
                email.RegardingObjectId = {
                    Id: Xrm.Page.data.entity.getId(),    //Get the current entity Id , here OrderId
                    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
                //Create Email Activity
                SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
            // Email Call Back function
            function EmailCallBack(result) {
                email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
                var activityPartyFrom = new Object();
                // Set the From party of the ActivityParty to relate an entity with Email From field
                activityPartyFrom.PartyId = {
                    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238",  // id of entity you want to associate this activity with.        
                    LogicalName: "contact"
                // Set the "activity" of the ActivityParty
                activityPartyFrom.ActivityId = {
                    Id: result.ActivityId,
                    LogicalName: "email"
                // Now set the participation type that describes the role of the party on the activity).
                activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
                // Create the from ActivityParty for the email
                SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
                var activityPartyTo = new Object();
                // Set the From party of the ActivityParty to relate an entity with Email From field
                activityPartyTo.PartyId = {
                    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238",  // id of entity you want to associate this activity with.        
                    LogicalName: "systemuser"
                // Set the "activity" of the ActivityParty  
                activityPartyTo.ActivityId = {
                    Id: result.ActivityId,
                    LogicalName: "email"
                // Now set the participation type that describes the role of the party on the activity).    
                activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
                // Create the from ActivityParty
                SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
            //ActivityParty From Callback
            function ActivityPartyFromCallBack(result) {
            //ActivityParty To Callback
            function ActivityPartyToCallBack(result) {
                GetReportId('ABM_Infotech_SalesQuote');
            //Create attachment for the created email
            function CreateEmailAttachment() {
                //get reporting session and use the params to convert a report in PDF
                var params = getReportingSession();
                //Email attachment parameters
                var activitymimeattachment = Object();
                activitymimeattachment.ObjectId = Object();
                activitymimeattachment.ObjectId.LogicalName = "email";
                activitymimeattachment.ObjectId.Id = email.ActivityId;
                activitymimeattachment.ObjectTypeCode = "email",
                    activitymimeattachment.Subject = "File Attachment";
                activitymimeattachment.Body = encodePdf(params);
                activitymimeattachment.FileName = "Report1.pdf";
                activitymimeattachment.MimeType = "application/pdf";
                //Attachment call
                SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
            //ActivityMimeAttachment CallBack function
            function ActivityMimeAttachmentCallBack(result) {
                var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
                var width = "800px";
                var height = "600px";
                window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
                // To open window which works in outlook and IE both
                //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width,
    height, features);
            //This method will get the reportId based on a report name that will be used in            getReportingSession() function
            function GetReportId(reportName) {
                var oDataSetName = "ReportSet";
                var columns = "ReportId";
                var filter = "Name eq '" + reportName + "'";
                retrieveMultiple(oDataSetName, columns, filter, onSuccess);
            function retrieveMultiple(odataSetName, select, filter, successCallback) {
                var serverUrl = Xrm.Page.context.getServerUrl();
                var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
                var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
                if (select) {
                    odataUri += "$select=" + select + "&";
                if (filter) {
                    odataUri += "$filter=" + filter;
                $.ajax({
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    url: odataUri,
                    beforeSend: function (XMLHttpRequest) {
                        XMLHttpRequest.setRequestHeader("Accept", "application/json");
                    success: function (data) {
                        if (successCallback) {
                            if (data && data.d && data.d.results) {
                                successCallback(data.d.results);
                            else if (data && data.d) {
                                successCallback(data.d);
                            else {
                                successCallback(data);
                    error: function (XmlHttpRequest, errorThrown) {
                        if (XmlHttpRequest && XmlHttpRequest.responseText) {
                            alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
            function onSuccess(data) {
                reportId = data[0].ReportId.replace('{', ").replace('}', ");
                CreateEmailAttachment(); // Create Email Attachment
            //Gets the report contents
            function getReportingSession() {
                var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                var retrieveEntityReq = new XMLHttpRequest();
                var Id = Xrm.Page.data.entity.getId();
                var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
                quotationGUID = quotationGUID.replace('}', "");
                var reportName = "ABM_Infotech_SalesQuote"; //set this to the report you are trying to download
                var reportID = "751089AA-74B8-E211-B52F-D8D3855B253B"; //set this to the guid of the report you are trying to download
                var rptPathString = ""; //set this to the CRMF_Filtered parameter
                var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition
    attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
                retrieveEntityReq.open("POST", pth, false);
                retrieveEntityReq.setRequestHeader("Accept", "*/*");
                retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName="
    +
                                reportName + "&isScheduledReport=false&p:ABMFilteredQuote=" + strParameterXML;
                //remove the part starting from &p:salesorderid if your report has no parameters
                retrieveEntityReq.send(rptPathString);
                var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
                var ret = new Array();
                ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
                x = retrieveEntityReq.responseText.indexOf("ControlID=");
                ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
                return ret;
            var bdy = new Array();
            var bdyLen = 0;
            function concat2Bdy(x) {
                bdy[bdyLen] = x;
                bdyLen++;
            function encodePdf(params) {
                bdy = new Array();
                bdyLen = 0;
                var retrieveEntityReq = new XMLHttpRequest();
                var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
                "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
                "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
                retrieveEntityReq.open("GET", pth, false);
                retrieveEntityReq.setRequestHeader("Accept", "*/*");
                retrieveEntityReq.send();
                BinaryToArray(retrieveEntityReq.responseBody);
                return encode64(bdy);
            var StringMaker = function () {
                this.parts = [];
                this.length = 0;
                this.append = function (s) {
                    this.parts.push(s);
                    this.length += s.length;
                this.prepend = function (s) {
                    this.parts.unshift(s);
                    this.length += s.length;
                this.toString = function () {
                    return this.parts.join('');
            var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
            function encode64(input) {
                var output = new StringMaker();
                var chr1, chr2, chr3;
                var enc1, enc2, enc3, enc4;
                var i = 0;
                while (i < input.length) {
                    chr1 = input[i++];
                    chr2 = input[i++];
                    chr3 = input[i++];
                    enc1 = chr1 >> 2;
                    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                    enc4 = chr3 & 63;
                    if (isNaN(chr2)) {
                        enc3 = enc4 = 64;
                    } else if (isNaN(chr3)) {
                        enc4 = 64;
                    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
                return output.toString();
        </script>
        <script type="text/vbscript">
        Function BinaryToArray(Binary)
               Dim i
               ReDim byteArray(LenB(Binary))
               For i = 1 To LenB(Binary)
                     byteArray(i-1) = AscB(MidB(Binary, i, 1))
                     concat2Bdy(AscB(MidB(Binary, i, 1)))
             Next
              BinaryToArray = byteArray
       End Function     
        </script>
    </head>
    <body>
        <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>

  • Po Quotation analysis report query required

    Hi,
    Please help me with the po quotation analysis report query.its urgent
    Navigation : PO form - > RFQ s and Quotations - > Quotation Analysis form
    Thanks in advance,
    Madhan

    Madhan87 wrote:
    Hi,
    Please help me with the po quotation analysis report query.its urgent
    Navigation : PO form - > RFQ s and Quotations - > Quotation Analysis form
    Thanks in advance,
    Madhan
    How To Find the VIEW or TABLE That Populates a Form So That a 'Custom Report' Can Be Created Using Same VIEW or TABLE (Doc ID 604772.1)
    Thanks,
    Hussein

  • Problem with quotation marks in Reports

    Hello,
    in Reports i have a text item, and i wrote a text „test” (this is copy/paste from a Word Document). At runtime i see ?text?
    Why those quotation marks does not appear correctly at runtime?
    It's about Reports Developer 2000. Please help if you can.
    Regards,

    my NLS_LANG, before editing in registry was AMERICAN_AMERICA.WE8ISO8859P1 (without that '5' at the end).
    it's WE8ISO8859P1 not WE8ISO8859P15. and i have the NLS_LANG, AMERICAN_AMERICA.WE8ISO8859P1. stil not displaying ok..
    this problem has nothing about the server, but the client, i think.
    the problem appears when i call a report from a form. when i run the report inside Report Builder, the quotation marks appears as „ ".
    Regards

Maybe you are looking for

  • Using USA $ card on UK account for iTunes

    Hi I was very kindly given a fifty dollar iTunes card which I have tried to redeem - but it will not let me as I have a UK account? What can I do. p.s. I cannot find a phone number to call anyone to ask? Please can anyone help? Dave

  • Motion menus - are there any other kind?

    Hello I am creating a DVD of a memorial service and have chaptered all 15 elements of the service. When I try to burn the DVD, it says that I have too much content in my motion menus. Question 1: Is there a menu/chapter screen available that DOESN'T

  • MPEG-2 VS .DV - Which is better?

    Hi, I have 1 hour worth of video I need to get onto a DVD. I edited in FCP, but am wondering if I should output to an MPEG-2 or DV? Is there a difference in quality / reliability? The files will then be dropped into DVD Studio Pro. Also, should I be

  • Reg; password reset in solaris

    Hi, Can anyone help me to reset one of my login password in solaris server . Actually, my password got expired and unix team has reset the password based on my request.Thereafter they have warned me to chnage the password using password -r, but I am

  • 10.4.2 update from 10.4.10

    I tried to use my software update to update my software from 10.4.10 to 10.4.2 which is supposed to fix a problem I have with Airport. I noticed that on the Tiger page on the right side, it only shows 10.4.10 as the latest update. And, when I do a se