有关SAP RFC连接的相关知识点

一、RFC变体

    • 同步RFC:SRFC

同步RFC是最基本的RFC形式,在SRFC调用中,调用这会等待远程被调用者的处理过程。

语法形式:

CALL FUNCTION func DESTINATION dest.
    • 异步RFC:ARFC

异步RFC(Asynchronous RFC,aRFC)类似于tRFC,用户在继续调用会话之前,不需要等待它们的完成。

aRFC和tRFC之间也存在几点不同的地方:

  • 当调用者开始一个aRFC的时候,被调用的服务器必须可以接收请求。aRFC的参数不会记录在数据库中,而是直接发送给对方服务器。

  • aRFC允许用户与远程系统进行交互式对话。

  • 调用程序可以从aRFC接收结果。

语法形式:

CALL FUNCTION Remotefunction STARTING NEW TASK Taskname

DESTINATION ...

EXPORTING...

TABLES ...

EXCEPTIONS...
    • 事务RFC:tRFC

在使用事务RFC( transactional RFC,tRFC)的时候,被调用的函数模块在被调用系统中正好运行一次(Exactly Once)。

系统可用性:如果远程系统不可用,SAP系统会将报表RSARFCSE计划为后台作业,并将相关的事务ID作为变式,再进行处理。这个报表程序会重复地被调用,直到它成功地连接对方系统为止。

tRFC的缺点:

  • tRFC独立地处理所有LUW。根据激活的tRFC数量,程序有可能会显著地降低调用系统和被调用系统的性能。

  • 此外,在应用中定义的LUW的调用顺序是不能得到保持的。因此无法保证事务会按照应用期望的顺序运行。tRFC唯一能保证的只有:所有LUW都会或早或晚地被传输。

    • 队列RFC:qRFC

队列RFC(queued Remote Function Call,qRFC)是tRFC的一个扩展。它允许你将多个tRFC调用序列化为一个队列。

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

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 ... 
    • 本地数据队列:LDQ

本地数据队列(Local Data Queue )是一种特别的RFC通信。在这种应用情况下,系统不会主动发送数据。相反,根据拉取规则,系统会把数据存储在本地,直到被外部系统调用(比如移动设备)。

LDQ可以代替先前由qRFC在不发送场景下提供的功能(qRFC No Send)。相比之下它提供了更有效率的数据模型。

参考:SAP RFC介绍

二、SM59远程连接(RFC connection)类型含义

  • 类型I(内部连接):与当前系统连接到同一数据库的ABAP系统,需要填入hostname。这种类型的条目都是预定义的且无法修改。条目名称与事务SM51中所显示的应用服务器名相同。

  • 类型3(ABAP连接或称R/3连接):创建时必须给出主机名和通信服务。如果需要,也可以指定登录信息。还可以选择负载平衡选项。

  • 类型2(R/2连接):只需给出主机名,所有通信信息都已在存储在SAP网关的sideinfo表中,如果需要,也可以指定登录信息

  • 类型T:定义通过TCP/IP并使用RFC库或SAP连接器的外部程序连接。该类型分为启动和注册两种连接模式。如果设为启动模式,必须指定要启动的主机名和程序路径名;如果设为注册模式,则需要指定一个RFC服务器程序(RFC 注册程序)。

  • 类型L(逻辑目标):该条目不指定连接,而是参照物理目标生成。也可以参照其他逻辑目标生成。这类条目通常除包含所参照的条目中的信息外,还添加额外信息。一般情况下,所参照的条目会给出主机信息,类型L的条目本身给出登录数据。(通常工作流系统定制过程中需配置的RFC目标即为该类型的逻辑目标)

  • 类型S:定义通过SNA或APPC启动的外部程序连接。

  • 类型X:指定安装了特殊ABAP设备驱动程序的系统。在创建类型X条目时,必须给出ABAP设备驱动程序名。

  • 类型M:定义通过CMC(即协议X.400)到ABAP系统中异步RFC连接。

  • 类型H:定义ABAP系统到本地的HTTP连接

  • 类型G:定义外部系统到本地的HTTP连接

参考:RFC类型含义

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值