点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我们正在构建具有离线功能的SAP Hybrid应用。 我们正在调用oData服务,该应用应为此应用创建离线存储。 我们以以下方式定义了定义请求:
openStore:function(){ console.log("在openStore"); jQuery.sap.require(" sap.ui.thirdparty.datajs"); //使用SAPUI5和Kapsel离线商店时需要 var properties = { " name":" store_PurchaseOrder", "主机":sap.hybrid.kapsel.appContext.registrationContext.serverHost, "端口":sap.hybrid.kapsel.appContext.registrationContext.serverPort, " https":sap.hybrid.kapsel.appContext.registrationContext.https, " serviceRoot":fiori_client_appConfig.appID +" _ECConPremise/sap/opu/odata/sap/ZGOODSRECEIPT_OFFLINE_SRV/", " definingRequests":{ " PurchaseOrderItemSet":"/img/PurchaseOrderItemSet?$ top = 50" } }; store = sap.OData.createOfflineStore(properties); var openStoreSuccessCallback = function(){ console.log("在openStoreSuccessCallback"); sap.OData.applyHttpClient(); //现在可以针对datajs进行离线OData调用。 sap.hybrid.startApp(); } var openStoreErrorCallback = function(error){ console.log("在openStoreErrorCallback"); alert("发生错误" + JSON.stringify(错误)); } store.open(openStoreSuccessCallback,openStoreErrorCallback); },
在日志中,我们可以看到正在创建商店并正确打开了商店。
我们正在通过以下服务电话读取数据
var oDataModel = sap.ui.model.odata.v2.ODataModel( "/img/sap/opu/odata/sap/ZGOODSRECEIPT_OFFLINE_SRV",true); var mParameters = { 成功:函数(oData,oResponse){ 调试器; console.log(JSON.stringify(oData)); } .bind(this), 错误:函数(oError){ } .bind(this) }; oDataModel.read("/img/PurchaseOrderItemSet",mParameters);
当我们使用Webide Preview运行应用程序时,我们会收到odata服务返回的多条记录,但是当我们在设备上以混合应用程序(在执行Build Packaged App之后)运行该应用程序时,我们只会得到 服务。 我们在后端设置了外部断点,并注意到服务在输出中返回了多条记录,但在应用程序中,我们仅获得了一条记录(结果集的最后一条记录)。 任何人都可以建议为什么在将应用程序作为混合应用程序运行时,为什么oData会有不同的响应。
嗨,
没有关于您的数据集和数据结构的更多信息:您是否可能未在SEGW中定义属性键字段? 在将自己预订到数据库中时,每行可能会覆盖之前的那一行,因为它具有相同的密钥……这只是我的第一个想法,因为代码本身看起来确实不错。
在相同情况下,我得到了任何解决方案。
谢谢
问候
Jai
嗨,Oliver,
感谢您的回复。
我们的odata输出类似于:
< p>PO号和物料号的组合是组合主键。
在我们的应用程序中 我们正在尝试为采购订单进行GR发布。 因此,在过帐采购订单时,将生成物料凭证。 因此,我们在发布时使用以下代码进行创建操作:
当通过混合应用执行上述代码时,出现以下错误:
{"错误":{"代码":-10103,"消息":{" lang":" zh-CN","值":" [-10103] 新实体的指定键是 现有实体。"}}}
为解决此问题,在Odata输出结构中,我们添加了一个新的键字段。在新的键字段中,我们将从UI传递随机编号以使其保持不变
当前,在odata读取操作过程中,这个新的关键字段没有得到任何值。是否可能引起问题?
请告知我们的方法是否需要一些方法 纠正。
一周热门 更多>