SAP 高级应用开发 学习笔记 1 -- RFC
来源:互联网 发布:linux apache配置php7 编辑:程序博客网 时间:2024/05/17 20:11
RFC : Remote Function Call 远程功能调用, 是SAP系统之间以及SAP与外部系统之间的通信的基本接口技术
RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAP ABAP系统
SAP 外部接口:
1、程序通信接口
2、文件I/O接口
3、数据接口
数据接口:技术实现BDC、SAP SQL
程序通信接口和文件I/O接口是与其他系统进行数据交换的通路
RFC是基于CPI-C实现的。
RFC的调用过程:
1. 在系统间通信过程中,需要区分发送系统和接受系统。
2. RFC调用请求从发送系统中传至接收系统
发送请求的系统在通信过程中称为RFC客户端,通信另一方则称为RFC服务器
1. RFC客户端发起远程功能调用以执行RFC服务器提供的功能
2. 调用系统和被调用系统均可以使SAP系统或非SAP系统
RFC通信方式:
1. 两个独立的SAP系统之间通信
2. SAP系统作为调用系统,与外部远程系统(非SAP ABAP系统)通信
3. 外部系统作为调用系统,与SAP系统通信
在SAP系统之间,两个ABAP程序通过RFC接口进行通信
1. 系统A调用SAP系统B中的功能模块
2. B系统中被调用的SAP功能模块必须支持远程调用,该SAP功能模块称为RFM
在于其他语言的程序进行通信时,SAP将为各种语言及相关的操作系统提供RFC库及SAP连接器,以实现RFC接口,如:
- 为C 和C++提供的RFC SDK
- 为Java 提供的Java连接器 JCo
- 为.NET提供的.NET连接器 NCo
SAP调用远程功能的能力是通过RFC接口系统(RFC interface system)实现的。
RFC接口提供以下两种服务:
- ABAP程序的调用接口
CALL FUNCTION . . . DESTINATION, 若远程功能来自SAP ABAP系统,则FM必须是实际的功能模块,并支持RFC远程调用
- 非SAP ABAP 程序的调用接口
SAP系统为外部程序提供RFC支持接口和GUI支持接口,这样非SAP系统中,外部程序就能调用并执行SAP RFM,反之亦然
RFC调用时,RFC接口具体功能包括:
- 登录并推出远程系统,并进行权限检查
- 调用并管理远程系统会话所需的通信进程
- 自动将实参转换成远程系统所需的格式,RFC接口支持所有ABAP数据类型
- 处理通信过程中的错误
- 负责远程调试的实现
RFC通信模式:
- 同步通信,双方时钟允许误差较小,一次性功能调用
- 异步通信,双方时钟允许存在一定误差
- 差异在于调用系统是否需要立即接收返回结果
SAP系统中的RFC过程扩展下述几种不同模式:
- 同步RFC
- 异步RFC
- 事务性RFC,广义上也属于异步通信模式
- 队列RFC,对事务性RFC功能的进一步扩展
- 并行RFC,实际上是异步RFC
支持远程调用的功能模块 RFM:
- 在创建RFM功能模块时,需要在指定属性中的processing type选项设定为remote-enabled module。
- 声明参数时,不能在运行时确定参数类型,必须在参数定义时,参照数据字典类型进行声明。
- 必须指定为值传(pass value),对于表类型参数,系统也隐式进行值传递
- 格式转换,若传入参数的长度较短,RFC将在后面补充空格,意味着,对于字符类型数据,长度可以不必完全一致,但是调用方实参不应大于被调用方形参的定义的长度。
- 异常处理,可在远程功能中进行异常的抛出,在程序中的异常出现之处通过raise语句实现,但是基于ABAP类的异常不能从远程功能 调用过程中抛会给调用系统,因此需要避免使用
- RFC接口预设的系统异常类型:
SYSTEM_FAILURE,报告远程系统中的所有失败和系统问题
COMMUNICATION_FAILURE,若不能建立或通信中连接中断,抛出异常
系统将自动地抛出以上2种异常,不必再程序代码总进行显示处理,调用RFC功能时必须接收,否则出现异常时可能引起系统运行时SHORT DUMP中断,所有其他不可知类型的异常指定为OTHERS类型。
调用SAP标准RFM
- 功能模块的调用通过Call Function语句实现,远程功能调用,可通过在Call Function语句中添加Destination子句完成
- Destination后面接的是远程目标名称,该目标在SM59中设定。
- 可以在远程调用时直接指定当前系统的应用服务器作为RFC目标,格式为<hostname>_<sysid>_<sysnr>,<hostname>为主机名,<sysid>为SAP系统名,<sysnr>为系统编号。
- 通过SM51查看当前SAP系统中活动的应用服务器
例:调用SAP 标准RFM:SXPG_COMMAND_EXECUTE,通过RFC调用时可以运行本地或其他SAP系统中的外部命令
本例子中:
- 远程目标是直接根据应用服务器名称指定的,并没有通过SM59进行定义,因为远程目标是同一SAP系统的其他应用服务器,若远程目标是其他SAP系统,则必须在SM59中进行定义。
- 程序所执行的外部命令Z-GET-DIR的功能,是查看一个特定应用服务器中的目录列表。在SM69中设定。
- SAP 高级应用开发 学习笔记 1 -- RFC
- SAP 高级应用开发 学习笔记 1 -- RFC NO.2
- SAP 高级应用开发 学习笔记 1 -- RFC NO.3
- SAP 高级应用开发 学习笔记 1 -- RFC NO.4
- SAP 高级应用开发 学习笔记 1 -- RFC NO.5
- SAP 高级应用开发 学习笔记 1 -- RFC NO.6
- SAP 高级应用开发 学习笔记 1 -- RFC NO.7
- SAP 高级应用开发 学习笔记
- 《SAP高级应用开发》---Idoc学习笔记
- 《SAP高级应用开发》---Idoc学习笔记
- SAP 高级应用开发 学习笔记 2 -- BAPI
- SAP 高级应用开发 学习笔记 2 -- BAPI
- MULE 连接sap rfc接口开发二:调用rfc接口
- Android高级应用开发(基础篇) - stage1 - 学习笔记
- Android高级应用开发(基础篇) - stage2 - 学习笔记
- Android高级应用开发(基础篇) - stage3 - 学习笔记
- Android高级应用开发(基础篇) - stage4 - 学习笔记
- Android高级应用开发(基础篇) - stage5 - 学习笔记
- 未来五年程序员应当具备的十项技能
- Linux系统UID和GID详解
- access事务插入多条记录
- http get 命令
- 夹缝中生存的“技术支持”
- SAP 高级应用开发 学习笔记 1 -- RFC
- 复制并真正隐藏administrator帐号(完全批处理)
- AXIS2实例4:wsdl2java(最简单的string)
- ASP.NET页面刷新方法总结(转)
- 框架感悟
- 计算机词组库(1)
- SQL中的REPLACE替换字符函数
- GNU Bash 手册 (0)
- 如何导出自选股