Reference => 官方文档 SAP Help Portal-RFC

1.同步RFC

  • 同步RFC(sRFC,synchronous RFC)是RFC最原始版本,其执行基于同步通信模式,远程调用时,通信双方系统必须处于可用状态,调用程序等待远程功能处理结束并返回结果

  • 语法形式:

        CALL FUNCTION 'rfm_name'DESTINATION destEXPORTING...IMPORTING...CHANGING...TABLES...EXCEPTIONS...
    

2.异步RFC

  • 异步RFC(aRFC,asynchronous RFC)执行并不依赖RFC服务器系统的可用性,被调用的远程功能启动之后,调用程序继续运行,远程功能和调用程序处理互不影响,独立运行。远程功能调用结构可以稍后接收(在做并行aRFC时一定要考虑负载性能)

  • PERFORMING frm_return_proc ON END OF TASK 可用于接收远程模块返回结果或异常,并通过指定的FORM处理

  • WAIT UNTIL log_exp [UP TO sec SECONDS] 用于异步RFC调用中等待结果的返回,并必须搭配 PERFORMING语句

  • KEEPING TASK 用于相同任务名称的异步RFC启用时保持远程上下文,即使用相同的TASK

  • 语法形式:

    CALL FUNCTION 'rfm_name'DESTINATION destSTARTING NEW TASK tasknamePERFORMING frm_return_proc ON END OF TASK         "接收远程模块返回结果或异常EXPORTING...CHANGING...TABLES...EXCEPTIONS......
    WAIT UNTIL log_exp [up to sec seconds].             "挂起进程等待
    ...
    FORM frm_return_proc USING taskname.                "处理函数
    ...RECEIVE RESULTS FROM FUNCTION 'rfm_name'            "获取返回参数KEEPING TASK                                      "保持远程上下文IMPORTING...TABLES...EXCEPTIONS......
    ENDFORM.
    

3.并行RFC

  • 并行RFC(pRFC,parallel RFC)本质上也属于异步RFC,功能上可实现多个SAP系统或者单个SAP系统内部不同应用服务器间或者应用服务器内部各应用进程间的并行处理

  • 通过SM59->RFC组对现有应用服务器分组

  • RFC调用时则可指定执行的RFC应用服务器组,还可以使用 DEFAULT 关键字,系统将从全部可能的应用服务器中选择一个来执行RFC调用

  • 为了并行处理,SAP服务器至少有3个空闲的Dialog工作过程;同时需要满足调度器队列(dispatcer queue)必须低于10%负载,否则将触发RESOUCE_FAILURE异常

  • 并行RFC同样适用 PERFORMING WAIT UNTIL KEEPING TASK 等异步RFC语法

  • 语法形式:

    CALL FUNCTION 'rfm_name'DESTINATION IN GROUP 'group_name'       "group_name OR defaultSTARTING NEW TASK tasknameEXPORTING...TABLES...EXCEPTIONSRESOURCE_FAILURE =  3...
    

