ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客

ABAPDEMOCALLTRANSACTION使用


ABAPDEMOCALLTRANSACTION使用

CALL TRANSACTION的用法

首先看下标准语法:

Syntax Forms                                                                                                                                                                           

Simple transaction call 

1. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK [AND SKIP FIRST SCREEN]. 

Transaction call using batch input table 

2. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK 
                      USING bdc_tab { {[MODE mode] [UPDATE upd]} 
                                    |  [OPTIONS FROM opt] } 
                                       [MESSAGES INTO itab].


1. 程序A中调用程序B (Tcode)

CALL TRANSACTION T-CODE [AND SKIP FIRST SCREEN].

其中AND SKIP FIRST SCREEN表示根据输入的参数直接跳过初始屏幕。

ALV双击跳转经常使用, 
比如:双击ALV的 工艺路线组或者计数器,跳转到 CA03显示工艺路线组件分配:



ABAPDEMOCALLTRANSACTION使用

ABAPDEMOCALLTRANSACTION使用

ABAPDEMOCALLTRANSACTION使用

ABAPDEMOCALLTRANSACTION使用

得到各个输入字段的 PARAMETER ID;
 物料参数ID: MAT
 工厂参数ID:WRK
 组参数 ID:   PLN
 关键日期参数 ID :STT
Step2. ALV里增加双击事件:


CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = gcl_alv_grid.
  CALL METHOD gcl_alv_grid->check_changed_data. "触发数据变更
  CASE s_ucomm.
    WHEN '&IC1'.
      CASE re_selfield-fieldname.
          WHEN 'PLNNR' OR 'PLNAL'."判断双击字段名
          READ TABLE gt_alv_dis INTO DATA(ls_alv_dis) INDEX re_selfield-tabindex.
          IF sy-subrc EQ 0.
            SET PARAMETER ID 'MAT' FIELD ls_alv_dis-matnr."物料
            SET PARAMETER ID 'WRK' FIELD ls_alv_dis-werks."工厂
            SET PARAMETER ID 'PLN' FIELD ls_alv_dis-plnnr."组参数
            SET PARAMETER ID 'STT' FIELD sy-datum."关键日志
            CALL TRANSACTION 'CA03' AND SKIP FIRST SCREEN.
          ENDIF.
          WHEN ''.
          WHEN OTHERS.
      ENDCASE.
    WHEN 'CREATE'.
    
    WHEN 'LEAVE' OR 'EXIT' OR 'CANCEL'.
      LEAVE TO SCREEN 0.
    WHEN OTHERS.
  ENDCASE.
ABAPDEMOCALLTRANSACTION使用


2.调用前台事物,做BDC处理


***BDC调用 调用F-47创建预付定金请求
CALL TRANSACTION 'F-47' USING GT_BDCD
                         MODE P_MODE
                       UPDATE 'S'
                 MESSAGE INTO GT_MESSTAB.
实例:使用方法参考系统标准DEMO程序:DEMO_CALL_TRANSACTION_BDC


REPORT demo_call_transaction_bdc.
CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.
CLASS demo IMPLEMENTATION.
  METHOD main.
    DATA class_name TYPE c LENGTH 30 VALUE 'CL_ABAP_BROWSER'.
    DATA bdcdata_tab TYPE TABLE OF bdcdata.
    DATA opt TYPE ctu_params.
    bdcdata_tab = VALUE #(
      ( program  = 'SAPLSEOD' dynpro   = '1000' dynbegin = 'X' )
      ( fnam = 'BDC_CURSOR'       fval = 'SEOCLASS-CLSNAME' )
      ( fnam = 'SEOCLASS-CLSNAME' fval = class_name )
      ( fnam = 'BDC_OKCODE'       fval = '=WB_DISPLAY' ) ).
    opt-dismode = 'E'.
    opt-defsize = 'X'.
    TRY.
        CALL TRANSACTION 'SE24' WITH AUTHORITY-CHECK
                                USING bdcdata_tab OPTIONS FROM opt.
      CATCH cx_sy_authorization_error ##NO_HANDLER.
    ENDTRY.
  ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
  demo=>main( ).

3.调用事物前的权限检查
CALL TRANSACTION 的方式调用事物,默认不会做权限检查,所以必要时要加上权限检查语句:



 TRY.
      CALL TRANSACTION 'F-02' WITH AUTHORITY-CHECK.
    CATCH cx_sy_authorization_error.
      MESSAGE s001(00) WITH '无此事务代码操作权限,请检查' DISPLAY LIKE 'E'.
      RETURN.
  ENDTRY.

4.调用事物代码的函数

ABAPDEMOCALLTRANSACTION使用

ABAPDEMOCALLTRANSACTION使用

ABAPDEMOCALLTRANSACTION使用

1)功能界面跳转示例:

DATA:GT_RFC_SPAGPA TYPE TABLE OF RFC_SPAGPA,
     GW_RFC_SPAGPA LIKE LINE OF GT_RFC_SPAGPA.
GW_RFC_SPAGPA-PARID = 'AUN'.
GW_RFC_SPAGPA-PARVAL = '10000140'.
APPEND GW_RFC_SPAGPA TO GT_RFC_SPAGPA.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
  EXPORTING
    TCODE                   = 'VA03'
    SKIP_SCREEN             = 'X' "SKIP FIRST SCREEN
  TABLES
    SPAGPA_TAB              = GT_RFC_SPAGPA
  EXCEPTIONS
    CALL_TRANSACTION_DENIED = 1
    TCODE_INVALID           = 2
    OTHERS                  = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
2)也可以做BDC处理
可以看到函数的输入参数:
ABAPDEMOCALLTRANSACTION使用

处理BDC示例:

DATA:BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
DATA:MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
PERFORM BDC_DYNPRO      USING 'SAPMV45A' '0102'.
PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                              'VBAK-VBELN'.
PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                              '/00'.
PERFORM BDC_FIELD       USING 'VBAK-VBELN'
                              '10000141'.
PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
  EXPORTING
    TCODE                   = 'VA03'
    MODE_VAL                = 'A'
    UPDATE_VAL              = 'S'
  TABLES
    USING_TAB               = BDCDATA
    MESS_TAB                = MESSTAB
  EXCEPTIONS
    CALL_TRANSACTION_DENIED = 1
    TCODE_INVALID           = 2.

*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  = PROGRAM.
  BDCDATA-DYNPRO   = DYNPRO.
  BDCDATA-DYNBEGIN = 'X'.
  APPEND BDCDATA.
ENDFORM.
*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR BDCDATA.
  BDCDATA-FNAM = FNAM.
  BDCDATA-FVAL = FVAL.
  APPEND BDCDATA.
ENDFORM.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值