SAP RFC介绍(sRFC/aRFC/tRFC/qRFC/pRFC)

news2024/11/24 7:38:19
异步RFC:
aRFC后缀: STARTING NEW TASK
CALL FUNCTION - STARTING NEW TASK   /   RECEIVE  /   WAIT UNTIL
tRFC 后缀: IN BACKGROUND TASK.
CALL FUNCTION    - IN BACKGROUND TASK
qRFC 是tRFC的一个扩展。它允许你将多个tRFC调用序列化为一个队列
bgRFC 后缀: IN BACKGROUND UNIT
【从bgRFC改回qRFC是不可能的】
 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类型参数。RFC介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RocketMQ集群4.9.2升级4.9.6版本

本文主要记录生产环境短暂停机升级RocketMQ版本的过程 一、整体思路 1.将生产环境MQ4.9.2集群同步到测试环境&#xff0c;并启动&#xff0c;确保正常运行。 2.参照4.9.2配置4.9.6集群 3.停掉4.9.2集群&#xff0c;启动4.9.6集群&#xff0c;测试确保正常运行。 4.停掉4.9.6集…

Python Web开发技巧VII

目录 装饰器inject_serializer 装饰器atomic rebase git 清理add的数据 查看git的当前工作目录 makemigrations文件名称 action(detailTrue, methods["GET"]) 如何只取序列化器的一个字段进行返回 Response和JsonResponse有什么区别 序列化器填表和单字段如…

理解Android中不同的Context

作者&#xff1a;两日的blog Context是什么&#xff0c;有什么用 在Android开发中&#xff0c;Context是一个抽象类&#xff0c;它是Android应用程序环境的一部分。它提供了访问应用程序资源和执行各种操作的接口。可以说&#xff0c;Context是Android应用程序与系统环境进行交…

LoadRunner使用教程

1. LoadRunner简介 LoadRunner是一款广泛使用的性能测试工具 可以对各种应用程序进行性能测试&#xff0c;包括Web应用程序、移动应用程序、企业级应用程序等。它提供了一个综合的性能测试解决方案&#xff0c;包括测试计划设计、脚本录制、测试执行、结果分析和报告生成等功…

三、函数-5.流程函数

一、常见函数 【对比】 二、示例 1、if 和 ifnull -- if(value, t, f) 如果value为true&#xff0c;则返回t&#xff0c;否则返回f ok select if(true, ok, error);-- ifnull(value1, value2) 如果value1不为空&#xff0c;返回value1&#xff0c;否则返回value2&#…

MFC表格控件CListCtrl的改造及用法

1、目的 简单描述MFC的表格控件使用方法。Qt适用习惯了以后MFC用的比较别扭&#xff0c;因此记录一下以备后续复制代码使用。由于MFC原生的CListCtrl比较局限&#xff0c;比如无法改变表格的背景色、文字颜色等设定&#xff0c;因此先对CListCtrl类进行重写&#xff0c;以便满足…

哪些报表工具更适合中国企业?看完本文就知道了

企业级报表工具是指能够处理大量数据、支持多种数据源连接、具有强大的数据分析和可视化功能的工具。进入大数据时代&#xff0c;企业数据量剧增、分析需求精细化且要求高效率、高灵活自主性&#xff0c;一般都采用BI报表工具来做智能化、可视化数据分析&#xff0c;推动企业的…

Neo4j数据库中导入CSV示例数据

本文简要介绍Neo4j数据库以及如何从CSV文件中导入示例数据&#xff0c;方便我们快速学习测试图数据库。首先介绍简单数据模型以及基本图查询概念&#xff0c;然后通过LOAD CSV命令导入数据&#xff0c;生成节点和关系。 环境准备 读者可以快速安装Neo4j Desktop&#xff0c;启…

Mysql中(@i:=@i+1)的介绍

i:i1 表达式 生成伪列实现自增序列 语法&#xff1a; select (i:i1) as ,t.* from table_name t,(select i:0) as j (i:i1)代表定义一个变量&#xff0c;每次叠加 1&#xff1b; (select i:0) as j 代表建立一个临时表&#xff0c;j是随便取的表名&#xff0c;但别名一定…

python和c++哪个更值得学,python和c++学哪个简单

