SAP ABAP子程序SUBMIT调用的方法

SAP SUBMIT 用一个程序调用其他程序并返回参数 假如我需要用A程序将参数传入B程序,运行B程序后再将结构返回至A程序,这时我就可以使用关键字submit来实现。SUBMIT [被调用的程序B] {WITH 参数关系} {AND RETURN}.传入语句:IMPORT wa FROM MEMORY ID 'wa' . 写在A程序里面。返回语句:EXPORT wa TO MEMORY ID 'wa' . 写在B程序里面。传入的参数可以用memory来存储。注意该表在A和B程序内都需要定义。在寻找资料时,找到了一些参考文章。wa为任意自己创建参数的内表。 阅读详情

编写两个程序 ZTEST06 和 ZTEST07 , 在ZTEST06 里调用ZTEST07 程序。

ZTEST06 作用是收集并整理数据,并存放到内存

ZTEST07 从内存取到数据,并列印出来

ZTEST06程序代码如下:

*&---------------------------------------------------------------------*
*& Report  ZTEST06
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST06.

*----------------------------------------------------------------------*
*  define internal tables
*  定义内表
*
*----------------------------------------------------------------------*
DATA : BEGIN  OF  W_DATA,
  FID1 TYPE  STRING,
  NUM1 TYPE  I ,
  NUM2 TYPE  I ,
END    OF  W_DATA.
DATA : T_OUT LIKE  W_DATA OCCURS  0  WITH  HEADER  LINE .


*----------------------------------------------------------------------*
*  assign value to internal tables
*  给内表赋值
*
*----------------------------------------------------------------------*
DO  10  TIMES .
  IF  SY-INDEX  < 4 .
    T_OUT-FID1 = 'A' .
    T_OUT-NUM1 = SY-INDEX .
    T_OUT-NUM2 = SY-INDEX  + 1 .
  ELSEIF  SY-INDEX  < 7 .
    T_OUT-FID1 = 'B' .
    T_OUT-NUM1 = SY-INDEX  + 1 .
    T_OUT-NUM2 = SY-INDEX  + 2 .
  ELSE .
    T_OUT-FID1 = 'C' .
    T_OUT-NUM1 = SY-INDEX .
    T_OUT-NUM2 = SY-INDEX  - 1 .
  ENDIF .

  APPEND  T_OUT.
ENDDO .

*-----------------------------------------------------------------------*
*  call extenral program
*  调用外部程序
*
*-----------------------------------------------------------------------*
***  使用ABAP内存进行数据传递
EXPORT  T_OUT TO  MEMORY  ID  'T_OUT' .

*** 以下两种情况是调用程序被结束,被调用程序开始执行
* SUBMIT ZWRITE_DATA.

***  如果使用这种情况程序之间的数据访问就不能ABAP内存访问了
* LEAVE TO TRANSACTION 'ZGET_DATA'.

*** 以下两种情况是调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行
SUBMIT  ZTEST07 AND  RETURN .

***  调用事物代码(和SUBMIT <PROGRAM> AND RETURN的效果一样) 将程序 ZTEST07 设一个 事务码 ZGET_DATA
* CALL TRANSACTION 'ZGET_DATA'.

 

ZTEST07程序代码如下:

 

*&---------------------------------------------------------------------*
*& Report  ZTEST07
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

report  ztest07.

*----------------------------------------------------------------------*
*  define internal tables
*  定义内表
*
*----------------------------------------------------------------------*
data : begin  of  w_data,              "这里定义一个跟调用程序一样的内表结构
  fid1 type  string,
  num1 type  i ,
  num2 type  i ,
end    of  w_data.
data : t_out like  w_data occurs  0  with  header  line .

*----------------------------------------------------------------------*
*  get data from sap memory and write out
*  从SAP内存读取数据然后打印输出
*
*----------------------------------------------------------------------*

import  t_out from  memory  id  'T_OUT' .

free  memory  id  'T_OUT' .

write : sy-uline .

write : '从调用程序取到的数据如下:' .
loop  at  t_out.
  write : / ' ' ,t_out-fid1, t_out-num1, t_out-num2.
endloop .
write : sy-uline .

*** 退出程序
* leave program.

 

当然上面的功能完全可以放在一个程序里又简单又简洁,

只是举这么个简单例子说明 SUBMIT 是怎么用的。至于什么样的情况要这样使用,那么就是具体问题具体解决了。