4. bgRFC

  • 后台RFC(bgRFC,Background RFC) 允许应用程序记录稍后由被调用应用程序接收的数据。接收到数据后,您必须确保数据仅以任意顺序( 事务性)传输一次或仅以创建顺序( 排队)传输一次。

  • ABAP 710开始,bgRFC 是对原来 tRFC 和 qRFC的重新设计,理论上性能更优;NW RFC SDK 也支持 bgRFC(NW RFC SDK 本身将 bgRFC 调用视为 tRFC 调用,实际处理并任何差异)

  • Reference:bgRFC Programming

  • bgRFC之tRFC(tRFC,Transaction RFC)

    • 事务性RFC(tRFC,transactional RFC)广义上也属于异步RFC,调用程序不接受调用结果而继续执行,但不立即启动远程调用功能;关联的RFC被捆绑为一个事务,然后通过事务性处理;被捆绑的Task整体提交处理,其中一个失败,则全部取消;全部成功则提交处理;保证了数据一致性
    • ABAP 7.0 以后可用面向对象的调用方式 ref_obj参照接口 IF_BGRFC_UNIT实现类的对象
    • 多LUW处理
    • 每个tRFC调用都有一个独特的事务ID(Transactional ID,TID)存储于本地数据表ARFCSSTATE ARFCSDATA
    • SM58->tRFC 状态(ARFCSSTATE) LUW执行状态查看
    • 语法形式:
          CALL FUNCTION 'rfm_name'IN BACKGROUND TASK[DESTINATION dest]EXPORTING...TABLES...[AS SEPARATE UNIT]或者:CALL FUNCTION 'rfm_name'IN BACKGROUND UNIT ref_objEXPORTING...TABLES...
      
  • bgRFC之qRFC(qRFC,queued RFC)

    • 队列RFC(qRFC,queued RFC)是事务性RFC功能上的进一步扩展。事务性RFC中,存在多个LUW时,LUW执行次序无法确定。如果需要LUW按照指定顺序执行,可通过队列RFC对事务性RFC进行序列化
    • Reference:qRFC Programming
    • 语法形式:
          CALL FUNCTION 'TRFC_SET_QUEUE_NAME'EXPORTINGqname              = 'ZRFC_QUEUE01'EXCEPTIONSinvalid_queue_name = 1OTHERS             = 2.CALL FUNCTION 'rfc_name1'IN BACKGROUND TASKDESTINATION destEXPORTING...TABLES ...CHANGING...EXCEPTIONS...CALL FUNCTION 'TRFC_SET_QUEUE_NAME'EXPORTINGqname              = 'ZRFC_QUEUE02'EXCEPTIONSinvalid_queue_name = 1OTHERS             = 2.CALL FUNCTION 'rfc_name2'IN BACKGROUND TASKDESTINATION destEXPORTING...TABLES ...CHANGING...EXCEPTIONS......COMMIT WORK....
      

5. 本地调用的远程功能

  • 使用 DESTINATION ‘NONE’ 关键字,调用将会以远程的方式调用,但是调用的功能位于当前应用系统中

  • 当使用 DESTINATION SPACE 关键字,此关键字被忽略,即使用常规本地调用

  • 语法形式:

    CALL FUNCTION 'rfc_name'IN BACKGROUND TASKDESTINATION 'NONE'EXPORTING...TABLES ...CHANGING...EXCEPTIONS...
    

6. 远程回调功能

  • 使用 DESTINATION ‘BACK’ 关键字,将开启远程回调功能;即被调用方可通过已建立的Session调用调用方系统内部的Function

    • 当使用 DESTINATION SPACE 关键字,此关键字被忽略,即使用常规本地调用
  • 语法形式:

    CALL FUNCTION 'rfc_name'IN BACKGROUND TASKDESTINATION 'BACK'EXPORTING...TABLES ...CHANGING...EXCEPTIONS...
    

7. 功能及性能比较

