​​

ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_c++




ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_python_02

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

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

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


ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_c++_03

​​

​​

ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_java_04

​​

​​

ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_小程序_05

​​

​​

ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_java_06

​​

得到各个输入字段的 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使用_SAP刘梦_新浪博客_java_07

​​


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使用_SAP刘梦_新浪博客_linux_08

​​

​​

ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_java_09

​​

​​

ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客_python_10

​​

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使用_SAP刘梦_新浪博客_python_11

​​

处理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.