news 2026/7/21 16:03:44

abap中程序跳转(全)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
abap中程序跳转(全)

1.常用

https://www.cnblogs.com/jiangzhengjun/p/4292545.html

https://blog.csdn.net/jy00873757/article/details/8517426

parameter 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是随意定义的名称

该种方法缺陷在于无法用FREE MEMORY.或者FREE MEMORY ID 'ZTXYY_11113'.来清空缓存

PC = 'Z'. EXPORT P1 = PC TO MEMORY ID 'ZTXYY'. DATA PC. IMPORT P1 = PC FROM MEMORY ID 'ZTXYY'.

1.CALL TRANSACTION

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

其中ta为事务码tcode使用时要打单引号(')

2. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK
                      USING 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

其中的多值传递范例

DATA STR TYPE C LENGTH 25.

GET PARAMETER ID 'VKO' FIELD STR."获取SET ID的值

1.方法1

REPORT 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 ID

ABAP程序间跳转CALL TRANSACTION-CSDN博客

2.通过 BDC的方式传入多参数值

ABAP程序中SUBMIT Program时、BDC CALL Transaction时填充参数的代码模板_abap submit-CSDN博客

Call Transaction也即直接调用一个事务代码,其语法如下:

CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK
… … … … … … … … USING bdc_tab { {[MODE mode] [UPDATE upd]}
… … … … … … … … | [OPTIONS FROM opt] }
… … … … … … … … [MESSAGES INTO 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'
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 16:03:39

React-Blog:错误处理与日志记录的最佳实践

React-Blog&#xff1a;错误处理与日志记录的最佳实践 【免费下载链接】react-blog react hooks koa2 sequelize mysql 构建的个人博客。具备评论、通知、上传文章等等功能 项目地址: https://gitcode.com/gh_mirrors/rea/react-blog 在现代Web应用开发中&#xff0…

作者头像 李华
网站建设 2026/7/21 16:03:27

居家安防的坚固屏障 —— 防盗门

防盗门是现代住宅、商铺和办公场所必不可少的安全防护设施&#xff0c;主要用于防范外力破坏、暴力撬锁和非法入室&#xff0c;守护家庭财产与居住安全。与普通室内门相比&#xff0c;防盗门结构更坚固、防护性能更强&#xff0c;是居家安防的第一道重要屏障。防盗门最大的特点…

作者头像 李华
网站建设 2026/7/21 15:59:56

puzzle(1015)明灯谜局、马赛克、线段填格

目录 一&#xff0c;明灯谜局 练习模式 比赛模式 二&#xff0c;马赛克 三&#xff0c;线段填格 规则 7*7 10*10 12*12 一&#xff0c;明灯谜局 最强大脑同款项目。 这个游戏和扫雷类似&#xff0c;而明灯集合既是皇后的内固集又是外固集。 在线play 练习模式 &am…

作者头像 李华
网站建设 2026/7/21 15:58:13

Event Loop事件循环

1. 同步和异步 JavaScript是一种单线程语言&#xff0c;所有任务都在一个线程上完成。一旦遇到大量任务或者遇到一个耗时的任务&#xff0c;比如加载一个高清图片&#xff0c;网页就会出现"假死"&#xff0c;因为JavaScript停不下来&#xff0c;也就无法响应用户的行…

作者头像 李华
网站建设 2026/7/21 15:57:47

AI4R核心功能大揭秘:从分类器到Transformer的全方位解析

AI4R核心功能大揭秘&#xff1a;从分类器到Transformer的全方位解析 【免费下载链接】ai4r Artificial Intelligence for Ruby - A Ruby playground for AI researchers 项目地址: https://gitcode.com/gh_mirrors/ai/ai4r AI4R&#xff08;Artificial Intelligence for…

作者头像 李华
网站建设 2026/7/21 15:57:23

计算机毕业设计之网上书店系统

随着新经济的需求和新技术的发展&#xff0c;特别是网络技术的发展&#xff0c;如果可以建立起网上书店系统&#xff0c;可以改变传统线下管理方式&#xff0c;在过去的时代里都使用传统的方式实行&#xff0c;既花费了时间&#xff0c;又浪费了精力。在信息如此发达的今天&…

作者头像 李华