OData响应不包含数据

时间:2015-10-01 06:17:49

标签: odata sapui5

我正在开发一个使用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不包含从服务返回的数据?我错过了什么?

2 个答案:

答案 0 :(得分:0)

你不应该使用

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

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

答案 1 :(得分:0)

问题是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);