SAP RFC介绍:关于sRFC,aRFC,tRFC,qRFC和bgRFC

SAP RFC介绍:关于sRFC,aRFC,tRFC,qRFC和bgRFC

大约八月份之时段做过一个关于两单SAP系统中资金分担传输的路,使用到了RFC(Remote
Function
Call)技术。因为前面所有医疗-CRM相关接口开发的涉,以为自己对RFC很熟稔了,做起来会非常顺畅,不思还是撞了把问题。打算整治一下有关其的情节,进一步学习。

正文内容的最主要缘于是SAP的英文文档。会于讲究基本概念上之事物,偶尔涉及实际的代码、配置。后续可能会见基于自身的实际使用状态更新更详细的介绍。

 

本文链接:http://www.cnblogs.com/hhelibeb/p/8066753.html

总述

对此SAP与SAP系统以及SAP与非SAP系统里面的连日而言,远程函数调用(Remote
Function
Call,以下简称RFC)是平等种标准的通信方式,它可实现对长途系统受函数的调用。

持有RFC类型都由此CPI-C或TCP/IP协议进行传输。
它们组成了一样种Gateway通信。

正文是针对具备RFC变体的讲述,它们有着不同之特色与称之采用状况。

同步RFC:sRFC

及步RFC(Synchronous
RFC,sRFC)是最最核心的RFC形式。在sRFC调用中,调用者会等待远程被调用者的处理过程。

它的语法形式是:

CALL FUNCTION func DESTINATION dest. 

卓越的以状况包括:

  • 销售:为歧体系创造市订单(central sales)。
  • 销售:对于有查询,在供应商系统里实施一个于指定物料的可用性检查。
  • 物品管理:在另一个系里对某个物料订单执行来源判断。
  • CRM/SRM:对SAP后端平系统倡导某个物料的可用性检查。
  • CRM/SRM:在SRM组件中开创市订单时,在先生集中核算中吗卿的基金中心开展预算检查。
  • 先生:向会计集中核算体系要一个成本中心清单。
  • BW:调用BW组件(商业信息仓库)来呼吁一个特地之evaluation。

异步RFC:aRFC

异步RFC(Asynchronous
RFC,aRFC)类似与tRFC,用户在此起彼伏调用会话之前,不需拭目以待她的落成。不过,aRFC和tRFC之间吧是几乎接触不同的地方:

  • 当调用者开始一个aRFC的时节,被调用的服务器必须得接到请求。aRFC的参数不会见记录在数据库被,而是径直发送给对方服务器。
  • aRFC允许用户和远程系统进行交互式对话。
  • 调用程序可以由aRFC接收结果。

若得在当您需要树立和一个远端系统的连续、但是期望当调用RFC后未期待等待结果而是希望继续处理时利用aRFC。aRFC也得以发送给同样的体系。在这种景象下,系统打开一个新的对话(窗口)。你可于调用对话与让调用会话间切换。使用下的讲话开启一个aRFC:

CALL FUNCTION Remotefunction STARTING NEW TASK Taskname

DESTINATION ...

EXPORTING...

TABLES ...

EXCEPTIONS...

 RECEIVE RESULTS FROM FUNCTION Remotefunction 用于一个子先后外接受aRFC的调用结果。可以采取以下收取参数:

  • IMPORTING

  • TABLES

  • EXCEPTIONS

附加项KEEPING
TASK
阻碍连接在收取处理结果后关。相关的长距离上下文(滚动区域)保持得选用的状态,直至调用者终止连接。

再度多关于aRFC的音讯可自以下地方获得:

  • aRFC的调用属性

  • 打aRFC接收结果

  • 保远程上下文

  • aRFC的并行处理

至于aRFC变体的描述:

  • CALL FUNCTION – STARTING NEW
    TASK

  • RECEIVE

  • WAIT
    UNTIL

  • RFC示例

事务RFC:tRFC

以以事务RFC( transactional
RFC,tRFC)的当儿,被调用的函数模块于受调用系统面临恰恰运行一软(Exactly Once)。

远端系统非待以RFC客户端程序运行tRFC的时候可用。tRFC组件将给调用的RFC函数和连锁数据存储在SAP系统的数据库里,包含一个唯一的作业标识符(transaction
identifier,TID)。

若果调用发送了,接收系统也是宕机状态,调用会保留在地头队列中一段时间。调用对话程序可以以非等待远程调用成功/失败的事态下继续运行。如果收到系统于一段时间后仍不可用,调用将给计划吗后台作业运行。

tRFC使用后缀IN BACKGROUND TASK.

即跟旅调用一样,参数
DESTINATION在远距离系统定义了次及下文。结果是,如果你针对一个destination重复地调用一个函数(或者一次性调用多单函数),则可以在同等之内外文中访问为调用函数的大局数据。。

网会在表ARFCSSTATE和表ARFCSDATA中记录远程连接要与她的百分之百参数值。你可利用事务SM58来查。当调用程序到达COMMIT
WORK
言时,远程调用会吃转发到让对方系统。

