异步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介绍 
 
 
                

















