SAP 高级应用开发 学习笔记 1 -- RFC NO.4

 异步RFC方式RFM调用:

 

 

STARTING NEW TASK 指明异步调用模式,功能模块在新的工作过程中执行,也可以再后台模式处理异步RFC调用过程,在后台处理时,每个异步RFC调用也将占据一个对话工作过程

 

 

异步RFC调用过程只能使用TABLESEXPORTING(对应功能模块设定中的Import参数)、EXCEPTIONS参数。调用程序并不等待该模块的返回结果,因而不能指定IMPORTING 参数,即不能直接接收从被调用功能中的返回信息。调用的同时只能接收系统标准异常,对于功能模块中抛出的其他特点异常则不能直接接收

 

异步远程对话处理和调试

  1. 异步 RFC 调用过程也支持远程对话处理,在异步 RFC 调用时,系统总是打开新的工作进程,因而如果被调用功能模块包含对话程序(屏幕调用处理),则在该功能模块执行时,调用系统中将出现新的外部会话窗口,若调用功能时打开的会话数自己达到 6 个, 则试图打开新窗口时触发 system_failure.
  2. 异步 RFC 调用时,对 RFM 进行 step in 的调试过程,调用程序本身的调试会话不会进入 RFM 内部,系统也打开新的会话,单独增加一个窗口,进行目标系统中 RFM 的调试,将断点放在 RFM CALL FUNCTION 语句处,在异步 RFC 模式下进行调试

异步RFC调用时接收结果

通过语句中的附加项PERFORMING return_form on end of task 实现

子程序必须存在于调用程序中,如果回调子程序中包含任何使当前程序执行中断的语句,call screensubmitcommit workwaitRFC调用及W或I类型的消息等,则不能成功返回结果。

Receive results from functionRFM中接收结果.

程序在运行时的行为如下:主程序运行期间,RFM在其他工作过程中运行,因此系统变量sy-subrc和程序变量不会被更新,主程序将文本发送至输出列表的缓冲区中。

语句WAIT UNTILL用于异步RFC调用中等待结果的返回,该项必须与performing附加项配合使用,否则没有意义:

WAIT UNTIL log_exp [UP TO sec SECONDS].

当满足log_exp条件后,程序继续执行,否则程序将挂起,并等待异步RFC调用的返回结果,当功能模块调用结束时,系统将自动执行回调子程序,在其中接收返回结果并设定相关的逻辑条件变量值,子程序结束后将回到wait untill语句,在多个异步RFC调用存在的情况下,等待过程将反复重复,直到等待条件被满足,或不再有其他开发的异步RFC调用

WAIT UNTILL NOT FLAG1 IS INITIAL AND NOT FLAG2 IS INITIAL.

保持远程上下文:

receive语句中,通过keeping task附加项可以使已经加载的远程上下文保持至调用程序结束,直到远程连接终止为止。

RFM中的交互对话处理都将保持至调用程序结束。

通过performing接收结果的异步RFC调用不能进行内存滚动区的切换或进入内部模式,因为将导致异步返回结果无法传递给调用程序,可以通过submitcall transaction语句进行内存滚动区的切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值