作者: SAP道长

SAP 程序相互调用--SUBMIT 遇到一个这样的需求 双击供应商及时率,展示明细,因为这个程序集成的报表有点多,而且多数要求都是计算百分率,然后双击跳转明细的逻辑,为了不相互影响,精简代码,因此选择了 SUBMIT 每一个报表的明细都做成了一个单独的程序,然后双击跳转的时候调用程序. 需要传参,主程序为 A ,被调用程序为 B,此例中B 的选择屏幕 就是 A 的选择屏幕的条件. (1) 调用其他程序: SUBMIT zppr044_5 AND RETURN . (2) 调用其他程序参数传递参数: SU. 阅读详情

相关推荐

ABAP SUBMIT调用实战:从程序调用到数据获取的完整指南

在SAP ABAP开发中,程序间调用与数据交互是构建复杂业务解决方案的基础。SUBMIT语句作为核心机制,允许一个ABAP程序调用并执行另一个独立的报表程序,其原理在于通过内存会话和参数传递实现程序边界的跨越。这项技术的核心价值在于提升代码复用性、实现流程自动化,并构建模块化的企业应用。从工程实践角度看,开发者不仅需要掌握前台同步与后台异步调用的模式,更要解决如何高效传递选择参数、共享结构化数据以及获取被调用程序内部计算结果等实际问题。针对常见的需求如“abap 获取标准程序的内表数据”和“abap中可以循

weixin_33717117的博客 330

SAP实战中Submit的常见用法-调用标准程序

场景:系统MB52/MB51/MB5B等类似的报表,虽然数据很全面,执行效率也够快,但是经常会不满足用户需求(增添字段、添加查询条件等),很多ABAP会选择去COPY出标准程序,然后去做修改,强烈不推荐此种方式,弊端太大,容易使标准程序出现问题,且效率低(特别涉及MSEG等数据库表)。 我们可以使用SUBMIT,此语法可将获取系统标准报表数据,然后你就可以自己去加一层壳来实现自己的定制。

少年休闲海 1万+

SAP ABAP开发避坑指南:用PERFORM ON COMMIT搞定增强里的隐式提交难题

本文深入探讨了SAP ABAP开发中增强功能遇到的隐式提交问题,并详细介绍了如何使用`PERFORM ON COMMIT`技术确保数据一致性。通过实际案例和代码示例,帮助开发者理解SAP LUW机制,避免因隐式提交导致的数据不一致问题,提升增强开发的可靠性和效率。

weixin_42557830的博客 430

SAP ABAP SUBMIT 用法详解(看这一篇就够了)

SAP ABAP SUBMIT 用法详解 看这一篇就够了 保姆级教学傻瓜都学的会。

Li958172829的博客 1万+

ABAP SUBMIT命令实战:串联标准报表实现数据自动化整合

在SAP ABAP开发中,程序间调用与数据交互是核心基础概念。通过函数模块(CALL FUNCTION)或事务码调用(CALL TRANSACTION)可实现模块化复用,但当需要完整复用标准报表的复杂业务逻辑、选择屏幕及权限检查时,这些方式便存在局限。SUBMIT命令应运而生,它允许程序穿越边界,接管另一个报表的完整生命周期,从参数输入、后台执行到结果获取,实现流程的自动化串联。其技术价值在于能最大化复用SAP系统内经过验证的标准逻辑,避免重复开发与复杂表关联的破解风险,显著提升开发效率与系统稳定性。典型应

weixin_33805743的博客 317

[ABAP] 揭秘WS_REVERSE_GOODS_ISSUE BUG:从缓存冲突到SUBMIT的实战解决

本文深入剖析了SAP ABAP开发中调用标准BAPI `WS_REVERSE_GOODS_ISSUE`冲销交货单时遇到的VL302错误。该问题源于复杂调用链导致的`SAPMV50A`程序池缓存冲突。文章提出了通过`SUBMIT`语句创建独立执行环境的实战解决方案,有效隔离了程序状态,并提供了完整的代码实现与关键注意事项,为处理类似的标准程序交互问题提供了可靠思路。

beta5的博客 496

ABAP开发基础知识:11)子程序的建立与调用

