基本(甚至可能是愚蠢的)SAP Gateway OData服务问题

2020-09-11 00:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)某些背景:我们的团队中没有人以前...

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

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


某些背景:我们的团队中没有人以前有过使用Gateway或OData的经验,但是由于项目截止日期迫在眉睫,我们正在努力尽快学习。 我一直在浏览SCN博客(特别感谢作者,非常有帮助),并且到目前为止,在新的" ABAP到未来"一书的帮助下,我已经能够创建一个运行的简单服务。

在这一点上,我有一些一般性的问题,这些问题看似很愚蠢,但是如果是这样的话,我可以采取"您在这里遥不可及"的答案。 如果我正确阅读,我们使用的是EHP6,Gateway 2.0 SP 12。

1。 如果服务只能接受一个值,例如PARAMETER,该怎么办? 我阅读了此博客中介绍了如何实现过滤器并很好地理解它,但从本质上讲,过滤器看起来与选择选项等效。 有没有办法改变它或做一些不同的事情? 还是我们在"参数思维"方式上根本上是错误的?

2。 与p有关。 1-是否可以轻松实现OBLIGATORY之类的东西? 即 该服务需要提供一定的价值,否则它将无法正常工作。

3。 将成功/错误消息返回给服务使用者的良好实践是什么? 在什么情况下服务应该引发异常而不是仅返回错误消息? (我不确定这些选项如何对服务使用者起作用。)返回消息的最佳方法到底是什么? 一些字符串表? BAPIRET2似乎太重了...我发现了一些有关消息和异常的现有问答(附件A ),但它们与非常具体的情况有关,我正在寻找一般指导。

谢谢!

13条回答
小c菟菟
2020-09-11 01:10

对于第1点:

答案取决于您期望参数执行的操作。 如果参数是记录的关键,那么就像@ Florian Henninger 所说的那样 可以使用实体的get_entity方法返回它标识的单个记录。 但是,如果您希望获得多个记录,例如select语句的where条件,则可以继续使用$ filter odata选项,而Get_entitySet将管理过滤器。 (使用通过CDS生成的Odata可以自动处理此问题,而无需您对此进行编码)。

或者,如果您的要求是完全自定义的,则使用导入功能(我认为这里不太合适)。

对于第2点:

除了已经建议的以外,这可能是一个选项。 https://博客。 sap.com/2017/04/06/cds-view-with-input-parameters-consumption-via-odata/

对于第3点:

Bapiret2是必经之路,SAP提供了非常完整的选项来使用使用/IWBEP/CX_MGW_BUSI_EXCEPTION /IWBEP/CX_MGW_TECH_EXCEPTION 例外提供的标准代码来处理这些问题 ,从我的角度来看,技术异常是您不会想到的致命错误(或者本质上是技术错误,例如配置/定制的一部分不可用等。),业务异常是您得到的错误 由于业务场景,例如来自BAPI的回报。

这里是指向完整文档的链接。 https://help.sap.com/viewer/68bf513362174d54b58cddec28794093 /7.4.19/zh-CN/01a226519eff236ee10000000a445394.html

基本上,这会添加所有BAPI错误和用于响应的自定义标头,最重要的是,SAP标准UI5视图可以很好地与此配合使用,并且可以立即使用。 例如: https://sapui5.hana.ondemand.com/#/topic/52824a6c316a413dbd7bd5f29522dce2 a>

我对答复的详细内容不太满意,如果您还有其他问题,请告诉我,我会尽力补充。

希望这会有所帮助。

一周热门 更多>