ABAP 的 CALL FUNCTION 类似于 Java/.NET 中的本地或远程方法调用。
CALL FUNCTION 可以分为四种:
1. Synchronous RFC (sRFC) - 同步调用
2. Asynchronous RFC (aRFC) - 异步调用
3. Transactional RFC (tRFC) - 保证 Transaction 数据一致性的调用
4. Queued RFC (qRFC) - 用一个对列序列化的 tRFC

本文很好地介绍了前面两种,也是最常用的两种。
SAP Help 的相关文档是:

http://help.sap.com/SAPhelp_nw04/helpdata/en/9f/db98ef35c111d1829f0000e829fbfe/frameset.htm
Calling Function Modules

http://help.sap.com/saphelp_nwpi71/helpdata/en/8f/53b67ad30be445b0ccc968d69bc6ff/frameset.htm
CALL FUNCTION

一、从一个程序同步调用其他的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.

ABAP中的同步和异步调用的更多相关文章

  1. 关于js中的同步和异步

    最近看到前端面试问到js中的同步和异步,这个问题该怎么回答? 梳理一下,js对于异步的处理,很多人的第一反应是ajax,这只能说是对了一半. 1.个人觉得,js中,最基础的异步是setTimeout和 ...

  2. spring boot中使用@Async实现异步调用任务

    本篇文章主要介绍了spring boot中使用@Async实现异步调用任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 什么是“异步调用”? “异步调用”对应的是“同步 ...

  3. Promise-js中的同步和异步

    js中的同步和异步   自从读了研后,走上了学术之路,每天除了看论文就是做实验,最后发现自己还是喜欢开发呀,于是我又重回前端啦~ 隔了这么久没学前端,好像很多东西都忘了不少,而且不得不说前端的技术更新 ...

  4. 浅谈WebService开发二(同步与异步调用)转

    上文 <http://www.dotnetgeek.cn/xuexiwebservice1.html>已经跟大家说了,如果创建一个webservice和简单的调用,本文将注重webserv ...

  5. [SAP ABAP开发技术总结]Function远程、同步、异步调用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. C#:Func的同步、异步调用

    using System; namespace ActionDemo { class Program { static void Main(string[] args) { Console.Write ...

  7. C#:Func的同步、异步调用(转)

    实际开发中,对于一些耗时较长的操作,我们往往会将其封装成异步方式调用,以加速系统响应或改善用户体验,下面是一个示例: 有一个现成的类MyMath,里面有一个Add方法: 1 public class ...

  8. .NET通信中的同步和异步处理

    同步与异步的概念: .NET中的通信数据处理有同步和异步之分,我理解的同步过程是接收端接收数据,如果数据没有过来,就一直等着(阻塞过程),直到有数据传送过来可以接收,接下来程序才继续向下进行:异步过程 ...

  9. 让你高效的理解JavaScript中的同步、异步和事件循环

    "同步请求","异步请求"相信这两词在程序猿的世界中频频出现,到底是词性的妖娆,还是撸代码的基础要求,下面直接分享本人学习的好东西,保证让你深入浅出,爽得不要不 ...

随机推荐

  1. WOW.js – 在页面滚动时展现动感的元素动画效果

    在一些网页上,当你滚动页面的时候会看到各式各样的元素动画效果,非常动感.WOW.js 就是一款帮助你实现这种 CSS 动画效果的插件,很容易定制,你可以改变动画设置喜欢的风格.延迟.长度.偏移和迭代等 ...

  2. [Java 基础]字符串

    String类 实例化String对象 String 对象初始化方式有多种. 如下代码中,各种初始化方式的效果是一样的,初始化后,String 对象的内容为 "hello" . p ...

  3. SQL Server时间粒度系列----第3节旬、月时间粒度详解

    本文目录列表: 1.SQL Server旬时间粒度2.SQL Server月有关时间粒度 3.SQL Server函数重构 4.总结语 5.参考清单列表   SQL Server旬时间粒度       ...

  4. 抓取代理IP

    写脚本从指定网站抓取数据的时候,免不了会被网站屏蔽IP.所以呢,就需要有一些IP代理.随便在网上找了一个提供免费IP的网站西刺做IP抓取.本次实践抓取的是其提供的国内匿名代理.可以打开网站查看一下源码 ...

  5. MVC应用程序的生命周期图

  6. Windows Phone 8.1中AppBarToggleButton的绑定问题

    在WP8.1中,应用栏按钮已经可以支持绑定了,而且提供了一种AppBarToggleButton类型,相当于一种开关按钮,这种按钮有一个属性IsChecked,标记是否为选中状态. 于是想当然的,将I ...

  7. 理清那么多个OO(面向对象)

    OOA - Object-Oriented Analysis(面向对象分析) OOT - Object-Oriented Testing (面向对象测试) OOP - Object-Oriented ...

  8. C#编程总结(六)异步编程

    C#编程总结(六)异步编程 1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程计算机或查询数据库.异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某 ...

  9. 单元测试与Nunit的基本使用

    一.单元测试是什么 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,C# ...

  10. Ibatis中常见错误解决方案

    在Ibatis 的sqlMap或者sqlMapConfig配置文件中如果出现以下错误信息: Referenced file contains errors (http://www.ibatis.com ...