无法对OData服务执行读取操作

2020-09-08 19:57发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们已经创建了一个自定义OData服务,该服务可以正常运行。 但是,当我们尝试在此OData上使用read方法时,它并没有获取任何数据。

在调试中,我们没有收到任何错误。 而且,它甚至没有触发read内部的成功/错误后备方法。

我们正在使用的语法:

var oModel = new sap.ui.model.odata.v2.ODataModel(" https:///sap/opu/odata/sap/ZP_PR_APPROVAL_SRV/");

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)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们已经创建了一个自定义OData服务,该服务可以正常运行。 但是,当我们尝试在此OData上使用read方法时,它并没有获取任何数据。

在调试中,我们没有收到任何错误。 而且,它甚至没有触发read内部的成功/错误后备方法。

我们正在使用的语法:

var oModel = new sap.ui.model.odata.v2.ODataModel(" https:///sap/opu/odata/sap/ZP_PR_APPROVAL_SRV/");

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)
付费偷看设置
发送
5条回答
小c菟菟
1楼-- · 2020-09-08 20:35

为了简单起见,只需部署到服务器上运行

DafaDDDa
2楼-- · 2020-09-08 20:20

您要调用的服务来自同一服务器?

奄奄一息的小鱼
3楼-- · 2020-09-08 20:37

您好,

我找到了解决方案。

v2.ODataModel通过两种不同的方式支持批处理($ batch):

  • 默认值:线程中的所有请求都被收集并捆绑在批处理请求中,这意味着该请求在当前调用堆栈完成后立即超时发送。 这包括所有手动CRUD请求以及由绑定触发的请求。

因此,在我们的情况下,对于只读调用,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);

}

});

暮风yp
4楼-- · 2020-09-08 20:12

是的,它们来自同一服务器

骆驼绵羊
5楼-- · 2020-09-08 20:28

实际的代码已经部署在服务器上,但是我们仍然无法从服务中读取数据。

一周热门 更多>