RFC调用直接闪退问题

最近和OA做资产报废流程的集成,显示接口调用失败,想着可能是调用过程中程序dump了,但是ST22中又没看到错误消息,按照OA的输入参数debug,发现BAPI_ASSET_RETIREMENT_POST中有个E类型的message导致程序直接中断了,关于A、E类型的消息的可以在隐式异常error_message中进行捕获,关于消息类型的处理可参照:[SAP ABAP开发技术总结]消息处理Messages - 江正军 - 博客园 (cnblogs.com)

    CALL FUNCTION 'BAPI_ASSET_RETIREMENT_POST'
      EXPORTING
        origindocreference = ls_origindocreference
        generalpostingdata = ls_generalpostingdata
        retirementdata     = ls_retirementdata
        accountassignments = ls_accountassignments
        furtherpostingdata = ls_furtherpostingdata
      IMPORTING
        documentreference  = ls_documentreference
        return             = ls_return
      EXCEPTIONS
        error_message      = 1
        OTHERS             = 2.

    IF sy-subrc <> 0.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
        .
      ls_log-msgty = 'E'.
      SELECT SINGLE text INTO ls_log-message FROM t100 WHERE sprsl = sy-langu AND arbgb = sy-msgid AND msgnr = sy-msgno.
    ELSE.
      CASE ls_return-type.
        WHEN 'S' OR 'W'.

          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.

          ls_log-bukrs = ls_return-message_v1.
          ls_log-belnr = ls_return-message_v2.
          ls_log-message = ls_return-message.
          ls_log-msgty = 'S'.
        WHEN 'E' OR 'I' OR 'A'.

          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
            .
          ls_log-message = ls_return-message.
          ls_log-msgty = 'E'.
        WHEN OTHERS.
      ENDCASE.
    ENDIF.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值