RFC  Remote function Call 远程功能调用, 是SAP系统之间以及非SAP系统之间程序通信的基本接口技术. 例如BAPI , ALE都是基于RFC实现的

SAP系统提供了三种外部接口

1.       通信接口(communication interface)

2.       文件I/O接口(file I/O interface)

3.       数据库接口(data interface)

RFC位于程序通信接口中,以实现外部程序对SAP系统内部数据的访问.

RFC是基于CPI-C实现的.  (可以不用深入)

在系统通信中,有 发送系统和接收系统, 其中发送请求的系统在通信过程中叫做RFC客户端, 另一方则称为RFC服务器.

RFC通信的情况 分为三种

1.       两个独立的SAP系统之间进行通信

2.       SAP作为调用系统,与外部远程系统(非SAP ABAP系统) 通信;

3.       外部系统作为调用系统, 与SAP系统通信

RFC通信模式

1.       同步RFC (sRFC synchronous RFC)

2.       异步RFC (aRFC asynchronous RFC)

3.       事务性RFC (tRFC transactioanl RFC)

4.       队列RFC (qRFC queued RFC)

5.       并行RFC (pRFC parallel RFC)

RFM 概述

RFM为 可远程调用的function module

RFM不能在运行时确定参数类型, 因而必须在参数定义时参照数据字典类型声明

RFM 中的参数必须为值传递(Pass value),对于表类型参数, 系统也隐式进行值传递

维护远程目标

TCODE   SM59

可以添加一个连接类型,其中包含如下类型

1.       类型2( R/2连接),指定R/2系统作为目标系统

2.       类型3(ABAP连接或R/3连接),指定SAP ABAP系统作为目标系统

3.       类型 I(内部连接) ,与当前系统连接到同一数据库的ABAP系统

4.       类型 L(逻辑目标): 该条目不指定连接系统, 而是参照物理目标生成

Technical Settings

1.       Target system: 目标系统名称

2.       Message server 目标系统的消息服务器 T-CODE RZ03 Service 栏中带有”M”字符的 为消息服务器

3.       Group 服务器组 Tcode SMLG 可以查看

4.       Target host (目标系统的主机或IP地址) SM51 中的HOST name字段

5.       System number(目标系统的系统编号)

设定Logon/Security 选项卡

Trusted system. 对于类型3的远程目标,可将服务器系统设定为可信任系统,则RFC用户无需对该系统再设定登陆密码

同步RFC方式 RFM调用

同步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

….

ENFORM

并行RFC方式的RFM调用

并行RFC实际上是异步RFC调用的应用之一

1.  首先异步RFC调用适用于多个SAP ABAP系统间的并行处理(不支持非SAP系统)

2.  可以在同一个系统内部使用异步RFC调用,并将部分处理负载转移到其它的应用服务器上.

3.  如果不现实指定异步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类型参数.

队列RFC 方式

要确保事务性RFC中的LUW都按照其创建磁学执行,需要使用队列RFC创建LUW序列