在两个COMMIT
WORK
里,所有的有着与一个destination的tRFC属于同一个逻辑单元(LUW)。

tRFC处理流图示:

澳门新葡亰官网 1

君可以某些情况下利用使用tRFC,比如,对于需要在作业之不等阶段更新相关数据库表的纷繁的处理过程。

tRFC会确保所有的计划更新在次到达COMMIT WORK语句时叫实践。

(注意:tRFC的概念着莫可知闹任何EXPORT参数,因为调用程序中使来IMPORT参数,就见面造成语法错误。此外,你为无可以本着实践回调的主次开展异步调用)

系统可用性:

而远程系统未可用,SAP系统会将报表RSARFCSE计划吗后台作业,并拿相关的事情ID作为变式,再开展处理。这个表格程序会再度地给调用,直到她成地连对方系统了。

当为计划吧后台作业时,RSARFCSE自动地以一个时空间隔运行(默认是各级15分钟运行一蹩脚,最多尝试30涂鸦)。你可经过提高程序SABP0000和SABP0003来自定义该时间间隔。

由此SM59安排destination,选择一个destination并且选择
编辑->TRFC选项,在这边定义连接尝试次数上限和再次连接尝试的时日距离。

澳门新葡亰官网 2

万一在品尝指定的次数后依旧不足抵达相应的系,系统会停调用RSARFCSE,并勾画副状态CPICERR至表ARFCSDATA中。在另外一个指定的岁月后(默认是8天),在表ARFCSSTATE内之条条框框也会于去除。当然为可以定制者时,或者手动在SM59起先相应的事情条目。

tRFC的缺点:

  • tRFC独立地拍卖所有LUW。根据激活的tRFC数量,程序来或会见明显地降低调用系统及吃调用系统的习性。
  • 另外,在运用被定义之LUW的调用顺序是不能够得保持的。因此无法确保事务会按照用期望之逐一运行。tRFC唯一能保证的只有:所有LUW都见面或早或晚地于传。

可当此处翻tRFC语句之描述:

CALL FUNCTION IN BACKGROUND
TASK

队列RFC:qRFC

列RFC(queued Remote Function
Call,qRFC)是tRFC的一个扩张。它同意你拿大半个tRFC调用序列化为一个行列。

qRFC调用会首先被函数模块TRFC_SET_QUEUE_NAME进行序列化处理,然后这些调用被一个tRFC进行实际的dispatch。

qRFC可以当他往行(由调用系统序列化)处理,或者是内为行(由叫调用系统序列化)。

* *

以下是三种业务数据传的面貌(为什么图片被的契是德文?):

澳门新葡亰官网 3

场景1:tRFC

该场面适用于数交互间单独发送的动静。系统1蒙受是一个调用应用(client)使用tRFC连接系统2受到的给调用应用(r
server)。在该场景中,数据由tRFC传输,意味着发送至对象体系的函数模块调用会为包单独运行一差。你免可以定义函数模块运行的一一及时空。如果传输过程被发生了左,系统会计划一个后台作业,在15分钟后又发送函数模块调用。

场景2:带有外往行的qRFC

于该场景中,发送系统应用一个生动活泼队列来序列化被发送的多寡。这代表发送系统的外向队列包含着在依靠关系的函数模块调用。当数码发送时,会保持确定的顺序,并且调用会以正好同一不成都有序的方式(exactly once in order)发送给目标体系。

顾:目标体系处理常莫待改qRFC的逐条,但是,它必须开tRFC功能。

气象3:带有内于行的qRFC(以及活跃队列)

在这个状况下,不仅发送系统(client)有他往行,目标体系啊闹内为行。如果qRFC存在有外于行,这也意味着它们在殡葬系统上肯定存在外往行。内为行在一段时间里只能处理系统资源允许处理的函数模块调用数量。它好防止服务器被一个客户端阻塞。只有以劳务体系独立在一个内往行的状况是未可能是的,因为用在客户端系统是外望行,来设置顺序并堵住单独的行使阻塞客户端系统的合办事历程。

再多系消息可见:

  • Queued Remote Function Call
    (qRFC)

后台RFC:bgRFC

使用

bgRFC(Background Remote Function
Call)允许吃调用程序稍晚一些接收数据,而非是一同接收。接收数据的时,需要保证数据只现出平糟糕还无序(
transactional) 、或者只出现同涂鸦都有序(queued)。

利用bgRFC进行异步调用,会来如下优势:

  • 以跟一个SAP系统内(同一个系统ID,同一个client):解耦,同时提供了连行化能力。负载会分布在该系统的可用之应用服务器上。这个bgRFC场景被用作一个外为程序。

  • 于简单单远程SAP系统内:解耦,并且通过可以兑现用或工作场景的物理细分。异步调用的结果是,调用者和受调用者的应用服务器的关键特性差异可以赢得平衡。记录工作于调用系统被好。这个情景是一个活蹦乱跳程序。

  • 星星独程序成为外-内程序:该措施得以博全套优化增选的优势。不过,如果您挑选了这么做,数据会让记录点滴浅,一破是调用者(外向处理)、一糟是给调用应用(
    内向程序的出格类型)。这招数据库、应用服务器会生出格外的承担。

