Invalid property in extended FIORI app

We are implementing the extended My Quotations Fiori app. Basically, we have added a new sales order to the user interface. The field fetches data from the backend, so we've extended our OData service as well. On the first view, we can successfully call the data. But whenever we go to the next view by clicking the "Edit" button, we get this error

Property 'SalesOrder' is invalid. Select "Refresh" to update the pricing information.

Anyone have an idea how to solve this?

Here is our custom code for the S3 view controller. We used the WEB IDE to create the btw extension. The second function is for creating a trade order when a quote is not associated with it.

manageSalesOrderFields: function() {
    alert("manageSalesOrderFields");
    var salesOrderId = "";

    // hide all fields
    view.byId("salesOrderLabel").setVisible(false);
    view.byId("salesOrderText").setVisible(false);
    view.byId("triggerSalesOrderLabel").setVisible(false);
    view.byId("triggerSalesOrderButton").setVisible(false);

    $.getJSON("/sap/opu/odata/sap/zlord_my_quotation_srv/QuotationHeaderSet('" + quotationId + "')",
        function(data) {
            alert("enterHere");
            salesOrderId = data.d.SalesOrder;
            alert(salesOrderId);
            if (salesOrderId !== "" ){
                view.byId("salesOrderLabel").setVisible(true);
                view.byId("salesOrderText").setVisible(true);
            }else{
                view.byId("triggerSalesOrderLabel").setVisible(true);
                view.byId("triggerSalesOrderButton").setVisible(true);
                view.byId("triggerSalesOrderButton").detachPress(sap.ui.controller("...").createSalesOrder);
                view.byId("triggerSalesOrderButton").attachPress(sap.ui.controller("...").createSalesOrder);
            }
        });
},
createSalesOrder: function () {
    var createSalesOrderDialog = new sap.m.Dialog("createSoDialog", {
        title: "Create Sales Order",
        icon: "sap-icon://sales-order",
        content: [
            new sap.ui.core.HTML({content:"<p style='margin:0;padding: 16px;'>Do want to create a sales order?</p>"})
        ],
        buttons:[
            new sap.m.Button({
                text: "Yes",
                press : function() {
                    var oModel = new sap.ui.model.odata.ODataModel('/sap/opu/odata/sap/zlord_my_quotation_srv/');
                    var oParameter = {
                        "QuotationID" : quotationId
                    };
                    oModel.callFunction('/CreateSalesOrder', 'GET', oParameter, 'null',
                        function (oData, oResponse) {
                            var responseMessage = JSON.stringify(oResponse.body);
                            var responseMessageStart = responseMessage.search('<d:Message>');
                            var responseMessageEnd = responseMessage.search('</d:Message>');
                            responseMessage = responseMessage.substring(responseMessageStart + 11, responseMessageEnd);

                            //show MessageToast
                            sap.m.MessageToast.show(responseMessage);
                            view.byId("triggerSalesOrderLabel").setVisible(false);
                            view.byId("triggerSalesOrderButton").setVisible(false);

                            console.log(responseMessage);
                        },
                        function (oError) {
                            sap.m.MessageToast.show('Error - see log');
                            console.log(oError);
                        }
                    );
                    createSalesOrderDialog.close();
                    createSalesOrderDialog.destroy();
                }
            }),
            new sap.m.Button({
                text: "No",
                press : function() {
                    createSalesOrderDialog.close();
                    createSalesOrderDialog.destroy();
                }
            })
        ]
    });
    createSalesOrderDialog.open();
}

      

We haven't edited anything on the next view controller (CreateQuotations.view.controller.js) as we don't need to show the SO number in this view.

+3


source to share


1 answer


The error is due to this line:

salesOrderId = data.d.SalesOrder;

      

How to fix?

Step 1: first check the results in the network tab for the call:

/sap/opu/odata/sap/zlord_my_quotation_srv/QuotationHeaderSet('quotationIdId');

      

Example:



enter image description here

Step 2. Check the hierarchy of results. How?

console.log(data); //in success call

Step 3: Then rearrange your statement to something like this

salesOrderId = data.d.results[0].SalesOrder;

Hope this helps!

0


source







All Articles