SAP RFC
什么是RFC?
RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议。简单地说,RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAPABAP系统。这种远程功能调用也可在同一系统内部进行(如本地SAP系统内的远程调用);但通常情况下,调用程序和被调用程序处于不同系统。
RFC调用过程
在系统间通信过程中,需区分发送系统和接受系统。RFC调用请求从发送系统(调用系统)中传至接收系统(被调用系统,也称远程系统或目标系统),发送请求的系统在通信过程中又称为RFC客户端,通信另一方则称为RFC服务器。RFC客户端发起远程功能调用以执行RFC服务器提供的功能。
其中,调用系统和被调用系统均可以是SAP系统和非SAP系统,此外还可以在SAP系统内部将特定应用服务器指定为目标系统。
RFC通信的情况
根据通信方向和系统类型,共有如下三种RFC通信:
*两个独立的SAP系统之间的通信;
*SAPA系统作为调用系统,与外部远程系统(非SAP ABAP系统)通信;
*外部系统作为调用系统,与SAP系统通信。
RFC接口系统
SAP调用远程功能的能力是通过RFC接口系统(RFC interface system)实现的。根据调用方向的不同(SAP系统调用其他模块或其他系统调用SAP模块),RFC接口提供以下两种服务。
(1)ABAP程序的调用接口
(2)非SAP ABAP程序的调用接口。
RFC通信模式
同步通信和异步通信:同步通信时间上允许误差较小,异步通信时间上允许一定的误差。
同步调用的优缺点:
1)优点:可以及时将数据返还给发送系统;
2)缺点:系统对话时必须保证两个系统处于活动状态,否则对话出现中断,影响业务应用的处理。
异步调用的优缺点:
1)优点:不需要接收系统随时可用,如系统升级、维护等不影响请求发送系统的业务处理;
2)缺点:不适用于要求及时响应的处理过程。
RFC版本包含的五种版本?
1、同步RFC(sRFC, synchronous RFC)是RFC的第一个版本,它要求连接的双方是同步的工作方式,即都是在可用状态才能够实现成功调用。
2、异步RFC(aRFC,asynchronous RFC)这种RFC可以实现异步的RFC调用方式,它可以进行多个并发调用,并且不要求被调用系统的可用状态。发出调用系统会一直尝试直到获得被调用系统的应答。它通常用于当你需要提高系统并行调用多个RFC的效率,相对于强制等待程序的结果,它的效率更高。
3、事物RFC(tRFC,transactional RFC)是对aRFC进行相关技术改进后的一个RFC版本,其于aRFC相同点是实现异步调用,其优点是可以将多个调用进行LUW分组处理,并只执行一次运行。现在aRFC基本上已经停用。
4、队列RFC(qRFC,queue(d) RFC)是tRFC的一个增强版本,它保证了所传输数据的处理次序,并可用于SAP-SAP及SAP-non SAP。
5、并行RFC(pRFC,Parallel RFC)是一种特殊的RFC,它是aRFC的一种扩展类型。因为它改善了系统的性能,在执行大量的aRFC时。SAP使用它在MRP里面提高速度。但是它只能执行在同一个系统和同一个client里。
五种RFC调用特性对比:
执行时间 |
处理模式 |
交互对话 |
状态查询 |
|
sRFC |
立即执行 |
同步 |
支持 |
不提供 |
aRFC |
立即执行 |
异步 |
支持 |
不提供 |
tRFC |
需等待 |
异步,一次执行 |
不支持 |
提供 |
qRFC |
需等待 |
异步,一次顺序执行 |
不支持 |
提供 |
pRFC |
立即执行 |
异步 |
不建议使用 |
不提供 |
RFM:
Function-->Attributes-->Processing Type-->□Remote-Enable Module
RFM定义要点:
1)参数声明必须是具体类型(不可以 Type any);
2)参数必须指定为值传递(Pass Value);
3)表类型参数系统隐式进行值传递。
4)对于字符型参数,调用方实参的定义长度应 <=被调用方形参定义长度。
5)异常处理。基于类的异常不能通过远程调用抛回。
RFC有2个预设系统异常,调用系统必须接收:SYSTEM_FAILURE/ COMMUNICATION_FAILURE
RFC远程目标维护及调用
首先,输入TCODE SM59
其次,可以添加一个连接类型,其中包含如下类型
(1)类型2( R/2连接),指定R/2系统作为目标系统。
(2)类型3(ABAP连接或R/3连接),指定SAP ABAP系统作为目标系统。
(3)类型I(内部连接),与当前系统连接到同一数据库的ABAP系统。
(4)类型 L(逻辑目标):该条目不指定连接系统,而是参照物理目标生成
Technical Settings.
(5)Target system:目标系统名称。
(6)Message server目标系统的消息服务器 T-CODE RZ03 Service 栏中带有”M”字符的为消息服务器。
(7)Group服务器组 Tcode SMLG 可以查看。
(8)Target host (目标系统的主机或IP地址) SM51中的HOST name字段。
(9)System number(目标系统的系统编号),设定Logon/Security选项卡,Trusted system对于类型3的远程目标,可将服务器系统设定为可信任系统,则RFC用户无需对该系统再设定登陆密码,其次,要设定同步或异步的调用方式。
如果同步RFC的调用方式,同步RFC要求远程系统在调用时可用,调用程序的处理暂停,并等待远程function module调用的返回结构后再继续。
语法如下:
CALL FUNCTIOAN rfm_name
DESTINATION dest
…..
如果是异步的话,异步RFC也要求RFC服务器系统在调用时可用,被调用的function module将立即启动并运行,区别于同步调用,调用程序不等待远程调用结果,而继续运行,远程功能处理与调用程序的处理过程相分离,功能返回结果可以在后续过程中被接收。
语法如下:
CALL FUNCTION rfm_name
START NEW TASK taskname
….
异步RFC调用时接收结果
CALL FUNCTION rfm_name
START NEW TASK taskname
PERFORMING return_form ON END OF TASK
子程序必须存在于程序中
FORM return_form USING taskname
….
RECEIVE RESULTS FROM FUNCTION rfm_name
….
ENDFORM
第三,进行异步RFC方式的RFM调用
RFC实际上是异步RFC调用的应用之一,异步RFC调用适用于多个SAP ABAP系统间的并行处理(不支持非SAP系统),可以在同一个系统内部使用异步RFC调用,并将部分处理负载转移到其它的应用服务器上,如果不现实指定异步RFC调用的目标,则在同一应用服务器内,也可以通过本地异步RFC调用实现多个工作过程的并行处理。
分组并行处理的语法如下:
CALL FUNCTION rfm_name
STARTING NEW TASK taskname
DESTINATION IN GROUP g1
….
EXCEPTION
RESOURCE_FAILURE = ..
并行处理条件是,逻辑独立的工作单元(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
IN BACKGROUND TASK
….
或者
CALL FUNCTION rfm_name
IN BACKGROUND UNIT oref
….
事务RFC 调用不能直接接收或通过 receive results from fucntion来接收rfm的返回结果,模块中不应该指定任何 export类型参数。
SAP RFC的更多相关文章
- C# 使用 SAP NCO3.0 调用SAP RFC函数接口
最近使用C#调用SAP RFC函数,SAP提供了NCO3.0组件. 下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件. 在程序中 using SAP.Mid ...
- .net 调用SAP RFC函数获取数据的两种方式
方式1:使用客户端自带的组件 安装客户端以后,添加引用:SAPFunctionsOCX(.net 的Com列表里一般找不到,需要引用DLL[一般位于以下路径:Program Files\SAP\Fro ...
- K2 BPM项目 基于COM组件调用SAP RFC 问题
K2 BPM项目 基于COM组件调用SAP RFC 问题 问题前景: 环境:Win 2008 R2 64bit 最近项目中有支流程需求中需要在会计入账环节回写SAP的会计凭证. SAP组给我们提供.N ...
- 最新.net和Java调用SAP RFC中间件下载
还记得2012年初我发布的全网络第一个关于.net 连接SAP RFC的NCO3原创博文,用的就是SAP出的最新的.Net Connector 3.0的版本,在那个时候都是普遍用其他蹩脚的方式或Web ...
- SAP RFC函数
RFC 接口 RFC是对一个函数模块的调用,但是调用者的系统与被调函数所在的系统是不一样的. RFC也可以在系统内被调用,但是通常调用和被调用是在不同的系统中的. 在sap系统中,远程调用的能力是有R ...
- 一个完整的SAP RFC调用接口封装
因为经常需要访问sap操作数据,就封装了一个类方便调用,运行条件需要安装sap客户端,在sap客户端安装之后会带有一个com接口,本接口就通过这个com访问sap,因为com的后期绑定问题故使用了vb ...
- .net 调用SAP RFC的几种方法
转自:http://www.cherpservice.com/pub/newsdetail.asp?Newsid=3613 第一种方式采用SAP.net Connector: 最新版本是3.,不开源, ...
- VB.NET 与 SAP RFC连接问题点
与SAP RFC连接,电脑上必须要安装SAP软件,否则会报错ActiveX 输入工单号,无法带出SAP内接口RFC信息. 确认原因为:RFC接口需求的工单参数需要在前面加两位00,例如:1000541 ...
- SAP RFC通信模式
在网络技术中,数据通信可以大致划分为两种基本模式:同步通信和异步通信. 其本义是:异步通信时,通信双方时钟允许存在一定误差:同步通信时,双方时钟的允许误差较小.在SAP的系统间的通信过程中,也借用术语 ...
随机推荐
- Utility2:Appropriate Evaluation Policy
UCP收集所有Managed Instance的数据的机制,是通过启用各个Managed Instances上的Collection Set:Utility information(位于Managem ...
- 深入理解JSON对象
× 目录 [1]语法规则 [2]stringify [3]parse[4]eval 前面的话 json(javascript object notation)全称是javascript对象表示法,它是 ...
- 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- IOS数据存储之归档/解档
前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchi ...
- 模板引擎Nvelocity实例
前言 最近一直忙于工作,没时间来管理博客,同时电脑也不给力,坏了一阵又一阵,最后还是去给修理了,这不刚一回来迫不及待的就写一篇文章来满足两个月未写博客的紧迫感. Nvelocity 关于nveloci ...
- Util应用程序框架公共操作类(四):验证公共操作类
为了能够验证领域实体,需要一个验证公共操作类来提供支持.由于我将使用企业库(Enterprise Library)的验证组件来完成这项任务,所以本文也将演示对第三方框架的封装要点. .Net提供了一个 ...
- 支持向量机原理(四)SMO算法原理
支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...
- Cesium原理篇:4Web Workers剖析(2)
What's the WebWorkers? 2008 年 W3C 制定出第一个 HTML5 草案中提出了工作线程(Web Worker)的概念,并且规范出 Web Worker 的三大主要特征:能够 ...
- 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)
背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...
- css3鼠标悬停图片渐显飞入效果
body程序: <div id="bei"> <div id="img"><img src="xianzi.png&qu ...