点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我已经使用sapui5和cordova kapsel插件构建了一个本地混合应用程序。 我在发布创建操作时实现了深层插入。
我正在使用标题+订单项,然后发布它。
在联机模式下可以正常工作,但在脱机模式下会出现smp错误:
[-10213]不支持对实体集的深层插入
我阅读了离线模式下不支持深度插入的内容。
替代方法是,除了深度插入外,还有其他任何方式可以在脱机模式下进行post(create)操作。
需要进行哪些更改。 我已经很努力了。 我该如何发布sapui5和odata/abap所需的更改
请有人提出建议
Akos Grabecz :所以我的方法是删除深层插入并 批量使用Content ID刷新。 更改将适用于ui5代码和服务器端的abap。
现在,我正在使用.create操作,在此操作中,我在标头+订单项中传递了有效负载,并完成了发布。 现在我必须使用批处理和Content ID引用。
嗨Arka,
深层插入有某些限制,可以在此处阅读:深插入限制
除此之外,您可以批量使用Content-Id引用。 您可以使用在线图书馆的方法:
添加标题" Content-ID"的位置
这是关于它的 OData.org 文档(搜索:2.2.1。引用请求 在变更集中):批处理(OData版本2.0)
这些都是关于它的用法的出色SAP博客:
简介:SAP网关中具有Content ID的OData $ batch处理
使用Content- 混合应用程序中的变更集中(批处理请求)中的ID引用
最后但并非最不重要的一点是,应用程序配置文件中可能需要一些服务器端更改(搜索content_id_header_location):应用程序配置文件
如果您还有其他问题,请告诉我。 此致,
Ákos
嗨Arka,
对于sap建议的方法有更好的解决方法。 在我的上一个项目中,它工作得很好,该项目包含许多多层深度插入实体。 在此解决方案中,您可以保留深层模型,而无需将其拆分为平面实体。 这是一般的想法:
例如,您在GW项目中有多个DeepInsert实体。 一个叫做ProductSet。
您定义一个实体 DeepInsertInput ,它包含一个名称和 body 属性(字符串)。 在用户界面中,您对deepinsert json进行编码(例如base64),然后将其发布到该实体集中。 进行编码的原因是可以将json有效负载打包到另一个json中。 有效负载如下:
在网关的create()方法中,对正文进行解码并获取json字符串。 并使用ABAP中的HTTP Post请求将其作为json有效负载发送给原始实体。 在此示例中,它将是:
这意味着,您首先使用此 DeepInsertInput 实体只是为了转发深度插入有效负载。 然后,GW将其发送给自己。
我希望我已经清楚地解释了。
可能是下一次,我应该写一篇有关如何详细实现它的博客,并分享一些代码。
好,我正在尝试这样做。
一周热门 更多>