abap中程序跳转(全)

1.常用

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-CHECKUSING 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 IDFREE MEMORY ID  'ZDEMO'."清除MEMORY ID

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

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

 DATA: lt_bdcdata_tab TYPE TABLE OF bdcdata,ls_opt         TYPE ctu_params.
lt_bdcdata_tab = VALUE #(( program  = 'ZPSR018_CONFIRM' dynpro   = '1000' dynbegin = 'X' )( fnam = 'BDC_CURSOR'       fval = 'S_PSPID-LOW' ) "其中fval为值 fnam为参数ID( fnam = 'S_VERNR-LOW'      fval = lv_vernr_low )      "这里实现了多值输入( fnam = 'S_VERNR-HIGH'     fval = lv_vernr_high ) ).
ls_opt = VALUE #( dismode = 'E'defsize = 'X' ).TRY.CALL TRANSACTION 'ZPSR018A' WITH AUTHORITY-CHECKUSING lt_bdcdata_tab OPTIONS FROM ls_opt.CATCH cx_sy_authorization_error ##NO_HANDLER.ENDTRY.

2.SUBMIT

SUBMIT {rep|(name)} [selscreen_options]
                    [list_options]
                    [job_options]
                    [AND RETURN].

... USING SELECTION-SCREEN dynnr

  SUBMIT zlxf003 VIA SELECTION-SCREEN"跳转后保留zlxf003程序执行后的第一个窗口
                   WITH p_date = p_date "字段传值也可以p_date = 1
                   WITH s_bukrs IN s_bukrs "多值传递 不可用s_bukrs-low = s_bukrs-low
                   WITH s_hkont IN s_hkont "多值传递 不可用s_bukrs-high = s_bukrs-high来实现
                   WITH p_rd1 = p_rd1
                   WITH p_rd2 = p_rd2
                   WITH p_rd3 = p_rd3
                   AND RETURN."从调用程序返回后可以返回到主程序的执行界面

SUBMIT 后面跟着的是程序名而不是tcode事务码

SUBMIT ZTXYY_1142 ."会直接调用程序ZTXYY_1142跳过选择屏幕
*点击返回按钮会直接返回原主程序代码界面

 将被调用程序设置为后台作业模式运行

FORM frm_bajob_data .DATA: lv_jobname  TYPE tbtcjob-jobname,lv_jobcount TYPE tbtcjob-jobcount.CONCATENATE 'ZLXF003_' sy-datum sy-uzeit INTO lv_jobname.**********************************************************************
*   启动后台作业CALL FUNCTION 'JOB_OPEN'EXPORTINGjobname          = lv_jobnamesdlstrtdt        = sy-datumsdlstrttm        = sy-uzeitIMPORTINGjobcount         = lv_jobcountEXCEPTIONScant_create_job  = 1invalid_job_data = 2jobname_missing  = 3OTHERS           = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.RETURN.ENDIF.**********************************************************************
*  submit 程序SUBMIT zlxf003 AND RETURNWITH p_date = p_dateWITH s_bukrs IN s_bukrsWITH s_hkont IN s_hkontWITH p_rd1 = p_rd1WITH p_rd2 = p_rd2WITH p_rd3 = p_rd3USER sy-unameVIA JOB lv_jobnameNUMBER lv_jobcount.**********************************************************************
*   关闭后台"参数cant_start_immediate设置后天作业启动优先级,如果不设置的话,可能导致作业挂起,不能实时执行CALL FUNCTION 'JOB_CLOSE'EXPORTINGjobcount             = lv_jobcountjobname              = lv_jobnamelaststrtdt           = sy-datumlaststrttm           = sy-uzeitstrtimmed            = 'X'EXCEPTIONScant_start_immediate = 1invalid_startdate    = 2jobname_missing      = 3job_close_failed     = 4job_nosteps          = 5job_notex            = 6lock_failed          = 7invalid_target       = 8invalid_time_zone    = 9OTHERS               = 10.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.RETURN.ENDIF.
ENDFORM.

3.LEAVE TO TRANSACTION

LEAVE TO { {TRANSACTION ta} | {CURRENT TRANSACTION} }
         [AND SKIP FIRST SCREEN].

1.使用后跳转到对应的事务码====点击返回按钮回到空会话窗口(原程序被关闭)

LEAVE TO TRANSACTION 'VA01' ."AND SKIP FIRST SCREEN.

其中AND SKIP FIRST SCREEN表示根据输入的参数直接跳转到相关操作页面

2.函数实现跳转

1.TH_CREATE_MODE

新建session会话的函数

效果1.调用程序需要tcode,2.调用会打开新会话(sap只支持六个会话)

3.点击返回按钮无法返回原来的程序界面4.会进行权限检查

