基本(甚至可能是愚蠢的)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条回答
半个程序猿
2020-09-11 01:09

嗨耶琳娜,

这不是您可以标记为答案的答案,但是这里有一些信息希望对您有所帮助:

首先要了解OData Service的使用者是谁,并定义您的实体和交互 是必须的。 例如 如果仅搜索PO,则无需实现所有方法。 例如 假设您要为自由式Fiori UI提供OData服务,并且该UI需要在PO上进行搜索,则可以有一个名为PurchaseOrders的实体集,以及一个名为PurchaseOrder的实体。 现在,如果您要按采购订单编号,名称,供应商等进行搜索; 您可以使UI开发人员真的很容易,并告诉他们只使用Name字段,而在后端,无论如何(例如,这是UI开发人员之间的协议),您都可以使用该字段来搜索PO编号,名称和供应商 并且后端开发人员记住UI部分是最难解决的部分。)

完成此操作后,这将需要您仅实现POsGetEntitySet方法-可能不需要其他方法 。 另外,您可以决定如何在此例程中构建搜索。 例如 您可以使用选择选项样式,也可以将字符串切成小块,以便使其像Google一样进行搜索。 例如,搜索名为* P Jel *的雇员实际上应该是在* P *和* Jel *上进行搜索,因此顺序无关紧要。

注意-还有一个查询选项可以

TL;为此,DR:根据用户界面要求设计API,以使UI开发人员的生活尽可能轻松 可能。 重用不是网关服务的重点。 即使只是对现有Fiori应用程序进行扩展,这也适用。

当然-当您开始谈论CDS时,所有这些都消失了,所以我假设您正在谈论SEGW定义的OData服务

对于"必需",在上面的示例中,如果未提供搜索参数,则可以不返回任何实体。 有时候,如果没有过滤器就按顺序获取前20个实体花费的时间太长,这是有道理的。

我只能说的规则是,除非创建/更新/删除更改类型,否则您仅应抛出业务异常

最后的建议是,(当然,如果允许的话)您的下一条消息是,在您的问题中添加更具体的示例和细节,因为当今有很多不同的编程模型,并且

希望有帮助,

Matt

ps。 确保您了解一些进行分页,过滤和排序的实用程序方法-当您可以获取所有实体时,这是非常有用的,因为没有太多,然后使用它们为您完成繁重的工作。

一周热门 更多>