abap中程序跳转(全)

发布时间:2026/7/21 16:03:48

abap中程序跳转(全) 1.常用https://www.cnblogs.com/jiangzhengjun/p/4292545.htmlhttps://blog.csdn.net/jy00873757/article/details/8517426parameter ID这样很方便一些客户用特定的数据,那如何去找parameter ID呢? 第一种方法,大家都很熟悉的就是用F1,直接可以看到这个数据元素的PARAMETER ID 第二种方法,直接到表里去找,表名是DD04L 但是这两种办法都是只能找到数据元素定义了parameter id的 如果parameter id没有和数据元素挂钩,那就找不到了 例如做会计清帐的时候,F-04里面有一个字段VAUSK,它的数据元素是VARNR_021 通过F1是找不到parameter id的,那就要用下面的两种办法了 第三种办法,通过表TPARA去找,所有的parameter id都能找到,但是只有描述,也很难找到 第四种办法,通过程序RPR_ABAP_SOURCE_SCAN去找 这个程序可以查找程序、屏幕等等 例如程序名我们输入SAPMF05O(清帐的标准程序),屏幕输入1101(标准屏幕) 字段输入VAUSK,运行,就可以找到parameter id 是LLK了 源代码是get parameter id'LLK' field rfcu4-vausk. " Ausgleichsv. Kreditor。程序跳转时的传参REPORT ZTXYY_11114. GET PARAMETER ID 'ZTXYY_11113' FIELD DATA(lv_flag). WRITE lv_flag. ************************************************** REPORT ZTXYY_11115. SET PARAMETER ID 'ZTXYY_11113' FIELD abap_true. SUBMIT ZTXYY_11114.执行ZTXYY_11115结果:其中的PARAMETER ID 'ZTXYY_11113'这个ZTXYY_11113是随意定义的名称该种方法缺陷在于无法用FREEMEMORY.或者FREEMEMORYID'ZTXYY_11113'.来清空缓存PC = 'Z'. EXPORT P1 = PC TO MEMORY ID 'ZTXYY'. DATA PC. IMPORT P1 = PC FROM MEMORY ID 'ZTXYY'.1.CALL TRANSACTION1.CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK[AND SKIP FIRST SCREEN].其中ta为事务码tcode使用时要打单引号(')2. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECKUSING bdc_tab{{[MODE mode][UPDATE upd]}|[OPTIONS FROM opt]}[MESSAGES INTO itab].其中ta为事务码tcode使用时要打单引号(')CALL TRANSACTION T-CODE WITH|WITHOUT AUTHORITY-CHECK USING bdc_tab [OPTIONS FROM opt].代码使用SET PARAMETER ID 'AAT' FIELD 'RK'. SET PARAMETER ID 'SPA' FIELD p_shar."这后面可以接变量(选择屏幕变量) SET PARAMETER ID 'VTW' FIELD '10'."要传几个参数值就写几行 CALL TRANSACTION 'VA01'." AND SKIP FIRST SCREEN . *++++++++++++++++++++++++++++++++++++++++++++++++++++++* CALL TRANSACTION 'VA01' AND SKIP FIRST SCREEN . "加上AND SKIP FIRST SCREEN会在传值之后直接执行或者回车 GET PARAMETER ID 'AAT' FIELD STR."获取值 *FREE MEMORY ID 'AAT'."memory id清除memory id其中AND SKIP FIRST SCREEN表示根据输入的参数直接跳转到相关操作页面BDC传参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.WITH AUTHORITY-CHECK. TRY. CALL TRANSACTION 'F-02' WITH AUTHORITY-CHECK. CATCH cx_sy_authorization_error. MESSAGE s001(00) WITH '无此事务代码操作权限,请检查' DISPLAY LIKE 'E'. RETURN. ENDTRY. *如果程序没有上述权限异常控制,当权限不够时,可能会导致当前程序dump其中的多值传递范例DATASTRTYPECLENGTH25.GETPARAMETERID'VKO'FIELDSTR."获取SETID的值1.方法1REPORT ZTXYY_1141. TABLES:VBRK. DATA STR TYPE C LENGTH 25. SELECT-OPTIONS s_matnr FOR VBRK-VKORG ."MEMORY ID ZDEMO. FREE MEMORY ID 'ZDEMO'."清除MEMORY ID EXPORT s_matnr FROM s_matnr TO MEMORY ID 'ZDEMO'."传入MEMORY ID *SET PARAMETER ID 'VKO' FIELD STR."实现单值输入 CALL TRANSACTION 'ZTXYY_1142' ."AND SKIP FIRST SCREEN.程序ztxyy_1142定义了一个同名的tcode.REPORT ztxyy_1142. TABLES:vbrk. DATA str1 TYPE c LENGTH 25. SELECT-OPTIONS s_matnr FOR vbrk-vkorg. SELECT-OPTIONS s_matnr2 FOR vbrk-vkorg. INITIALIZATION. * GET PARAMETER ID 'VKO' FIELD str1."获取SET ID的值 IMPORT s_matnr TO s_matnr FROM MEMORY ID 'ZDEMO'."读取MEMORY ID FREE MEMORY ID 'ZDEMO'."清除MEMORY IDABAP程序间跳转CALL TRANSACTION-CSDN博客2.通过 BDC的方式传入多参数值ABAP程序中SUBMIT Program时、BDC CALL Transaction时填充参数的代码模板_abap submit-CSDN博客Call Transaction也即直接调用一个事务代码,其语法如下:CALL TRANSACTIONta WITH|WITHOUT AUTHORITY-CHECK… … … … … … … …USINGbdc_tab { {[MODEmode] [UPDATEupd]}… … … … … … … … | [OPTIONS FROMopt] }… … … … … … … … [MESSAGESINTO itab].具体的关键字用法,可查看ABAP的帮助文档。在CALL transaction时,其难点在于BDC字段的填充。注:BDC - Batch Data Input是SAP非常经典一种批量导入技术,可以通过录制屏幕(Tx: SHDB)操作,生成代码。在编程过程中,如果遇到类似的需求,也可以用宏 DEFINE快速实现,具体可参考下面的模板。下例中,填充BDC包含了两种复杂操作,一种是填充selection-option, 另一种是通过剪切板中的内容来填充selection option,因此调用到了 cl_gui_frontend_services=clipboard_expor()这个服务。模版DATA: lt_clipdata TYPE STANDARD TABLE OF char120, lv_rc TYPE i, ls_bdc TYPE bdcdata, lt_bdc TYPE STANDARD TABLE OF bdcdata WITH DEFAULT KEY. FIELD-SYMBOLS: ls_msgguid LIKE LINE OF it_msgguid. DEFINE bdc_dynpro. CLEAR ls_bdc. ls_bdc-program = 1. ls_bdc-dynpro = 2. ls_bdc-dynbegin = 'X'. INSERT ls_bdc INTO TABLE lt_bdc. END-OF-DEFINITION. "BDC_DYNPRO DEFINE bdc_field. CLEAR ls_bdc. ls_bdc-fnam = 1. ls_bdc-fval = 2. INSERT ls_bdc INTO TABLE lt_bdc. END-OF-DEFINITION. "BDC_DYNPRO CLEAR es_msg. CHECK it_msgguid IS NOT INITIAL. LOOP AT it_msgguid ASSIGNING ls_msgguid. INSERT CONV #( ls_msgguid-msgguid ) INTO TABLE lt_clipdata. ENDLOOP. IF sy-subrc = 0. DATA(lv_msgguid) = it_msgguid[ 1 ]-msgguid. * Put into clipboard cl_gui_frontend_services=clipboard_export( IMPORTING data = lt_clipdata * length = " Data length CHANGING rc = lv_rc EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4 ). IF sy-subrc 0. RETURN. ENDIF. ENDIF. " fill normal screen parameters bdc_dynpro '/AIF/ERROR_HANDLING_TRANS' '1000'. bdc_field 'BDC_OKCODE' '=%00291010003785126'. bdc_field 'P_APPL' 'AIF'. bdc_field 'P_STS_S' 'X'. bdc_field 'P_STS_W' 'X'. " selection-option fill 2 values bdc_field 'S_IFNAME-LOW' 'TEST_A'. bdc_dynpro 'BDC_CURSOR' 'S_IFNAME-LOW'. bdc_dynpro 'SAPLALDB' '3000'. bdc_field 'BDC_OKCODE' '=ACPT'

相关新闻