SAP学习日志--RFC REMOTE FUNCTION CALL的更多相关文章

  1. ABAP术语-RFC (Remote Function Call)

    RFC (Remote Function Call) 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/12/1101581.html RFC ...

  2. webpack2学习日志

    webpack说容易也容易,说难也难,主要还是看个人,想学到什么样的程度,很多公司可能要求仅仅是会用就行,但是也有一些公司要求比较高,要懂一些底层的原理,所以还是要花一些时间的,看个人需求.这篇仅仅是 ...

  3. GRE学习日志

    发现开博客园真的很有督促作用,今天也顺便开个GRE学习日志吧 2015-02-09:单词 2015-02-10:单词 2015-02-11:单词 2015-03-02:阅读 2015-03-04:阅读 ...

  4. C#如何通过NCO3.0来连接SAP并调用SAP中的RFC

    ,这是SAP针对.Net开发的专用组件,安装完成之后在C:\Program Files\SAP\SAP_DotNetConnector3_x86目录下面会有sapnco_utils.dll sapnc ...

  5. Cortex-M3学习日志(六) -- ADC实验

    上一次简单的总结了一下DAC方面的知识,好吧,这次再来总结一下ADC方面的东东.ADC即Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器.现实世界是由模 ...

  6. Cortex-M3学习日志(五) -- DAC实验

    终于逮了个忙里偷闲的机会,就再学一下LPC1768的外围功能吧,循序渐进是学习的基本规则,也许LPC1768的DAC与8位单片机16位单片机里面集成的DAC操作类似,但是既然这是懒猫的学习日志,就顺便 ...

  7. javascript学习日志:前言

    javascript学习日志系列的所有博客,主要理论依据是<javascript权威指南>(犀牛书第6版)以及<javascript高级程序设计第三版>(红色书),目前js行业 ...

  8. MobileForm控件的使用方式-用.NET(C#)开发APP的学习日志

    今天继续Smobiler开发APP的学习日志,这次是做一个title.toolbar.侧边栏三种效果 样式一 一.          Toolbar 1.       目标样式 我们要实现上图中的效果 ...

  9. 我的游戏学习日志3——三国志GBA

    我的游戏学习日志3——三国志GBA 三国志GBA由日本光荣公司1991~1995所推出<三国志>系列游戏,该作是光荣在GBA上推出的<三国志>系列作品的第一款.本游戏登场武将总 ...

随机推荐

  1. CAD2015安装教程 AutoCAD2015中文版安装激活图文教程

    28年来,Autodesk一直在坚持不懈地帮助客户提高设计流程效率.AutoCAD提供了可靠的三维自由形状设计工具以及强大的绘图和文档制作功能,在全球拥有数百万用户. autocad2015具有广泛的 ...

  2. Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...

  3. Windows Azure HandBook (9) Azure性能测试(2)

    <Windows Azure Platform 系列文章目录> 在上一节中,笔者介绍了我们在Azure性能测试之前,首先需要提交<渗透性测试表> Windows Azure H ...

  4. 说说我在项目中为什么不用实体框架,如果说我在诋毁你所爱的EF,请进来.

    1.坑多. 这一点没有人会否定.当然你可以说你很牛,但事实不会因为你牛就可以说不存在.从博客园中的博问中大家关于EF的提问量就问题的怪异程度就可以看出来. 1.Entity Framework 查询历 ...

  5. MySQL 函数大全

    mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NU ...

  6. DSOFramerControl简单使用

    以前大学做项目(Web的毕业论系统)就看见过在网页中嵌入Office的word,那时候用了哪个控件当时没记下来,我倒是忘了,最近发现在WinForm要嵌入Office的话,可以使用DSOFramerC ...

  7. 关于CodeFirst异常:无法确定类型'XXX'和类型‘YYY’之间的关联的主体端,必须使用关系 Fluent API 或数据注释显式配置此关联的主体端。

    此错误的原因是,你配置两个实体间的关系为一对一 然而我认为的一对一关系是,两者之间必须存在一个主体, 也就是说,你不能表1的外键是表2的主键并且表1的主键是表2的外键, 这样不符合数据库式吧? 我想多 ...

  8. C#编程总结(十三)数据压缩

    C#编程总结(十三)数据压缩 在进行文件存储或者数据传输时,为了节省空间流量,需要对数据或文件进行压缩.在这里我们讲述通过C#实现数据压缩. 一.GZipStream压缩 微软提供用于压缩和解压缩流的 ...

  9. WebResource.axd 404 错误

    再对程序进行发布的时候,出现以下情况 复制出错误信息: 网页错误详细信息 用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Triden ...

  10. 【Java每日一题】20161114

    package Nov2016; import java.io.Serializable; // V1.0版 public class Ques1114 implements Serializable ...