CALL FUNCTION 'TH_CREATE_MODE'
EXPORTINGTRANSAKTION          = 'VL01N'        "事务码
*   DEL_ON_EOT           = 0PARAMETERS           = 'LIKP-VSTEL = 8510 LV50C-DATBI = 20140509 LV50C-VBELN = 35001147'     "事务码选择屏幕的参数PROCESS_DARK         = 'X'             "跳过初始选择屏幕(像va01的屏幕就跳不过去)
* IMPORTING
*   MODE                 =
EXCEPTIONSMAX_SESSIONS         = 1INTERNAL_ERROR       = 2NO_AUTHORITY         = 3OTHERS               = 4.

2.TH_CREATE_FOREIGN_MODE

新建session会话的函数

效果1.调用程序需要tcode,2.调用会打开新会话(sap只支持六个会话)

3.点击返回按钮无法返回原来的程序界面4.无法在函数中给屏幕字段传值

CALL FUNCTION 'TH_CREATE_FOREIGN_MODE'EXPORTINGclient                 = sy-mandtuser                   = 'T008'  "系统中的用户名TCODE                  = 'VA01'    "事务码RETURN_ERROR           = 1CREATE_EXCLUSIVE       = 0EXCEPTIONSUSER_NOT_FOUND         = 1CANT_CREATE_MODE       = 2NO_AUTHORITY           = 3OTHERS                 = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

3.CC_CALL_TRANSACTION_NEW_TASK

新建session会话的函数

效果1.调用程序需要tcode,2.调用会打开新会话(sap只支持六个会话)

3.点击返回按钮,可以返回原屏幕并关闭打开的新会话.(效果类似SUBMIT语句)

WRITE 'This is the main ABAP program'.
DATA :LV_SKIP(1)  TYPE C VALUE 'X',LV_VBELN    LIKE VBAK-VBELN VALUE '20000190',L_ST_PARAM  TYPE TPARA,L_IT_PARAMS TYPE TABLE OF TPARA.
CLEAR L_ST_PARAM.
CLEAR L_IT_PARAMS[].
L_ST_PARAM-PARAMID = 'AUN'.
L_ST_PARAM-PARTEXT = LV_VBELN.
APPEND L_ST_PARAM TO L_IT_PARAMS.
CALL FUNCTION 'CC_CALL_TRANSACTION_NEW_TASK'
"  STARTING NEW TASK 'VA03'"表异步
"  DESTINATION 'NONE'"EXPORTINGTRANSACTION           = 'VA03'SKIP_FIRST_SCREEN     = 'X'TABLESPARAMTAB              = L_IT_PARAMS"传屏幕参数的表EXCEPTIONSCOMMUNICATION_FAILURE = 97SYSTEM_FAILURE        = 98OTHERS                = 99.
IF SY-SUBRC = 0." Success
ELSEIF SY-SUBRC = 97." Communication FailureEXIT.
ELSEIF SY-SUBRC = 98." System FailureEXIT.
ELSE.EXIT.
ENDIF.

这里原函数

CALL FUNCTION 'CC_CALL_TRANSACTION_NEW_TASK'EXPORTINGtransaction             =skip_first_screen       =
* TABLES
*   PARAMTAB                =
* EXCEPTIONS
*   ERROR                   = 1
*   OTHERS                  = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

4.ABAP4_CALL_TRANSACTION

新建session会话的函数

效果1.调用程序需要tcode,2.调用会打开新会话(sap只支持六个会话)

3.点击返回按钮,可以返回原屏幕并关闭打开的新会话.(效果类似SUBMIT语句)

WRITE 'This is the main ABAP report calling the SAP Transaction VA03 in a new session or in a new window'.
DATA :    WA_SPA   TYPE RFC_SPAGPA,ITAB_SPA TYPE TABLE OF RFC_SPAGPA."传屏幕参数的表
WA_SPA-PARID = 'AUN'.    "屏幕参数id
WA_SPA-PARVAL = '20000190'.
APPEND WA_SPA TO ITAB_SPA.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'STARTING NEW TASK 'VA03'DESTINATION 'NONE'EXPORTINGTCODE                 = 'VA03'SKIP_SCREEN           = 'X'TABLESSPAGPA_TAB            = ITAB_SPA"传屏幕参数的表EXCEPTIONSCOMMUNICATION_FAILURE = 1SYSTEM_FAILURE        = 2.
IF SY-SUBRC <> 0." ERROR
ENDIF.

原函数代码

CALL FUNCTION 'ABAP4_CALL_TRANSACTION'EXPORTINGtcode                         =
*   SKIP_SCREEN                   = ' '
*   MODE_VAL                      = 'A' "A:前台,显示屏幕    E:遇到错误停止并显示    N:后台模式
*   UPDATE_VAL                    = 'A'"A:异步   S:同步     L:本地模式
* IMPORTING
*   SUBRC                         =
* TABLES
*   USING_TAB                     =
*   SPAGPA_TAB                    =
*   MESS_TAB                      =
* EXCEPTIONS
*   CALL_TRANSACTION_DENIED       = 1
*   TCODE_INVALID                 = 2
*   OTHERS                        = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

