abap中程序跳转(全)

news2024/10/13 4:18:53

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-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的方式传入多参数值

 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-CHECK
                                 USING 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'
    EXPORTING
      jobname          = lv_jobname
      sdlstrtdt        = sy-datum
      sdlstrttm        = sy-uzeit
    IMPORTING
      jobcount         = lv_jobcount
    EXCEPTIONS
      cant_create_job  = 1
      invalid_job_data = 2
      jobname_missing  = 3
      OTHERS           = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.
 
**********************************************************************
*  submit 程序
  SUBMIT zlxf003 AND RETURN
                   WITH p_date = p_date
                   WITH s_bukrs IN s_bukrs
                   WITH s_hkont IN s_hkont
                   WITH p_rd1 = p_rd1
                   WITH p_rd2 = p_rd2
                   WITH p_rd3 = p_rd3
                   USER sy-uname
                   VIA JOB lv_jobname
                   NUMBER lv_jobcount.
 
**********************************************************************
*   关闭后台
  "参数cant_start_immediate设置后天作业启动优先级,如果不设置的话,可能导致作业挂起,不能实时执行
  CALL FUNCTION 'JOB_CLOSE'
    EXPORTING
      jobcount             = lv_jobcount
      jobname              = lv_jobname
      laststrtdt           = sy-datum
      laststrttm           = sy-uzeit
      strtimmed            = 'X'
    EXCEPTIONS
      cant_start_immediate = 1
      invalid_startdate    = 2
      jobname_missing      = 3
      job_close_failed     = 4
      job_nosteps          = 5
      job_notex            = 6
      lock_failed          = 7
      invalid_target       = 8
      invalid_time_zone    = 9
      OTHERS               = 10.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
        WITH 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'
EXPORTING
   TRANSAKTION          = 'VL01N'        "事务码
*   DEL_ON_EOT           = 0
   PARAMETERS           = 'LIKP-VSTEL = 8510 LV50C-DATBI = 20140509 LV50C-VBELN = 35001147'     "事务码选择屏幕的参数
   PROCESS_DARK         = 'X'             "跳过初始选择屏幕(像va01的屏幕就跳不过去)
* IMPORTING
*   MODE                 =
EXCEPTIONS
   MAX_SESSIONS         = 1
   INTERNAL_ERROR       = 2
   NO_AUTHORITY         = 3
   OTHERS               = 4.

2.TH_CREATE_FOREIGN_MODE

新建session会话的函数

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

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

CALL FUNCTION 'TH_CREATE_FOREIGN_MODE'
  EXPORTING
    client                 = sy-mandt
    user                   = 'T008'  "系统中的用户名
   TCODE                  = 'VA01'    "事务码
   RETURN_ERROR           = 1
   CREATE_EXCLUSIVE       = 0
 EXCEPTIONS
   USER_NOT_FOUND         = 1
   CANT_CREATE_MODE       = 2
   NO_AUTHORITY           = 3
   OTHERS                 = 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'"
  EXPORTING
    TRANSACTION           = 'VA03'
    SKIP_FIRST_SCREEN     = 'X'
  TABLES
    PARAMTAB              = L_IT_PARAMS"传屏幕参数的表
  EXCEPTIONS
    COMMUNICATION_FAILURE = 97
    SYSTEM_FAILURE        = 98
    OTHERS                = 99.
IF SY-SUBRC = 0.
  " Success
ELSEIF SY-SUBRC = 97.
  " Communication Failure
  EXIT.
ELSEIF SY-SUBRC = 98.
  " System Failure
  EXIT.
ELSE.
  EXIT.
ENDIF.

这里原函数

CALL FUNCTION 'CC_CALL_TRANSACTION_NEW_TASK'
  EXPORTING
    transaction             =
    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'
  EXPORTING
    TCODE                 = 'VA03'
    SKIP_SCREEN           = 'X'
  TABLES
    SPAGPA_TAB            = ITAB_SPA"传屏幕参数的表
  EXCEPTIONS
    COMMUNICATION_FAILURE = 1
    SYSTEM_FAILURE        = 2.
IF SY-SUBRC <> 0.
  " ERROR
ENDIF.

原函数代码

CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
  EXPORTING
    tcode                         =
*   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.coloradmin.cn/o/1108577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE】浅谈死锁

1、什么是死锁&#xff1f; 死锁是这样一种情形&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 2、关于死锁的情况 2.1 一个线程一把锁&#xff0c;可重入锁没事。不…

Jmeter压测入门教程

目录 1.Jmeter安装与启动 2.Jmeter使用步骤 3.结果分析 1.Jmeter安装与启动 安装 1. 首先进入官网Apache JMeter - Download Apache JMeter 2. 选择操作系统所对应的版本进行下载。 3.将下载成功的压缩包解压到指定目录当中&#xff0c;即安装成功。 4. 右键“我的电脑”…

spring6-资源操作:Resources

资源操作&#xff1a;Resources 1、Spring Resources概述2、Resource接口3、Resource的实现类3.1、UrlResource访问网络资源3.2、ClassPathResource 访问类路径下资源3.3、FileSystemResource 访问文件系统资源3.4、ServletContextResource3.5、InputStreamResource3.6、ByteAr…

