OData 响应不包含数据

OData response does not contain data

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

在我的程序中,我尝试对 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不包含从服务返回的数据?我错过了什么?

你不应该使用

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

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

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