扩展FIORI应用程序的无效属性

时间:2015-07-09 13:07:56

标签: odata sap-fiori

我们正在实施扩展的My Quotations Fiori应用程序。基本上我们在UI中添加了一个新的销售订单。该字段从后端获取数据,因此我们还扩展了我们的OData服务。在第一个视图中,我们可以成功调用数据。但是,只要我们通过单击“编辑”按钮导航到下一个视图,我们就会收到此错误

属性'SalesOrder'无效。选择“刷新”以更新定价信息。

任何人都知道如何解决这个问题?

这是我们的S3视图控制器的自定义代码。我们使用WEB IDE创建扩展名btw。第二个功能是在报价没有关联的SO时创建销售订单。

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();
}

我们没有在下一个视图控制器(CreateQuotations.view.controller.js)上编辑任何内容,因为我们无法在该视图上显示SO编号。

1 个答案:

答案 0 :(得分:0)

错误是因为这一行:

salesOrderId = data.d.SalesOrder;

如何解决?

步骤1:首先在网络标签中检查呼叫结果:

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

样品:

enter image description here

第2步:检查结果层次结构。怎么样?

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

步骤3:然后将您的陈述重组为此类

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

希望这有帮助!