如何在Odata中捕获BAPIRET2(异常处理)错误消息?

2020-09-08 10:17发布

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

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


大家好,

我正在使用Data Provider Class和Model Provider Class创建Odata Services。 但是我不知道如何捕获BAPIRET2错误消息并将其传递给Rest Client。

Eg:

IF(ls_return-type ='E')。

"引发异常,如何在 休息客户端并将其保存到/n/IWFND/ERROR_LOG?

其他。

copy_data_to_ref(

导出

is_data = ls_issues

更改

cr_data = er_entity

)。

ENDIF。

感谢

Arun Chembra

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

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


大家好,

我正在使用Data Provider Class和Model Provider Class创建Odata Services。 但是我不知道如何捕获BAPIRET2错误消息并将其传递给Rest Client。

Eg:

IF(ls_return-type ='E')。

"引发异常,如何在 休息客户端并将其保存到/n/IWFND/ERROR_LOG?

其他。

copy_data_to_ref(

导出

is_data = ls_issues

更改

cr_data = er_entity

)。

ENDIF。

感谢

Arun Chembra

付费偷看设置
发送
4条回答
落灬小鱼
1楼 · 2020-09-08 10:56.采纳回答

您好,阿伦

请尝试以下代码:

数据lo_logger类型参考/iwbep/cl_cos_logger。

数据lo_message_container类型参考/iwbep/if_message_container。

数据lt_bapi_ret类型bapiret2_t。
数据ls_return类型BAPIRET2 lt_bapi_ret。

数据lv_text类型bapi_msg。

数据lv_error_category类型/iwbep/if_message_container => ty_error_category。

lo_logger =/iwbep/if_mgw_conv_srv_runtime〜get_logger()。

lo_message_container =/iwbep/if_mgw_conv_srv_runtime〜get_message_container()。

附加ls_return到lt_bapi_ret。

lv_error_category =/iwbep/if_message_container => gcs_error_category处理。

"保存后端返回的日志
io_message_container-> add_messages_from_bapi(
导出
it_bapi_messages = lt_bapi_ret
iv_error_category = lv_error_category
iv_entity_type = key_tab_)

消息ID ls_return-id类型ls_return-type NUMBER ls_return-number INTO lv_text。

"向消费者提出商业例外

引发异常类型/IWBEP/CX_MGW_BUSI_EXCEPTION

导出
textid =/iwbep/cx_mgw_busi_exception => business_error
message = lv_text
message_container = io_message_container。

或者,如果您是通过Service Builder工具生成的服务

您只需在DPC生成的方法代码中调用以下方法:

*呼叫RFC呼叫异常处理
me->/iwbep/if_sb_dpc_comm_services〜rfc_save_log(
导出
is_return = return
iv_entity_type = iv_entity_name
it_key_tab = it_key_tab)。

谢谢

Alex

Tong__Ming
2楼-- · 2020-09-08 10:56

嗨,

可能返回而不会抛出异常消息?

最诚挚的问候,

SKY徐
3楼-- · 2020-09-08 11:03

嗨,阿伦,

请检查以下链接以登录SAP NetWeaver Gateway:

http://help.sap.com/saphelp_gateway20sp06/ helpdata/zh-CN/a7/e34826e0f54073aa0d5b298e470041/frameset.htm

还请检查本文档中的所有子节点,例如记录BAPI返回等。

代码段可能会有所帮助:

http://help.sap.com/saphelp_gateway20sp06/ helpdata/zh-CN/99/29f0c9bfd04ea4bb60b084fd45d624/frameset.htm

最诚挚的问候,

Aakash

天桥码农
4楼-- · 2020-09-08 11:01

感谢Alex,Aakash和Arun。

链接现已更新:

登录SAP Gateway

记录BAPI返回

一周热门 更多>