abap 接口调用 SAP TM BOPF 标准ACTION

该博客展示了如何在SAP TM系统中利用BOPF框架来调用标准接口,例如取消FB。通过查找并执行特定的action(/scmtms/if_tor_c=>sc_action-root-cancel),结合/BOBF/IF_TRA_TRANSACTION_MGR的save方法,可以实现类似GUI界面的后台操作。这个例子说明了如何通过组合多个action来完成更复杂的业务流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

项目场景:

问题描述

总结:


项目场景:

 SAP TM 使用BOPF框架实现,定义了很多标准接口,如果我们提供外部接口,通过外围系统调用标准的TM功能,我们只需要找到SAP TM里面的action,就可以简单的实现功能。


问题描述

        比如我们外围系统要调用SAP接口取消FB,我们通过前台找到取消按钮对应的action

action:/scmtms/if_tor_c=>sc_action-root-cancel

/BOBF/IF_TRA_TRANSACTION_MGR 的save 方法保存全部缓存的数据

 

    DATA: lv_tor_id TYPE /scmtms/tor_id.

    DATA:
      lv_act_key       TYPE /bobf/act_key,
      lv_button_action TYPE string,
      lv_return        TYPE string,
      lt_failed_key    TYPE /bobf/t_frw_key,
      lt_keys          TYPE /bobf/t_frw_key,
      ls_key           TYPE /bobf/s_frw_key,
      lr_srvmgr        TYPE REF TO /bobf/if_tra_service_manager,
      lo_tra           TYPE REF TO /bobf/if_tra_transaction_mgr, " service
      lo_change        TYPE REF TO /bobf/if_tra_change,
      lo_message       TYPE REF TO /bobf/if_frw_message,
      lt_bapi_msg      TYPE bapiret2_tab,
      lx_error         TYPE REF TO /bobf/cx_frw.

    lr_srvmgr = /bobf/cl_tra_serv_mgr_factory=>get_service_manager( /scmtms/if_tor_c=>sc_bo_key  ).

    IF lo_tra IS NOT BOUND .
      lo_tra = /bobf/cl_tra_trans_mgr_factory=>get_transaction_manager( ).
    ENDIF.

    lv_tor_id = iv_fb_id.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = lv_tor_id
      IMPORTING
        output = lv_tor_id.


    SELECT  db_key INTO TABLE lt_keys
      FROM /scmtms/d_torrot
      WHERE tor_id = lv_tor_id.

    IF lt_keys IS INITIAL.
      es_return-error = 'X'.
      es_return-msg = 'FB不存在'.
      RETURN.
    ENDIF.


    lv_act_key = /scmtms/if_tor_c=>sc_action-root-cancel.

* call action 
    CALL METHOD lr_srvmgr->do_action
      EXPORTING
        iv_act_key    = lv_act_key
        it_key        = lt_keys
      IMPORTING
        eo_change     = lo_change
        eo_message    = lo_message
        et_failed_key = lt_failed_key.

    CALL METHOD /scmtms/cl_common_helper=>msg_convert_bopf_2_bapiret2
      EXPORTING
        io_message  = lo_message
      CHANGING
        ct_bapiret2 = lt_bapi_msg.

    DELETE lt_bapi_msg WHERE type NE 'E'.
    IF lt_bapi_msg IS INITIAL.
      DATA : lv_rejected   TYPE boole_d,
             lt_rej_bo_key TYPE /bobf/t_frw_key2.

      CALL METHOD lo_tra->save(
        IMPORTING
          ev_rejected         = lv_rejected
          eo_change           = lo_change
          eo_message          = lo_message
          et_rejecting_bo_key = lt_rej_bo_key ).

      CALL METHOD /scmtms/cl_common_helper=>msg_convert_bopf_2_bapiret2
        EXPORTING
          io_message  = lo_message
        CHANGING
          ct_bapiret2 = lt_bapi_msg.

      DELETE lt_bapi_msg WHERE type NE 'E'.

      IF lv_rejected IS INITIAL.
        es_return-msg = '取消FB成功'.
      ELSE.
        es_return-error = 'X'.
      ENDIF.
    ELSE.
      es_return-error = 'X'.
    ENDIF.

    

总结:

这是一个最简单的例子,我们通过这种方法,实现类型gui界面的bdc功能

可以通过多个操作(action)的组合实现更加复杂的前台操作功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值