开发基础 报表教程 数据字典 对话编程 表单打印 增强出口 SAP接口 S/4 HANA
实战案例 实战笔记 资料下载 CRM
问答互助 会员分享 俱乐部 广告区
论坛指南、建议和投诉
Twilight发表于 2014-03-01 22:55FISH_HAPPY 最后回复于 2017-10-26 13:36 [复制链接] 6049 1
使用道具 举报
Twilight
管理员
发表回复 回帖后跳转到最后一页
1、RFC概述
RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议。简单地说,RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAP ABAP系统。这种远程功能调用也可在同一系统内部进行(如本地SAP系统内的远程调用):但通常情况下,调用程序和被调用程序处于不同系统。
2、 RFC基础知识
SAP所提供的外部接口包括程序通信接口(communication interface)、文件I/O接口(file I/O interface)以及数据接口(data interface)。数据接口用于在系统内部对程序运行时数据和数据库数据进行传递,其实现技术包括批输入( batch input)、SAP SQL等。程序通信接口和文件I/O接口则是与其他系统进行数据交换的通路。文件I/O实现文件中数据和运行时数据间的交换(即将数据从文件上载到程序中,或将运行时数据。下载至文件)。RFC位于程序通信接口中,以实现外部程序对SAP系统内部数据的访问。RFC在SAP系统架构中的位置如图1-1所示。
RFC是基于CPI-C实现的。CPI-C是比RFC更底层的数据交换接口,它基于TCP/IP或LU6.2协议,其使用比RFC更为复杂,一般情况不直接使用。RFC接口在实现逻辑上位-CPI-C的上层,所-RFC相关的调用都将转换为CPI-C的调用完成,但作为程序设计人员则不必了解CPI-C的实现细节。
图I-I RFC接口在SAP系统架构中的位置
3、RFC调用过程
在系统间通信过程中,需区分发送系统和接收系统。RFC调用请求从发送系统(调用系统)中传至接收系统(被调用系统,也称远程系统或目标系统),如图1-2所示,其中发送请求的系统在通信过程中又称为RFC客户端,通信另一方则称为RFC服务器。RFC客户端发起远程功能调用以执行RFC服务器提供的功能。
图1-2 RFC客户端与RFC服务器及调用过程
其中,调用系统和被调用系统均可以是SAP系统或非SAP系统,此外还可以在SAP系统内部将特定应用服务器指定为目标系统。
4、RFC通信的情况
根据通信方向和系统类型,共有如下3种RFC通信:
在SAP系统之间,两个ABAP程序通过RFC接口进行通信,如图1-3中所示的调用l,SAP系统A调用SAP系统B中的功能模块。B中被调用的SAP功能模块必须支持远程调用(remote-enabled).这样的SAP功能模块称为RFM。
图1-3 RFC通信(调用)类型
SAP系统和外部(非ABAP)系统进行的RFC通信,则为ABAP程序和其他语言(如C、C++、Visual Basic、Java或.NET等)编写的程序的相互调用。如图1-3中的调用2,SAP系统A的程序调用非SAP系统C的C语言例程(远程功能);义如调用3,非SAP系统D中例程调用SAP系统B中的RFM,这些都是SAP与外部系统的RFC通信。
在与其他语言的程序进行通信时,SAP将为各种语言及相关的操作系统提供RFC库(其中包含RFC API)及SAP连接器,以实现RFC接口,如:
上述每一种RFC库或SAP连接器均有多种操作平台相关版本,适用于MS Windows、Unix(RS/6000、SUN Solaris、HP-UX)、Linux、z/OS (OS/390)以及OS400等系统。
对于SAP系统中的RFC调用者而言,远程功能是SAP系统(图1-3调用1)或外部程序(图1-3调用2)提供的,无论从语法还是功能上来说,都是毫无差异的。
5、RFC接口系统
SAP调用远程功能的能力是通过RFC接口系统(RFC interface system)实现的。根据调用方向的不同(SAP系统调用其他模块或其他系统调用SAP模块),RFC接口提供以下两种服务。
(1)ABAP程序的调用接口
任何ABAP程序都能使用CALL FUNCTION…DESTINATION语句调用远程功能。DESTINATION参数告诉SAP系统被调用的功能将在调用者之外的系统上运行,通过RFC接口与远程系统进行通信。如果远程功能来自SAP ABAP系统,则必须是实际的功能模块,并在功能库中注册为“支持远程调用”,通信双方都通过ABAP的RFC接口实现。
(2)非SAP ABAP程序的调用接口
在RFC的实现过程中,如果调用或被调用一方是非ABAP程序,则非ABAP程序必须以特定规格进行编程,以确保它可作为RFC通信中的伙伴方。SAP系统为外部程序提供RFC支持接口(RFC-supported interface)和GUI支持接口(GUI-supported intcrface)。这样,在非SAP系统中,外部程序就能调用并执行SAP RFM:反过来,SAP中的ABAP,程序又能通过该支持接口使用外部程序提供的功能。
调用时,RFC接口的具体功能包括: