RFC
SAP系统提供了三种外部接口
1.
2.
3.
RFC位于程序通信接口中,以实现外部程序对SAP系统内部数据的访问.
RFC是基于CPI-C实现的.
在系统通信中,有 发送系统和接收系统, 其中发送请求的系统在通信过程中叫做RFC客户端, 另一方则称为RFC服务器.
RFC通信的情况 分为三种
1.
2.
3.
RFC通信模式
1.
2.
3.
4.
5.
RFM 概述
RFM为 可远程调用的function module
RFM不能在运行时确定参数类型, 因而必须在参数定义时参照数据字典类型声明
RFM 中的参数必须为值传递(Pass value),对于表类型参数, 系统也隐式进行值传递
维护远程目标
TCODE
可以添加一个连接类型,其中包含如下类型
1.
2.
3.
4.
Technical Settings
1.
2.
3.
4.
5.
设定Logon/Security 选项卡
Trusted system. 对于类型3的远程目标,可将服务器系统设定为可信任系统,则RFC用户无需对该系统再设定登陆密码
同步RFC方式 RFM调用
同步RFC要求远程系统在调用时可用, 调用程序的处理暂停,并等待远程function module调用的返回结构后再继续
语法
CALL FUNCTIOAN rfm_name
异步调用
异步RFC也要求RFC服务器系统在调用时可用, 被调用的function module 将立即启动并运行,区别于同步调用, 调用程序不等待远程调用结果,而继续运行, 远程功能处理与调用程序的处理过程相分离,功能返回结果可以在后续过程中被接收.
语法
CALL FUNCTION rfm_name
异步RFC调用时接收结果
CALL FUNCTION rfm_name
子程序必须存在于程序中
FORM return_form USING taskname
….
….
ENFORM
并行RFC方式的RFM调用
并行RFC实际上是异步RFC调用的应用之一
1.
2.
3.
分组并行处理的语法
CALL FUNCTION rfm_name
并行处理条件
逻辑独立的工作单元(logically-independent units of work):并行处理并不适合需要顺序进行的数据处理.各个数据处理过程不能具有依赖关系
ABAP要求
被调用的功能模块程序中不能包含使用目标back的远程功能调用
调用程序不能在异步调用之后生成新的内部会话
不能通过 call function starting new task destination in group 语句启动外部程序
系统资源要求
为了处理并行作业, sap系统中至少要有三个对话工作过程. 调度队列(dispatcher queue)必须低于10%满载,而且至少要有一个空闲对话工作过程用于处理并行作业中的任务,并保留两个空闲的工作过程处理系统登陆及管理任务.
事务性RFC
通过事务RFC调用,可以将多个逻辑上相关的远程调用绑定到一个LUW上.在该LUW内,所有调用按其调用顺序,在目标系统的相同程序上下文中以单个事务的方式执行,要么执行所有,要么完全回滚.
语法
CALL FUNCTION rfm_name
….
或者
CALL FUNCTION rfm_name
….
事务RFC 调用不能直接接收或通过 receive results from fucntion 来接收rfm的返回结果.
模块中不应该指定任何 export类型参数.
队列RFC 方式
要确保事务性RFC中的LUW都按照其创建磁学执行,需要使用队列RFC创建LUW序列