ABAP子程序(Subrouting)是包含在程序中的一段具有一定功能的代码,能够将某个功能作为一个小程序包含在主程序中,以方便程序分析及阅读。特别是一此程序中多次用到的功能,可以简化代码,增加程序的可读性且便于维护。       1.子程序的定义        通过FORM...ENDFORM语名可以实现子程序的定义,通过PERFORM语句来实现子程序的调用。        [For Exa...

ChampaignWolf的专栏 4258

SAP ABAP开发避坑指南:当增强遇到隐式提交,如何用PERFORM ON COMMIT保住数据一致性?

本文深入探讨了SAP ABAP开发中遇到隐式提交时的数据一致性问题,重点介绍了如何使用PERFORM ON COMMIT机制确保增强逻辑与主业务数据的同步提交。文章详细解析了SAP LUW概念、PERFORM ON COMMIT的工作原理及实战应用,并提供了异常处理、性能优化和调试技巧,帮助开发者有效规避数据不一致风险。

weixin_42525551的博客 248

SAP ABAP 利用SUBMIT实现跨程序数据交互的实战技巧

本文深入探讨了SAP ABAP开发中利用SUBMIT命令实现跨程序数据交互的实战技巧。通过SUBMIT命令,开发者可以高效调用并执行其他ABAP程序,并利用CL_SALV_BS_RUNTIME_INFO类捕获其ALV输出数据,从而避免代码重复,实现程序功能的模块化复用与整合。文章详细解析了参数传递、结果捕获、常见陷阱及解决方案,并分享了构建灵活调度框架与真实财务简报生成器的进阶应用。

plant的博客 206

SAP-ABAP:程序间调用举例

在 SAP ABAP 中,程序间的调用是常见的需求,通常用于模块化代码、重用功能或分离逻辑。以下是几种常见的程序间调用方式及其详解:

baidu_35680696的博客 931

SAP-ABAP:SAP内存管理完全指南:内存类型、作用域与性能优化实战

摘要:SAP ABAP内存管理核心要点 本文系统解析了SAP ABAP开发中的内存管理体系,涵盖5种关键内存类型: ABAP内存:会话内数据共享,通过EXPORT/IMPORT操作,适合程序调用链数据传递 SAP内存(参数ID):跨会话全局存储,基于SET/GET PARAMETER实现,适合用户参数记忆 共享内存:服务器级共享数据区,适合大数据缓存(需手动管理) HIDE内存:报表交互专用,存储行选择数据 数据库存储:持久化方案,适合长期保存数据 重点分析了ABAP内存的会话隔离特性与SAP内存的全局特性

baidu_35680696的博客 249

子程序的建立及调用

ABAP子程序(Subrouting)是包含在程序中的一段具有一定功能的代码,能够将某个功能单独作业一个小程序包含在主程序中,以方便程序分析及阅读。特别一一些程序中多次用到的功能,可以简化代码,增加程序的可读性且便于维护。 1.子程序的定义 通过FORM...ENDFORM语句可以实现子程序的定义,通过PERFORM语句来实现子程序的调用。 FORMWELCOME....

weixin_34123613的博客 712

SAP-ABAP:深入解析ABAP内存:原理、实战与最佳实践

ABAP内存:SAP开发中的数据暂存利器解析: 在SAP ABAP开发中,内存管理是提升程序性能和优化用户体验的核心技能。作为程序运行时的"临时记事本",ABAP内存承载着关键数据的暂存与传递。本文将深入剖析其工作机制,并通过实战案例展示高效使用方法。

baidu_35680696的博客 610

SAP ABAP程序间数据传递:从会话内变量到跨系统通信的完整指南

在SAP ABAP开发中,程序间数据传递是构建复杂业务逻辑和系统集成的核心技术基础。其核心原理在于根据数据的生命周期和共享范围,选择不同的存储与访问机制。从技术价值看,合理的数据传递方式能确保程序的健壮性、高性能和可维护性,避免数据不一致和性能瓶颈。常见的应用场景包括:同一程序内部的方法调用、用户会话内不同事务的交互、后台作业的异步处理以及跨系统集成。本文聚焦于ABAP内存与会话管理,并深入探讨了使用簇表(如INDX)进行数据持久化以及通过共享对象实现高性能缓存的具体实践,为开发者提供了从基础到高级的完整解

weixin_30268071的博客 376

使用electron静默打印

使用electron静默打印 1.使用electron打印的理由 很多情况下程序中使用的打印都是用户无感知的。并且想要灵活的控制打印内容,往往需要借助打印机给我们提供的api再进行开发,这种开发方式非常繁琐,并且开发难度较大。 electron提供的打印api可以非常灵活的控制打印设置的显示,并且可以通过html来书写打印内容。 2.api ele...

w1366352655的博客 945

手教你如何使用Simulink和相关工具箱模拟和实现无人机的多机接力信号中继的建模

扩大通信范围:单架无人机的通信能力有限,通过多机接力的方式可以显著扩展通信覆盖范围。提高可靠性:当某架无人机出现故障或电量不足时,其他无人机可以接管其任务,确保通信不中断。适应复杂环境:在山区、森林等复杂地形中,多机接力可以绕过障碍物,建立稳定的通信链路。使用Communications Toolbox中的模块来模拟无线通信链路。例如,可以使用模块模拟噪声信道,或者使用模块计算信号衰减。matlab深色版本。

MHD0815的博客 766

动态生成ABAP程序

 动态生成ABAP程序.参考程序:Tcode ABAPdocu-->BC - ABAP Programming-->The ABAP Programming Language-->Special Techniques-->Generating Programs Dynamically.1.仅动态生成程序代码:   REPORT demo_special_tech

亮剑的专栏 866

ADS新手必看:用Filter DesignGuide快速搞定一个4GHz LC低通滤波器(附保姆级避坑指南)

本文为ADS新手提供了4GHz LC低通滤波器的完整设计流程,重点介绍了如何使用Filter DesignGuide避免参数设置陷阱、正确解读仿真结果以及解决实际电路与理论值的偏差问题。通过真实工程案例,详细讲解了工程创建、Filter DesignGuide配置、电路优化、仿真设置及实际工程中的进阶技巧,帮助工程师快速掌握LC滤波器设计。

weixin_30878501的博客 300

sap 默认屏幕变式_SAP简介

自己总结:SAP是一种系统,是ERP系列比较领先的一种技术。主要应用于管理各公司的财务、原材料,库存商品等。我们专业最近两年也在学习IBM大型机,学了Z/OS系统,JCL、COBOL、CICS语言。感觉它俩很是相似。我觉得应该跟数据处理有关。现在这两种系统都可以兼容很多其他的语言,比如C,java等,又都有事务的概念,主要的语言(ABAP和COBOL)的语言结构和语法在某种程度上也很相似。SAP系...

weixin_39930748的博客 1778

unity shader 后处理实现水墨风格渲染「Low Poly 」变「水墨画 」

水墨风格渲染 这次学校的比赛打算做一个中国古代背景的游戏,所以尝试做了水墨风格的渲染。 主要按以下四步来实现的效果: 根据色调和饱和度调整饱和度。 对图像进行模糊 水墨风格的物体边缘 物体内画笔笔触的模拟 接下来我分别就这四步依次展开说明: 调整饱和度 这里我使用Post-Processing Stack 的Color Grading 来调节饱和度,通过使用Grading Curv...

九级铁甲蛹的博客 1万+

ESP32驱动GC9A01圆形屏实战:Arduino平台LVGL移植与图像显示优化

本文详细介绍了在Arduino平台上使用ESP32驱动GC9A01圆形屏的实战指南,包括硬件连接、LVGL移植与图像显示优化。通过SPI配置、LVGL库安装和双缓冲机制等技巧,帮助开发者快速实现高效显示效果,适用于智能家居控制面板等应用场景。

weixin_29182481的博客 734

ABAP-SAP的LUW和DB的LUW的区别

转载:http://www.cnblogs.com/helileng/archive/2010/10/14/1851409.html LUW是Logical Unit of Work,也就是逻辑工作单元。将系统中连续的变化放做一个逻辑单元里,可以全部执行,也可以全部不执行 一般来说,一个业务事物不能被一个LUW处理,比如说从客户订单到收到的发票问题的过程,就是分为逻...

abbilglf665483的博客 631

【华为OD技术面试真题 - 技术面】- python面试题(1)

华为OD面试技术面准备指南 华为OD面试技术面常见问题解答 华为OD面试技术面经验分享 华为OD面试技术面注意事项 华为OD面试技术面攻略 华为OD面试技术面模拟题目与解析 华为OD面试技术面知识点梳理 华为OD面试技术面常考

算法大师! 5532
上一篇: SAP ABAP 如何读取EXCEL数据到内表
下一篇: SAP OnLine Help(系统帮助)
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值