Fiori批准采购订单-自定义错误消息

2020-09-11 03:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好, 我们正尝试向OD...

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

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


你好,

我们正尝试向OData服务添加一些与Fiori批准采购订单应用程序相关的其他检查。 如果检查失败,则应该在前端显示错误消息(或至少是HTTP响应的一部分)。

BADI:GBAPP_APV_PO_RDP
接口:IF_GBAPP_EX_APV_PO_RDP
方法:CHANGE_SET_DECISION

方法CHANGE_SET_DECISION可能会引发/IWBEP/CX_MGW_BUSI_EXCEPTION类型的异常。

基本上,这就是我想要做的:

 CLASS/sie/ad_zcm_cl_fio_apv_check定义公共创建公共。
   公共部分。
     接口if_badi_interface。
     接口if_gbapp_ex_apv_po_rdp。
 ENDCLASS。
 CLASS/sie/ad_zcm_cl_fio_apv_check实施。
   方法if_gbapp_ex_apv_po_rdp〜change_set_decision。
 *一些检查
     引发例外类型/iwbep/cx_mgw_busi_exception
       出口
         textid =
                  /iwbep/cx_mgw_busi_exception => business_error_unlimited
         message_unlimited ='一些错误消息'。
   终结法。
 ENDCLASS。
 

不幸的是,该消息不是HTTP响应的一部分。 消息类别和编号是正确的(business_error_unlimited),但是显示的是占位符'&1',而不是消息字符串。

 {
   "错误":{
     "代码":" SY/530",
     "信息": {
       " lang":" en",
       " value":"引发了异常。"
     },
     "内部错误":{
       "应用程序":{
         " component_id":" MM-PUR",
         " service_namespace":"/img/SAP/",
         " service_id":" GBAPP_POAPPROVAL",
         " service_version":" 0001"
       },
       (...)
       "错误详情": [
         {
           "代码":"/img/IWBEP/CM_MGW_RT/022",
           " message":"&1",
           " propertyref":"",
           "严重性":"信息",
           " target":""
         },
         {
           " code":"/img/IWBEP/CX_MGW_BUSI_EXCEPTION",
           " message":"引发了异常。",
           " propertyref":"",
           "严重性":"错误",
           " target":""
         }
       ]
     }
   }
 }
 

在类CL_GBAPP_APV_PO_API方法SET_DECISION中捕获了异常。

尝试。
       呼叫BADI lo_ext_badi_rdp-> change_set_decision
        出口
          iv_workitem_id =  -workitem_id
          iv_pc_number =  -po_number
          iv_release_code = lv_release_code
          iv_approval_text = lv_approval_text
          iv_rejection_text = lv_rejection_text
          iv_approval_string =  -approval_text
          iv_rejection_string =  -rejection_text
          iv_decision = -决策
        输入
          ev_decision_processed = lv_decision_processed
          es_action_successful = lv_action_successful
          ev_skip_wait = lv_skip_wait
          ev_wait_loops = lv_wait_loops。


     捕捉/iwbep/cx_mgw_busi_exception INTO lcx_badi。
       " get_text()返回正确的消息,但lv_msg是单个字符
       lv_msg = lcx_badi-> get_text()。
       "该方法具有lv_text_msg参数,但此处未使用
       lo_cmn_api-> raise_exception_iwbep_business(iv_leading_msg = lv_msg)。ENDTRY。

所以问题是:
使用/IWBEP/CX_MGW_BUSI_EXCEPTION异常类来检索自定义错误消息的正确方法是什么?