程序员必备的IP查询工具

shigen坚持日更的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考&#xff0c;不断沉淀和成长。 hello&#xff0c;今天shigen给大家分享一下如何优雅的查询IP的工具。我们先看一下效果&a…

LeetCode 1361. 验证二叉树【二叉树,DFS或BFS或并查集】1464

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Yakit工具篇:端口探测和指纹扫描的配置和使用

简介&#xff08;来自官方文档&#xff09; 端口扫描和指纹识别是渗透测试和网络安全领域中常用的基础技术之一&#xff0c;用于评估目标系统的安全性和发现可能存在的漏洞和攻击面。也是Yakit基础工具的模块之一。 端口扫描 是指通过扫描目标系统上的端口&#xff0c;确定哪…

一步步掌握Java IO的奥秘:深入学习BIO、NIO,实现客户端与服务器通信

众所周知&#xff0c;Java IO是一个庞大的知识体系&#xff0c;很多人在学习的过程中会感到迷茫&#xff0c;甚至学得一头雾水&#xff0c;而我也曾有同样的困惑。因此&#xff0c;本文的目标是帮助大家一步一步深入学习Java IO&#xff0c;从BIO开始&#xff0c;然后引出JDK1.…

React +AntD + From组件重复提交数据(已解决)

开发场景&#xff1a; react Hooks andt 提交form表单内容给数据库(使用antd的form组件) 问题描述 提交是异步的&#xff0c;请提交方式是POST 方式 提交表单内容给后端&#xff0c;却产生了两次提交记录&#xff08;当然&#xff0c;数据新增了两条数据&#xff09;。可以…

智能加压站远程监控与维护,提高小区供水效率与安全性的创新方案

不知道大家有没有遇到过这样的情况&#xff1a;当你在家中使用水龙头接水时&#xff0c;突然水管的水流就逐渐变细直到消失。正当你震惊带着一丝疑惑是否停水的时候&#xff0c;水流又开始由细变粗&#xff0c;仿佛在和你开玩笑一样。 实际上&#xff0c;这种情况的出现通常是由…

汽车屏类产品(一):流媒体后视镜Camera Monitoring System (CMS)

前言: CMS,有叫电子侧视镜,虚拟倒车镜,电子倒车镜, 电子取代镜等,ISO 国际标准组织称其为摄像头监控系统。电子后视镜由“摄像头+屏幕”组成,汽车外后视镜经历了光学镜面从平面镜到曲面镜的迭代进步,CMS也实现从商用车到乘用车的过渡。显示模式为外部摄像头采集图像,…

小白学习c++的的一节课

初识c 目录&#xff1a;一、c关键字(c98)二、命名空间2.1 命名空间的定义2.2 命名空间的使用 三、c输入与输出四、缺省参数五、函数重载六、引用6.1引用特性6.2常引用6.3使用场景6.4传值和传引用效率比较6.5引用和指针的区别 七、内联函数7.1 概念7.2特性 八、auto关键字&…

第十九章 文件操作

程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放 通过文件可以将数据持久化 C中对文件操作需要包含头文件 < fstream > 文件类型分为两种&#xff1a; 文本文件 - 文件以文本的ASCII码形式存储在计算机中 二进制文件 - 文件以文本的二进制…

Vue3 Element-UI中使用ECharts(前端数据展示开发)

前端数据展示&#xff08;数据可视化、数据大屏等&#xff09;可使用的工具比较多&#xff0c;很多第三方都提供了在线平台&#xff0c;比如阿里云&#xff0c;只需数据接口&#xff0c;在线配置一下界面即可使用。 阿里云的使用&#xff1a;利用阿里云物联网平台&#xff08;I…

MySQL [基础] 学习笔记

MySQL 学习 文章目录 MySQL 学习1. 数据库三层结构2. 数据在数据库中的存储方式3. SQL 语句分类3.1 备份恢复数据库的表 4. Mysql 常用数据类型(列类型)4.1 数值型(整数)的基本使用4.2 数值型(bit)的使用4.3 数值型(小数)的基本使用4.4 字符串的基本使用(面试题)4.5 字符串使用…

Mysql关闭大小写敏感

1.mysql设置大小写敏感配置在/etc/my.cnf中[mysqld]添加 lower_case_table_names1 2.需要重启MYSQL服务 service mysqld restart

G2O学习笔记

Reference g2o图优化例子讲解 - 曲线参数最优化求解从零开始学习g2o

优雅而高效——立即执行函数表达式()();

&#x1f606;博主&#xff1a;小猫娃来啦 &#x1f606;文章核心&#xff1a;优雅而高效——立即执行函数表达式()(); 文章目录 前言立即执行函数表达式的定义和特点立即执行函数表达式的应用场景封装私有变量和方法避免全局变量污染模块化开发 立即执行函数表达式的写法和示例…

记一次mysql事务并发优化

记一次mysql事务并发优化 背景 事情的情况大致是这样的。一个扣减库存的业务上线以后&#xff0c;隔几天会报一次错&#xff0c;错误内容如下&#xff1a; ERROR - exception: UncategorizedSQLException,"detail":"org.springframework.jdbc.UncategorizedSQ…