开发基础 报表教程 数据字典 对话编程 表单打印 增强出口 SAP接口 S/4 HANA
实战案例 实战笔记 资料下载 CRM
问答互助 会员分享 俱乐部 广告区
论坛指南、建议和投诉
Twilight发表于 2014-03-01 23:07Twilight 最后回复于 2014-03-01 23:07 [复制链接] 5169 0
使用道具 举报
Twilight
管理员
发表回复 回帖后跳转到最后一页
SAP中的同步通信是一次性的功能调用,其前提条件是在调用远程功能时(或发送请求时),接收系统(服务器)必须是活动的,可以接收请求并进行进一步的处理(图1-4)。同步调用的优点是可以即时将数据返还给发送系统:其缺点为在系统对话时必须确保两个系统都处于活动状态,否则对话会出现严重中断,影响业务应用的处理过程。例如,在本地系统中在线创建一个采购订单,但是在保存该订单之前,需要远程访问中心财会系统,以进行预算检查。这个过程要求即时的检查结果,因而需要通过同步调用实现。如果中心财会系统暂不可用,采购订单也将无法创建。
图1-4 SAP中的同步通信
SAP中的异步通信的特点是接收系统并不需要在远程功能调用时处于活动状态.该系统可以滞后接收并处理该调用(图1-5)。如果系统不可用,已发送的调用请求将保存在发送系统的输出队列中,并每隔一段时间反复进行调用尝试,直到接收系统对调用响应为止。异步通信的优点是不需要接收系统随时可用,如系统维护、升级等情况均不影响请求发送系统的业务处理:但该模式不适用于要求即时响应的处理过程。一个异步通信的示例为:在系统中向外部供应商发出一个采购订单,如果该供应商系统暂时不可用,则该订单暂时置于发送的请求队列,每隔一段时间重复发送,直到供应商收到该订单为止。这一过程可以以后台作业形式完成。
图1-5 SAP中的异步通信
以上述两种基本通信模式为基础,SAP系统中的RFC过程扩展为下述几种不同的模式。
同步RFC(sRFC,synchronous RFC)是RFC的晟原始版本,其执行基于同步通信模式,远程调用时,通信双方的系统必须均可用,调用程序等待远程功能处理结束并返回结果。
在异步RFC(aRFC,asynchronous RFC)中,执行并不依赖于RFC服务器系统的可用性。被调用的远程功能启动之后,调用程序继续运行,远程功能和调用程序处理相互分离。远程功能的结果可以稍后接收。
事务性RFC(tRFC,transactional RFC)广义上也属于异步通信模式,调用程序不接收调用结果而继续运行,但并不立即启动远程功能。相关联的RFC可捆绑至一个事务(即逻辑工作单元LUW,logical unit of work)中,然后通过事务性处理,将LUW内部各个调用中的更新操作作为整体提交或全部取消,且保证所有操作只执行一次,以确保RFC功能的可靠和安全。
队列RFC(qRFC.queued RFC)是事务性RFC功能上的进一步扩展,在事务性RFC中,存在多个LUW时,这些LUW的执行次序是无法确定的。如果要确保各个LUW都按照指定的顺序执行,可以通过队列RFC对事务性RFC进行序列化。
并行RFC(pRFC.parallel RFC)实质上为异步RFC,在功能上实现多个SAP系统或同-SAP系统内部不同应用服务器间,以及应用服务器内部各个工作过程的并行处理。
上述模式中的前三种是RFC的基本模式,而队列RFC和并行RFC可以视为是基本模式的扩展或衍生。