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

2020-09-11 00:24发布

         点击此处--->   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 ),但它们与非常具体的情况有关,我正在寻找一般指导。

谢谢!

         点击此处--->   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条回答
My梦
1楼 · 2020-09-11 00:55.采纳回答

嗨耶琳娜,

1。 如果只想接受一个参数,则必须在segw/项目中定义一个键,然后重新定义get_entity方法。 这将仅导入实体集的一行,但是您也可以只返回一行。 如果您想要更多,则需要使用$ filter并开发自己的支票。 在那里,您需要重新定义get_entityset。

2。

3。也可以通过重新定义来完成此操作,只需将您的内容放入其中,并在异常情况下抛出异常。

3。 取决于您要退货的内容。 我同时使用,视情况而定。 现在,我为网上商店开发了一些休息服务,在这里,我使用了内部使用的bapi的返回结构。 在开发一些服务来更新表之前,在这种情况下,我只是使用了异常。 因此,实际上取决于行的另一端。

如果您想了解有关该主题的更多信息,我还可以在github上分享一些代码。

〜Florian

打个大熊猫
2楼-- · 2020-09-11 00:56

谢谢,马特! 所有公平点。 我将向该问题添加更多详细信息。 在我们的情况下,没有UI,我们只需要创建一些向我们的业务合作伙伴(例如,分包商)公开的API,以便它们可以与我们的SAP系统进行交互。 我们不再需要文件接口,IDoc在这里不合适,因此可以选择使用网关服务。

我完全同意您的看法,了解消费者的实际需求很重要,但是 由于各种非技术性的原因,我们正在积极地创建这些服务。 即 我们还不确定如何以及由谁来使用它们,但是我们需要将其提供。

昵称总是被占用
3楼-- · 2020-09-11 00:54

人们已经给了您很多有用的输入。

现在,因为我在那里,所以有些自私 我的博客的自我推广是四年前我接触UI5/OData时写的。

我发现了更多的东西,并且在过去的几个月中发展了很多,以构建代码,但是也许可以 找到一些提示。

CPLASF-自律
4楼-- · 2020-09-11 00:53

感谢您的回复,安德烈! 我用Google搜索"函数导入",发现此博客,似乎远远超出了我们的需要,因此在这种特殊的简单情况下,我只遵循弗洛里安的建议。

我确实有这本书,但最多 最新版本,但旧版本完全适合我们的版本。 这是一本好书,但是信息太多了,我需要"扎实工作",因此不幸的是,这并没有为学术文献留下太多时间。

顺便说一句,由于某种原因,在线SAP Press Developer订阅中仅包含旧书版本。 阅读您的回复后,我试图将新版本添加到我的在线图书馆,但找不到它。

亦是此间程序员
5楼-- · 2020-09-11 01:13

我个人没有任何关于#1-2的经验,但是对于#3 我已经成功完成了与您链接的帖子类似的操作-使用/IWBEP/CX_MGW_BUSI_EXCEPTION。 但是我要补充一点,就是我正在制作原型的用例在响应中不需要BAPIRET_T(1:n)消息,因此它可能与您需要提供解决方案的内容不匹配。

PS -距离我记得的#1-2远,您可能不得不研究覆盖默认行为,看是否能满足您的需求。


问候,

Ryan Crosby

哎,真难
6楼-- · 2020-09-11 01:00

谢谢! 有趣的是,实际上我在较旧的博客中发现了更多价值,因为我们的版本也很旧。 阅读最新的博客可能会令人失望,因为我们还没有这些功能。

渐行渐远_HoldOn
7楼-- · 2020-09-11 00:54

Hmmm,这是该异常类的帮助的屏幕截图,它专门说明了 返回业务异常,最重要的是提供有关如何从BAPI添加消息的注释。 猜猜我对这里的用法会有不同的看法,因为当OData服务出现问题时,类型不是我要向用户提供上下文的内容-在这种情况下,消息会给出答案。

一周热门 更多>