设为首页 收藏本站
查看: 1298|回复: 0

[经验分享] SAP学习日志--RFC remote function call

[复制链接]

尚未签到

发表于 2015-9-18 13:53:43 | 显示全部楼层 |阅读模式
SAP学习日志--RFC  remote function call

  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序列

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115489-1-1.html 上篇帖子: SAP ERP 与SAP CRM有什么不同? 下篇帖子: SAP Form Paragraph Formats and Attributes
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表