SAP RFC通信模式基础知识(srfc arfc prfc trfc qrfc bgrf)相关推荐

  1. SAP RFC通信模式

    在网络技术中,数据通信可以大致划分为两种基本模式:同步通信和异步通信. 其本义是:异步通信时,通信双方时钟允许存在一定误差:同步通信时,双方时钟的允许误差较小.在SAP的系统间的通信过程中,也借用术语 ...

  2. 通信行业基础知识大全

    因本人从事通信行业,现整理一些通信相关的知识,以便与大家互相学习使用. 1.  请描述光缆.光缆段.光纤芯之间的关系? 答:两个网元之间的连通,通过光纤进行连接,光缆是在光缆中的,因为两个网元之间距离 ...

  3. 通信网络基础知识01

    文章目录 1. 简单了解 1.1 OLT(光线路终端): 1.2 ODN(分光器): 1.3 ONU(光网络单元) 2.OAN(光纤接入网) 2.1 分类 2.2 PON(Passive Optica ...

  4. 收藏:通信网络基础知识

    什么是通信网络 我们周围无时无刻不存在一张网,如电话网.电报网.电视网.计算机网络等:即使我们身体内部也存在许许多多的网络系统,如神经系统.消化系统等.最为典型的代表即计算机网络,它是计算机技术与通信 ...

  5. SAP BW学习之基础知识篇

    目录 1.信息对象 2.原系统 3.数据源 4.转换 5.数据流 6.DTP 7.导航属性 8.DSO数据存储对象 (1)DSO的四种类型: (2)DSO和CUBE的区别: (3)数据存储: (4)创 ...

  6. STM32中的串口通信的基础知识

    目录 串口通信基本原理 并行通信与串行通信 串行通信中单工,半双工和全双工的区别 按通信方式不同又可分为异步通信和同步通信 常见的串行通信接口 STM32中的5个串口引脚 STM32中USART的通信 ...

  7. Entity Framework Code First模式基础知识及入门实例01

    在深入学习某项技术之前,应该努力形成对此技术的总体印象,并了解其基本原理,本文的目的就在于此. 一.理解EF数据模型 EF本质上是一个ORM框架,它需要把对象映射到底层数据库中的表,为此,它使用了三个 ...

  8. 通信原理基础知识问答梳理(史上最全)

    1.莱斯分布在什么条件下可以近似为高斯分布? 当信噪比很大时 2.随机过程是否存在傅里叶变换?如果没有,应该如何描述随机过程的频谱特性? 随机过程不满足绝对可积和能量有限的条件,不存在傅里叶变换,可用 ...

  9. 四级计算机基础知识,全国计算机等级考试四级通关攻略

    我于2000年通过了计算机四级考试,在备考的过程中有一些体会和感受,在这里将它们写下来,也许对各位备考的朋友有借鉴作用. 考试介绍 计算机四级考试是计算机等级考试最高级别的考试,考核计算机应用项目或应 ...

最新文章

  1. React接入Sentry.js
  2. 区块链4.0DexChain是什么?
  3. struts2获取服务器临时目录
  4. 将键值对当作实参传进函数
  5. Git的学习与使用(五)——Git 创建仓库
  6. Google 宣布将 Istio 商标转移给 Open Usage Commons | 云原生生态周报 Vol. 57
  7. 8.Boost之unordered_set
  8. mysql mysqlnd_利用mysqlnd_ms实现mysql读写分离
  9. 用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办
  10. 前端内存优化的探索与实践
  11. git撤销单个文件的修改_大牛总结的 Git 使用技巧,写得太好了
  12. Alexa 世界网站排名研究
  13. 微服务配置中心是干啥的_微服务化改造系列之三:配置中心
  14. 虚拟主机搬迁服务器要重新备案吗,域名更换虚拟主机要重新备案吗
  15. vue 引入外部less_Vue项目中引入外部文件的方法(css、js、less)
  16. 怎样在接口地址中添加请求头参数_jmeter5.3做soap接口性能测试配置
  17. linux内核C -- 第04课:Linux内核第一宏——container_of
  18. 如何直接修改html文件,如何修改HTML的文件?
  19. 人际交往心理学 读后感
  20. 量子领域又有新突破:量子态持续时间可超5秒

热门文章

  1. Google Spanner和F1介绍
  2. NTP(网络时间协议)
  3. 词根词缀前缀总结(一)
  4. 计算机619错误代码,宽带连接时遇到619错误怎么解决?
  5. win10(企业英文版)有关中文乱码 与 系统默认语言转换
  6. AttributeError str object has no attribut 异常错误
  7. 北京几点出门算错峰?哪些情况别开车?想要一路畅通,这些数据您得了解
  8. Unity3d--牧师与魔鬼
  9. 郑州财经计算机专业咋样,郑州财经学院怎么样 2021年全国排名多少
  10. 2021年国考计算机网络原理,2021年公务员考试行测练习:文章阅读(135)