有空看看这个

ABAP CALL TRANSACTION 调用事务码方式-SAP技术站ABAP CALL TRANSACTION 调用事务码方式,使用BDC参数调用事务码并进行跳转REPORTYTEST.INCLUDEBDCRECXY."使用BDC一定要包含此文件DATAL_OPTTYPECTU_PARAMS.SELECTION-SCREENPUSHBUTTON/1(20)PUBU1icon-default.png?t=N7T8https://www.sapcenter.cn/archive/post/354567785943109.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/139821.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于tornado BELLE 搭建本地的web 服务

我的github 将BELLE 封装成web 后端服务&#xff0c;采用tornado 框架 import timeimport torch import torch.nn as nnfrom gptq import * from modelutils import * from quant import *from transformers import AutoTokenizer import sys import json #import lightgbm a…

FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、我这里已有的以太网方案3、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条UDP协议栈UDP视频数据组包UDP协议栈数据发送UDP协议栈数据缓冲IP地址、端口号的修改Tri Mode Ethernet MAC1G/2.5G Ethernet PCS/PMA or SGMIIQT上位机和源…

【动态规划】392. 判断子序列、115. 不同的子序列

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 392. 判断子序列&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 115. 不同的子序列&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3…

将Sketch文件转化为PSD文件的简单在线工具!

设计工作不仅需要UI设计工具&#xff0c;还需要Photoshop。常见的UI设计工具Sketch与Photoshop软件不兼容。如果你想在实际工作中完成Sketch转psd&#xff0c;你需要使用其他软件进行转换。但是在转换过程中容易丢失文件&#xff0c;导致同样的工作需要重复多次才能完成&#x…

模型量化笔记--KL散度量化

KL散度量化 前面介绍的非对称量化中&#xff0c;是将数据中的min值和max值直接映射到[-128, 127]。 同样的&#xff0c;前面介绍的对称量化是将数据的最大绝对值 ∣ m a x ∣ |max| ∣max∣直接映射到127。 上面两种直接映射的方法比较粗暴&#xff0c;而TensorRT中的int8量化…

气膜式仓库:灵活创新,助力企业储存与物流升级

气膜式大空间仓库的建设不受地面条件限制&#xff0c;为企业提供了极大的便利。合理的仓储系统不仅是企业和厂商提高货品流动速度、确保生产、储运、配送顺利进行的关键&#xff0c;也是现代物流发展的需要。传统建筑在使用中存在一些不足&#xff0c;因此&#xff0c;我们需要…

VR数字政务为我们带来了哪些便捷之处?

每每在政务大厅排队的时候&#xff0c;总是在想未来政务服务会变成什么样子呢&#xff1f;会不会变得更加便捷呢&#xff1f;今天我们就来看看VR数字政务&#xff0c;能够为我们带来哪些便捷之处吧&#xff01; 传统的政务服务中&#xff0c;不仅办事流程复杂&#xff0c;而且每…

【经验分享】解决vscode编码问题

目录 先看一下我遇到的问题和你们的一不一样 下面是我查到的解决办法&#xff1a; 简单点说就是 我们看看解决后的效果 先看一下我遇到的问题和你们的一不一样 我一开始以为就是编码问题。 下面是我查到的解决办法&#xff1a; 这个错误提示看起来仍然是中文乱码。可能是由于…

linux进阶(脚本编程/软件安装/进程进阶/系统相关)

一般市第二种,以bash进程执行 shelle脚本编程 env环境变量 set查看所有变量 read设置变量值 echo用于控制台输出 类似java中的sout declear/typeset声明类型 范例 test用于测试表达式 if/else case while for 函数 脚本示例 软件安装及进阶 fork函数(复制一个进程(开启一个进…

“第四十三天”

这个是我自己写的&#xff0c;下面那个是看的别人的&#xff0c;其实大致都是一样的&#xff0c;通过四次循环&#xff0c;挨个求和比较&#xff0c;都很麻烦&#xff0c;但重点在于&#xff0c;对于已知变量的运用&#xff0c;当我需要在最内层循环用变量确定a数组组元时&…

从Github中下载部分文件

我们经常回去Github中下载代码&#xff0c;但仓库中存在很多project代码。但我们如果只需要某一个或几个项目的代码&#xff0c;此时应该如何操作呢&#xff1f; 这里介绍两款工具&#xff0c;可以从仓库中下载部分文件的小工具: DownGit 和 GitZip 1. DownGit downGit 国内镜…

6.7 案例分析与实现

思维导图&#xff1a; 6.7 案例分析与实现 #### 案例6.2: 六度空间理论 【案例分析】 - **背景介绍**&#xff1a; 六度空间理论提及在任意两人之间最多仅有6个人的连接。尽管这一理论被广泛提及并得到了某种程度的验证&#xff0c;但从科学角度看&#xff0c;它仍然只是一…