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

2020-08-21 19:59发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我们创建了Odata V...

         点击此处--->   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条回答
浮生未央
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"}]

一周热门 更多>