2023年11月29日发(作者:)

RFC介绍

对于SAP与SAP系统及SAP与⾮SAP系统之间的连接⽽⾔,远程函数调⽤(Remote Function Call,以下简称RFC)是⼀种标准的通信⽅

式,它可以实现对远程系统中函数的调⽤。

所有RFC类型都通过CPI-C或TCP/IP协议进⾏传输。 它们构成了⼀种Gateway通信。

同步 RFC: sRFC

就和同步调⽤⼀样,参数 DESTINATION在远程系统定义了程序上下⽂。结果是,如果你对⼀个destination重复地调⽤⼀个函数(或者⼀

次性调⽤多个函数),则可以在相同的上下⽂中访问被调⽤函数的全局数据。。

系统会在表ARFCSSTATE和表ARFCSDATA中记录远程连接请求和它们的全部参数值。你可以使⽤事务SM58来查看。当调⽤程序到达

COMMIT WORK语句时,远程调⽤会被转发到给对⽅系统。

在两个COMMIT WORK之间,所有的拥有同⼀个destination的tRFC属于同⼀个逻辑单元(LUW)。

正⽂

⼤概⼋⽉份的时候做过⼀个有关两个SAP系统间成本分摊传输的项⽬,使⽤到了RFC(Remote Function Call)技术。因为之前有着医疗-

CRM相关接⼝开发的经验,以为⾃⼰对RFC很熟悉了,做起来会很顺利,不想还是遇到了些问题。打算整理⼀下有关它们的内容,进⼀步

学习。

本⽂内容的主要来源是SAP的英⽂⽂档。会⽐较偏重基本概念上的东西,偶尔涉及实际的代码、配置。后续可能会根据我的实际使⽤情况更

新更详细的介绍。

CALL FUNCTION Remotefunction STARTING NEW TASK Taskname

DESTINATION ...

TABLES ...

RECEIVE RESULTS FROM FUNCTION Remotefunction ⽤于⼀个⼦程序内接受aRFC的调⽤结果。可以使⽤以下接收参数:

IMPORTING

在两个COMMIT WORK之间,所有的拥有同⼀个destination的tRFC属于同⼀个逻辑单元(LUW)。

tRFC处理流图⽰:

你可以在某些情况下使⽤使⽤tRFC,⽐如,对于需要在事务的不同阶段更新相关数据库表的复杂的处理过程。

tRFC会确保所有的计划更新在程序到达COMMIT WORK语句时被执⾏。

(注意:tRFC的定义中不能有任何EXPORT参数,因为调⽤程序中如果有IMPORT参数,就会导致语法错误。此外,你也不可以对执⾏回

范例:

相关Demo

系统中⼏个标准demo程序

RSTRFCT0

RSTRFCT1

RSTRFCQ4

场景1:tRFC

开发灵活性⼀般⼀般

SAP开发⼈

员的技能要基本ABAP开发技能、SE37开发函数的技能