大家好&#xff0c;本文将围绕python和c哪个更值得学展开说明&#xff0c;python和c学哪个简单是一个很多人都想弄明白的事情&#xff0c;想搞清楚c和python哪个好学需要先了解以下几个事情。 1、想学编程&#xff0c;选择Python 还是Java或者C&#xff1f; 首先&#xff0c;我…

MySQL索引失效原因及解决方案

MySQL索引失效原因及解决方案 在使用MySQL数据库时&#xff0c;索引是一种重要的性能优化工具。然而&#xff0c;有时候我们可能会遇到索引失效的情况。本文将介绍几种常见的MySQL索引失效原因以及相应的解决方案&#xff0c;并提供SQL语句的错误示例和正确示例。 1. 字符串字…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 二)

Prop装饰器&#xff1a;父子单向同步 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的&#xff0c;但是变化不会同步回其父组件。 概述 Prop装饰的变量和父组件建立单向的同步关系&#xff1a; Prop变量允许在本地修改&#xff0c;但修改后的变化不会…

tinkerCAD案例:11.制作齿轮

tinkerCAD案例&#xff1a;11.制作齿轮 制作齿轮 Add a cylinder to be the main part of the gear. 添加一个圆柱体作为齿轮的主要部分。 说明 Click and drag a cylinder onto the Workplane. 单击圆柱体并将其拖动到工作平面上。 Change the cylinder dimensions to 35mm …

四、约束-1.概述

一、概念 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 二、目的 保证数据库中数据的正确、有效性和完整性。 三、分类

视觉套件专项活动!与飞桨技术专家一起提升技术实力,更多荣誉奖励等你领取

作为中国最早开源的深度学习框架&#xff0c;飞桨深度践行开源理念&#xff0c;开放拥抱社区&#xff0c;重视生态构建&#xff0c;与开发者和生态伙伴共成长&#xff0c;已成为国内综合竞争力第一的产业级深度学习平台。截至目前&#xff0c;飞桨已凝聚750万名开发者。 在飞桨…

i.MX6ULL(十九) linux gpio子系统

一 简介 pinctrl 子系统重点是设置 PIN( 有的 SOC 叫做 PAD) 的复用 和电气属性&#xff0c; 如果 pinctrl 子系统将一个 PIN 复用为 GPIO 的话&#xff0c;那么接下来就要用到 gpio 子系 统了。gpio 子系统顾名思义&#xff0c;就是用于初始化 GPIO 并且提供相…

idea,选中同一个变量高亮显示

阅读复杂代码时&#xff0c;我们经常因为找不清变量位置&#xff0c;而浪费精力重新去看变量名。 效果展示&#xff1a; 在设置里直接搜索按照步骤&#xff0c;勾选然后修改选中变量时的变量背景颜色和字体颜色 这里是设置选中变量时&#xff0c;其他变量的背景颜色和字体颜色…

终于搞懂!数字化、信息化、智能化,到底有什么不同?

引言 随着科技的飞速发展&#xff0c;数字化、信息化和智能化这三个术语在各行各业中频繁出现。然而&#xff0c;许多人对它们之间的区别并不十分清楚。本文旨在阐明数字化、信息化和智能化的含义&#xff0c;探讨它们在实践中的应用&#xff0c;并梳理其异同之处。 一、数字化…

你不知道的AI绘画变现方式

&#x1f3c6; 文章目标&#xff1a;学习AI绘画变现方式 &#x1f340; 入门篇&#xff1a;你不知道的AI绘画变现方式 ✅ 创作者&#xff1a;熊猫Jay ✨ 个人公众号: 熊猫Jay字节之旅 (文末有链接) &#x1f341; 展望&#xff1a;若本篇讲解内容帮助到您&#xff0c;请帮忙点个…

【科研必备】生态系统碳循环模型CENTURY建模方法

CENTURY模型&#xff0c;主要基于过程的陆地生态系统生物地球化学循环模型。主要用于模拟不同土壤-植被系统间C、N、P和S的长期动态。根据土壤有机质的分解速率&#xff0c;CENTURY模型将土壤总有机碳&#xff08;TOC&#xff09;分成了三个碳库&#xff0c;即活性、慢性和惰性…