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

2020-09-08 10:17发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我正在使用Data P...

         点击此处--->   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条回答
落灬小鱼
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

一周热门 更多>