点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我们已经创建了一个自定义OData服务,该服务可以正常运行。 但是,当我们尝试在此OData上使用read方法时,它并没有获取任何数据。
在调试中,我们没有收到任何错误。 而且,它甚至没有触发read内部的成功/错误后备方法。
我们正在使用的语法:
var oModel = new sap.ui.model.odata.v2.ODataModel(" https://
oModel.attachMetadataLoaded(null,function(){var oMetadata = oModel.getServiceMetadata(); console.log(oMetadata);
var value = oModel.getProperty("/img/ZEN_ST_WERKSSet('001')/Werks"); console.log(value);
oModel.read("/img/ZEN_ST_WERKSSet('001')",成功:function(oData,oResponse){//sap.m.MessageBox.show(oData); alert("成功读取");},_OnError :function(oError){alert("读取失败");}); },null);
我们尝试了getData和getProperty,但返回未定义。
请建议我们是否缺少任何东西。
我们甚至尝试过Northwind服务。 请找到相同的屏幕截图。
(13.7 kB)
为了简单起见,只需部署到服务器上运行
您要调用的服务来自同一服务器?
您好,
我找到了解决方案。
v2.ODataModel通过两种不同的方式支持批处理($ batch):
因此,在我们的情况下,对于只读调用,UI5试图将其作为$ batch调用传递,因此失败了。
为了使代码正常工作,我们对读取的代码进行了更改:
var sUrl =" https://<主机/端口>/sap/opu/odata/sap/ZP_PR_APPROVAL_SRV/";
var filter = new sap.ui.model.Filter(" Werks",sap.ui.model.FilterOperator.EQ," 001");
var oDataModel = new sap.ui.model.odata.v2.ODataModel(sUrl,{json:true,loadMetadataAsync:true});
oDataModel.setUseBatch(false); //此行将有助于避免将请求批量调用
var oModel = new sap.ui.model.json.JSONModel();
oDataModel.read("/img/ZEN_ST_WERKSSet",{
过滤器:[filter],
成功:函数(oData,响应){
var oResults = oData.results;
console.log(oResults);
}
});
是的,它们来自同一服务器
实际的代码已经部署在服务器上,但是我们仍然无法从服务中读取数据。 p>
一周热门 更多>