bgRFC使用队列组织不同之调用。当一个调用同时为停在差不多个队的时光,系统会为这些队列创建依赖。这带来了一个同步点(synchronization
point),类似于锁。

如若一个调用处于依赖队列中,那么当且单独当它坐落依赖队列的顶上层时,它才见面让拍卖。

对于和一个destination,不得以用bgRFC和tRFC、qRFC结合起来以。不过,对于不同的destination,你得定义你想使用的报道类。

语法:

 CALL FUNCTION 'function_name'

IN BACKGROUND UNIT unit

          EXPORTING ... 

 

集成

自qRFC转换为bgRFC的应用程序,必须支持创造qRFC中的队与bgRFC中的队中的旋链接的迁徙方案。通过这样的方案,可以管对的序列顺序,即便是在自qRFC变为bgRFC的随时。

只顾:从bgRFC改回qRFC是勿容许的。

每当SAP NetWeaver Release
7.11及再强的版本及,bgRFC也得同basXML(二进制ABAP序列化XML)通信协议一起以。

架构

俗的qRFC模型只有当数被RFC调度程序处理的时光才探测各个独立单元中的依赖性关系。对于每个destination,外向调度程序还见面敞开一个调度程序来处理者destination的多少。

与的相对的是,bgRFC的因关系在数码存储的时光便控制了。通过这样做,RFC调度程序可以一次性找到有的需吃拍卖的单元,并且通过极端小之大力(minimum
effort)就可以找到其中间的依赖性关系。在囤数据的时刻需要交给的附加努力,则可以充分十分程度达由于数据库设计中的大效率算法和优化补偿。

每个客户端定义一定数量的外向计划,并且并行处理队列负载,虽然目标体系的负载会在一个较短的岁月间隔后被确定,但是呢因此会越规范。

单元及排澳门新葡亰官网的删除程序

暨风俗习惯的先后不同,如果出另外单元或队列被删,依赖还会保持。因为单元会被优先打及号,并且在及时下只是被调度程序删除。

澳门新葡亰官网 4

苟图,在剔除了Unit4之后,Unit6只会以Unit3之后运行,因为Unit4只有在调度程序处理过Unit3之后才会叫删。如果你剔除掉queue2,那么会发生下面的情形:

澳门新葡亰官网 5

Unit6会面于Unit2事后运行,所有选定的unit都见面给调度程序删除。

注意:删除队列或者单元总是有高风险的。在咱们的事例里,它见面造成Unit6遇到错误,或者造成目标体系的数据库不平等,因为其的前提Unit4因为于去除而从未运行。

Gateway:Gateway是别一个神秘的特性瓶颈,在bgRFC中,它为获了优化。bgRFC中的新的概念是碰头调剂在相同光应用服务器上而运转的活跃调度程序的极特别数额,也会见调剂全部RFC调度程序可用之绝大连接数。这个范围会维护地方的Gateway使之不至于过载。

每个发送系统的彼此的活跃调度程序数量与其的不过大连接数也是可安排的,因此对于destination的Gateway也存在过载保护。

属性的震慑:新bgRFC实现的优化在青出于蓝负荷、多因之景下特别明白。首坏运行的时光,线性对数可伸缩性(a
linear logarithmical
scalability)的RFC数据处理成可能(视系统兼容性而定)。

函数队排的业务特性使得,在拍卖单独的单元时,bgRFC不极端容易获取有目共睹的性能提升,但是在使还多或又快的硬件的时,则可显著提升吞吐量。限制因素会是数据库的属性和这些单元的处理速度。

此外,新的API也是优化的等同片段。一些剩下的函数被移除,某些老的API也不再使用。这使相关的干活更是平整和有效率,减少支持组织及出团队的工作量。

重新多信息:

重复多关于bgRFC的信息, 请看:

  • bgRFC:
    配置

  • bgRFC:
    管理

  • bgRFC:
    编程

当地数据列:LDQ

本地数据列(Local Data Queue
)是一致种植专门之RFC通信。在这种利用情况下,系统非见面积极发送数据。相反,根据拉取规则,系统会管数量存储在地方,直到于外表系统调用(比如移动设备)。

LDQ可以替原先出于qRFC在不发送场景下提供的意义(qRFC No
Send)。相比之下它提供了再度有效率的数据模型。

重多内容:

Local Data Queue
(LDQ)

名词对照

scheduler:调度程序

outbound  queue:外往行

inbound queue:内往行

 

连带文章:ABAP
RFC远程调用

 

 

admin

网站地图xml地图