OData V4,设置http状态代码和响应正文

2020-08-21 19:59发布

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

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


嗨,

我们创建了Odata V4服务(POST),以便在我们的SAP系统中创建一些数据。 如果源系统ID已有数据,则应拒绝该数据,我们希望通过响应正文返回现有数据。

为此,我们要设置304的Http状态代码(未修改)。 我们设法通过使用此状态代码引发异常(/iwbep/cx_gateway的子类)来设置http状态代码。 尽管如此,尽管我们在方法/iwbep/if_v4_dp_basic〜create_entity的参数io_response的busi数据中输入了一些数据,但是在这种情况下,响应主体为空。

还有其他设置http代码并在响应正文中输入业务数据的可能性吗?

感谢您的帮助

西尔维亚

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

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


嗨,

我们创建了Odata V4服务(POST),以便在我们的SAP系统中创建一些数据。 如果源系统ID已有数据,则应拒绝该数据,我们希望通过响应正文返回现有数据。

为此,我们要设置304的Http状态代码(未修改)。 我们设法通过使用此状态代码引发异常(/iwbep/cx_gateway的子类)来设置http状态代码。 尽管如此,尽管我们在方法/iwbep/if_v4_dp_basic〜create_entity的参数io_response的busi数据中输入了一些数据,但是在这种情况下,响应主体为空。

还有其他设置http代码并在响应正文中输入业务数据的可能性吗?

感谢您的帮助

西尔维亚

付费偷看设置
发送
3条回答
Aaron 3364
1楼-- · 2020-08-21 20:28

Silvia,您好

对不起,您还没有再回答您的问题。

它不小心引起​​了我的注意。

我们看到以下三个选项:

  1. 始终执行GET。 并且仅在未返回任何数据的情况下执行POST
  2. 将GET + POST放入$ batch请求中(如上所述),并使用HTTP标头首选项,并将其值设置为odata.continue-on-error
  3. 创建一个操作,该操作接收数据并返回创建的实体,如果该实体已经存在,则返回现有数据。

最诚挚的问候,

安德烈

Alawn_Xu
2楼-- · 2020-08-21 20:21

安德烈,

感谢您的回复。 在标题中设置一些消息的选项可以帮助我们。 不幸的是,我没有在/IWBEP/IF_V4_RESP_ADV_ACTION接口中找到类/iwbep/cl_v4_tea_tech_data_02,也没有找到方法set_header_messages。

此方法从哪个版本开始可用? 我们目前使用的是SAP_GWFND -750。

此致

Silvia

浮生未央
3楼-- · 2020-08-21 20:24

我想到的一个选择是,您可以使用接口/IWBEP/IF_V4_RESP_ADV_ACTION

set_header_messages/iwbep/cx_gateway

文档的方法set_header_messages

将sap-messages设置为响应头(覆盖现有)

说明

最多将20 sap-messages设置为响应头。 如果it_message中包含超过20个树液消息,则将引发异常。 如果此方法被多次调用,则先前设置的sap-messages将被覆盖。

另请参见类/iwbep/cl_v4_tea_tech_data_02中的et_ac_message_return方法。

"没有目标的标头消息

 在lt_message分配上附加初始行。

  -class ='SY'。

  -number ='002'。

 -严重性= 1。

  -variable_1 ='没有目标的消息'## no_text。

  -target_value_control =/iwbep/if_v4_runtime_types => gcs_value_control-indicate_omit。

 "不要序列化目标

 io_response-> set_header_messages(it_message = lt_message)。

这会导致http标头

sap-messages

[{" code":" SY/002"," message":"无目标的消息"," numericSeverity":1},{" code":" SY/002"," message":"针对 响应本身"," numericSeverity":1," target":""},{" code":" SY/002"," message":"用于原始参数收集条目的消息"," numericSeverity":1," target" ":" $ Parameter/PrimParameter/1"},{"代码":" SY/002","消息":"复杂集合参数的消息"," numericSeverity":1,"目标":" $ Parameter/ComplexCollParameter "},{" code":" SY/002"," message":"复杂集合参数1的消息"," numericSeverity":1," target":" $ Parameter/ComplexCollParameter/1"},{" code ":" SY/002","消息":"关于复杂coll参数1 +属性的消息"," numericSeverity":1," target":" $ Parameter/ComplexCollParameter/1/SecondProperty"},{"代码": " SY/002","消息":"关于复杂参数属性的消息"," numericSeverity":1," target":" $ Param eter/ComplexParameter/SecondProperty"}]

一周热门 更多>