如何在OData服务中返回大量消息?

2020-09-25 01:37发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们正在使用OData服务来调用...

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

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


我们正在使用OData服务来调用BAPI_SALESORDER_SIMULATE。 对于非常大的订单(超过1000行),可以在参数表MESSAGETABLE中返回许多消息。 我们想将这些消息返回给服务的使用者/调用者,但是如何处理这么多消息呢?

由于没有UPDATE_DEEP_ENTITY(PUT),我们正在使用CREATE_DEEP_ENTITY(POST)。

我们研究了以下选项:

A)我们在http-header参数sap-messages中返回消息。 这显然无效,因为此参数可以包含的内容显然有限。

B)有人建议使用复杂类型-但显然它与实体(在本例中为SalesOrder)之间存在1:1关系。 这意味着我们最多只能返回一条消息。

C)然后,我们想为消息创建一个单独的实体,并将其返回到响应正文中。 但是看来,不可能返回请求中没有的任何实体。

我对A,B和C的结论有误吗-也许我错过或误解了某些东西吗?

如果我正确地说不能同时使用A,B或C来解决问题,那么该如何解决呢?

我们目前的解决方案/解决方法是,当从BAPI返回100条以上的消息时,我们仅向请求者返回一条消息,即"消息太多。无法显示"(或类似的内容)。

谢谢。

4条回答
追夢秋陽
2020-09-25 02:24

方法C应该作如下修改。

1。 型号如下。 这里有一个三级导航。 虚拟实体到销售订单到消息表。 带下划线的属性表示下面的JSON模型中的关键字段。

 {
 "  DummyKey ":" XXXXXX",
 " SalesOrders":[{
 "  DummyKey ":" XXXXXX",
 "  SalesOrderID ":" 1",
 " Attribute1":" <值1>",
 "消息":[{
 "  DummyKey ":" XXXXXX",
 "  SalesOrderID ":" 1",
 "  MessageId ":" 1",
 " MessageType":" E",
 " MessageText":"这是销售订单1的错误消息"
 },
 {
 "  DummyKey ":" XXXXXX",
 "  SalesOrderID ":" 1",
 "  MessageId ":" 2",
 " MessageType":" E",
 " MessageText":"这是销售订单1的另一条错误消息"
 }
 ]
 }]
 } 

一周热门 更多>