程序之间的调用

转自【http://blog.chinaunix.net/uid-20692741-id-1892868.html】
一,同步调用

从一个程序同步调用其他的ABAP程序,有2种方式:

1,调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行。如:

CALL FUNCTION <function>

SUBMIT <program> AND RETURN

CALL TRANSACTION <tcode>

使用CALL FUNCTION ‘AAA‘调用FM的时候,相应的FUNCTION GROUP被加载到调用程序所在的internal session。当FM执行完毕,接着执行调用程序。FUNCTION GROUP和其GLOBAL DATA会一直保存在这个internal session直到调用程序结束。当调用程序再次调用这个FM的时候,不会再次加载相应的FUNCTION GROUP。这个FUNCTON GROUP的GLOBAL DATA和第一次调用它时的内容是一样的。

使用SUBMIT <program> AND RETURN或者CALL TRANSACTION <tcode>的时候,实际是插入了一个新的internal session,当被调用的程序执行完毕之后,新插入的internal session会被删除,继续执行调用程序。可以使用leave program语句来结束程序。

2,调用程序被结束,被调用程序开始执行。如:

SUBMIT <program>

LEAVE TO TRANSACTION <tcode>.

使用SUBMIT语句之后,调用程序从所在的internal session中被删除了,被调用的程序被加载到这个internal session。

使用LEAVE TO TRANSACTION <tcode>之后,当前external session中的所有internal session会被删除,并产生一个新的internal session,被调用的tcode会加载到这个新的internal session中。特别要注意的是,使用这个语句之后,ABAP MEMORY会被初始化,意思就是你不可以通过ABAP MEMORY向被调用的tcode传值。

二,FUNCTION MODULE的异步调用

CALL FUNCTION ‘AAA‘ STARTING NEW TASK <taskname>

PERFORMING <subroutine> ON END OF TASK

EXPORTING

.....

使用上面语句之后,AAA和调用其的程序会并行运行。可以在<subroutine>中使用RECEIVE RESULTS FROM FUNCTION ‘AAA‘语句来获得FUNCTION运行的结果。值得注意的是,用STARTING NEW TASK形式的FM的processing type必须要是REMOTE-CAPABLE MODULE.

三,LOGICAL MEMORY

一个用户session可以有多个external session,可以理解你开了几个SAP的窗口,就有几个external session,一般设置为6个。

一个external session里可以有多个internal session(最多20个,想想LIST的LSIND为什么不能超过20)。一个程序一般来说是在一个internal session里处理的。

可以用ABAP MEMORY(EXPORT/IMPORT)和SAP MEMORY(GET/SET)在不同的程序之间传递数据。

一个用户session有一个SAP MEMORY,这个用户session里所有session都可以访问SAP MEMORY,但是SAP MEMORY一般用于不同external session间的internal session传值。

每个external session包含一个ABAP MEMORY,属于这个external session的internal session都可以访问这个ABAP MEMORY,ABAP MEMORY适合在一个external session的不同internal session间传值。

当external session终止的时候,自动会释放其ABAP MEMORY。

时间: 2024-11-04 23:05:11

程序之间的调用的相关文章

sap abap程序之间的调用

一,同步调用从一个程序同步调用其他的ABAP程序,有2种方式: 1,调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行.如:CALL FUNCTION <function>SUBMIT <program> AND RETURNCALL TRANSACTION <tcode> 使用CALL FUNCTION 'AAA'调用FM的时候,相应的FUNCTION GROUP被加载到调用程序所在的internal session.当FM执行完毕,接着执行调用程序.FUNC

一个实现浏览器网页与本地程序之间进行双向调用的轻量级、强兼容、可扩展的插件开发平台—本网通

通过本网通插件平台可实现在网页中的JavaScript脚本无障碍访问本地电脑的硬件.调用本地系统的API及相关组件,同时可彻底解决ActiveX组件在Chrome.FireFox.Opera.Edge.Safari等浏览器各版本的兼容使用问题. 系统兼容性:1.全面兼容Windows XP.Vista.7.8.10等各版本桌面系统:2.全面兼容Windows Server 2003.2008.2012.2016等各版本服务器系统:3.Linux.Mac.安卓等系统理论上也是可行的,欢迎熟悉这些平

android 防止程序之间互相访问(exported属性)

程序A如果不想被其他的程序调用自己的activity,service,或者是receiver的时候,只要在AndroidManifest.xml里面添加exported属性,便能使其他的程序不能调用自己. AndroidManifest.xml <activity ... android:exported="false" /> <service ... android:exported="false" /> <receiver ....

深入浅出web服务器与python应用程序之间的联系

简单来说,Web服务器是在运行在物理服务器上的一个程序,它永久地等待客户端(主要是浏览器,比如Chrome,Firefox等)发送请求.Web 服务器接受 Http Request,返回 Response,很多时候 Response 并不是静态文件,因此需要有一个应用程序根据 Request 生成相应的 Response.这里的应用程序主要用来处理相关业务逻辑,读取或者更新数据库,根据不同 Request 返回相应的 Response.两者之间的桥梁就是WSGI. 一直喜欢研究比较底层的技术,

http程序接口、调用(最入门级,文末附Demo)

HTTP协议简介 既然是基于HTTP协议开发,那么就首先要了解下HTTP协议的相关内容- 在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层.浏览Web时,浏览器通过HTTP协议与Web服务器交换信息.这些信息(文档)类型的格式由MIME定义. HTTP协议具有以下的特点: HTTP按客户/服务器模式工作HTTP支持客户(一般情况是浏览器)与服务器的通讯,相互传输数据.HTTP定义的事务处理由以下四步组成: 客户与服务器建立连接: 客户向服务器提出请求: 如果请求被接受

[SAP ABAP开发技术总结]ABAP程序之间数据共享与传递

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 19.             数据共享与传递... 222 19.1.         程序调用.会话.SAP/ABAP内存 关系... 222 19.2.         ABAP Memory数据共享... 224 19.2.1.     EXPORT. 224 19.2.2.     IMPORT. 226 19.2.3.     DELETE. 227 19.3

Android Content Provider在应用程序之间共享数据的原理分析

本文参考Android应用程序组件Content Provider在应用程序之间共享数据的原理分析http://blog.csdn.net/luoshengyang/article/details/6967204和<Android系统源代码情景分析>,作者罗升阳. 0.总图流程图如下: 总体类图: 1.MainActivity进程向AriticlesProvider进程发送IContentProvider.QUERY_TRANSACTION 如图:第一步 ~/Android/framework

Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过 Content Provider组件来实现.那么,Content Provider组件又是如何突破应用程序边界权限控制来实现在不同的应用程序之间共享数据的呢?在前面的文章中,我们已经简要介绍过它是通过 Binder进程间通信机制以

服务之间的调用为啥不直接用 HTTP 而用 RPC?

什么是 RPC?RPC原理是什么? 什么是 RPC? RPC(Remote Procedure Call)-远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.比如两个不同的服务 A.B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好. RPC 的出现就是为了解决这个问题. RPC原理是什么? 服务消费方(client)调用以本地调用方式调用服务: cl