BDC/BAPI报错消息转换(函数)

导语:在用BDC或者BAPI的时候,RETURN的消息是个内表,每次都要拼接成消息号,比较麻烦,所以写一个通用函数来拼接一下,这样很多地方都可以用了。

函数名称:

字段描述属性
函数名称ZFM_YH_SE91BDC/BAPI报错消息转换
函数入参IS_MESSAGE_BDC邮件的主题选填
IS_MESSAGE_BAPI附件名称选填
函数出参MESSAGE返回消息

函数代码

FUNCTION zfm_yh_se91.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IS_MESSAGE_BDC) TYPE  BDCMSGCOLL OPTIONAL
*"     VALUE(IS_MESSAGE_BAPI) TYPE  BAPIRET2 OPTIONAL
*"  EXPORTING
*"     VALUE(MESSAGE)
*"----------------------------------------------------------------------

  DATA : lv_tabix TYPE i.
  DATA : lv_field TYPE char10.
  DATA : lv_message TYPE char20.
  DATA : BEGIN OF lw_text,
           text TYPE t100-text,
         END OF lw_text.
  DATA : lt_text LIKE TABLE OF lw_text.

  IF is_message_bdc IS NOT INITIAL.

    SELECT SINGLE * FROM t100 INTO @DATA(lw_t100) WHERE arbgb = @is_message_bdc-msgid AND msgnr = @is_message_bdc-msgnr AND sprsl = '1'.
    SPLIT lw_t100-text AT '&' INTO TABLE lt_text.
    CLEAR lv_tabix.
    LOOP AT lt_text INTO lw_text.
      lv_tabix = lv_tabix + 1.
      lv_field = 'MSGV' && lv_tabix.
      ASSIGN COMPONENT lv_field OF STRUCTURE is_message_bdc TO FIELD-SYMBOL(<fs>).
      IF sy-subrc = 0.
        CONCATENATE lw_text <fs> INTO lv_message.
      ENDIF.
      IF message IS INITIAL.
        message = lv_message.
      ELSE.
        CONCATENATE message lv_message INTO message.
      ENDIF.
    ENDLOOP.

  ELSEIF is_message_bapi IS NOT INITIAL.

    SELECT SINGLE * FROM t100 INTO @lw_t100 WHERE arbgb = @is_message_bapi-id AND msgnr = @is_message_bapi-NUMBER AND sprsl = '1'.
    SPLIT lw_t100-text AT '&' INTO TABLE lt_text.
    CLEAR lv_tabix.
    LOOP AT lt_text INTO lw_text.
      lv_tabix = lv_tabix + 1.
      lv_field = 'MESSAGE_V' && lv_tabix.
      ASSIGN COMPONENT lv_field OF STRUCTURE is_message_bapi TO <fs>.
      IF sy-subrc = 0.
        CONCATENATE lw_text <fs> INTO lv_message.
      ENDIF.
      IF message IS INITIAL.
        message = lv_message.
      ELSE.
        CONCATENATE message lv_message INTO message.
      ENDIF.
    ENDLOOP.

  ENDIF.

ENDFUNCTION.

如果是BDC的消息,就用【IS_MESSAGE_BDC】入参。
如果是BAPI的消息,就用【IS_MESSAGE_BAPI】入参。

作者:小飞猪猪猪猪猪猪猪–CSDN

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值