0

我正在开发一个使用 SAP OData 服务 CRM_OPPORTUNITY 的 SAPUI5 应用程序。

在我的程序中,我正在尝试对 OData 服务执行以下请求

getMax: function(oEvent) {      
    var oModel = this.getOpportunityODataService();
    var maxHitData;

    oModel
        .read(
            "RetrieveMaxHit",
            null,
            null,
            false,
            function(oData, resp) {
                maxHitData = {
                    RetrieveMaxHit: resp.data.results[0]
                };

            });
   return maxHitData;
},

getOpportunityODataService : function(){        
    var oModel = new sap.ui.model.odata.ODataModel("/sap/opu/odata/sap/CRM_OPPORTUNITY/");
    oModel.forceNoCache(true);      
    return oModel;
},

此请求的响应不包含任何响应数据。resp.data 未定义。

如果我在浏览器中发出请求,我会收到以下响应

<d:RetrieveMaxHit xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="CRM_OPPORTUNITY.MaxHit">
<d:MaxHitNumber>100</d:MaxHitNumber>
<d:ActionResult>X</d:ActionResult>
</d:RetrieveMaxHit>

我希望有人能帮我理解为什么 resp.data 不包含从服务返回的数据?我错过了什么?

4

2 回答 2

0

如果你不使用

oModel
        .read(
            "**/**RetrieveMaxHit",

您是否还使用 /IWFND/TRACES 检查您的网关系统是否调用了正确的服务并且确实返回了正确的反馈?

于 2015-10-01T07:45:18.793 回答
-2

问题是 oDatamodel 必须在 JSON 设置为 TRUE 的情况下进行实例化。显然,调用 FunctionImport 时返回的 XML 响应无法正确映射到 response.Data。

var parameters = {
    json: true
};

var oModel = new sap.ui.model.odata.ODataModel("http://XXXXX:XXXX/sap/opu/odata/sap/CRM_OPPORTUNITY/", parameters);
于 2015-10-02T12:31:13.690 回答