理论教育 异步RFC方式的远程函数调用优化

异步RFC方式的远程函数调用优化

时间:2023-06-12 理论教育 版权反馈
【摘要】:异步RFC调用时,对远程函数进行step in的调试过程,调用程序本身的调试会话不会进入远程调用函数内部,系统也打开新的会话,单独增加一个窗口,进行目标系统中远程调用函数的调试,将断点放在远程调用函数的CALL FUNCTION语句处,在异步RFC模式下进行调试。

异步RFC方式的远程函数调用优化

1.同步RFC调用示例

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

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

2.异步远程对话处理和调试

异步RFC调用过程也支持远程对话处理,在异步RFC调用时,系统总是打开新的工作进程,因而如果被调用功能模块包含对话程序(屏幕调用处理),则在该功能模块执行时,调用系统中将出现新的外部会话窗口,若调用功能时打开的会话数达到6个,则试图打开新窗口时触发system_failure。

异步RFC调用时,对远程函数进行step in的调试过程,调用程序本身的调试会话不会进入远程调用函数内部,系统也打开新的会话,单独增加一个窗口,进行目标系统中远程调用函数的调试,将断点放在远程调用函数的CALL FUNCTION语句处,在异步RFC模式下进行调试。

3.异步RFC调用时接收结果

通过语句中的附加项PERFORMING return_form on end of task实现异步调用结果搜集,子程序必须存在于调用程序中,如果回调子程序中包含任何使当前程序执行中断的语句,call screen、submit、commit work、wait、RFC调用及W或I类型的消息等,则不能成功返回结果。(www.daowen.com)

通过语句子程序中Receive results from function从远程调用函数中接收结果。主程序运行期间,远程调用函数在其他工作过程中运行,因此系统变量sy-subrc和程序变量不会被更新,主程序将文本发送至输出列表的缓冲区中。

通过语句WAIT UNTIL log_exp[UP TO sec SECONDS]用于异步RFC调用中等待结果的返回,该项必须与performing附加项配合使用,否则没有意义。

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

4.保持远程上下文

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

远程调用函数中的交互对话处理都将保持至调用程序结束。通过performing接收结果的异步RFC调用不能进行内存滚动区的切换或进入内部模式,因为将导致异步返回结果无法传递给调用程序,可以通过submit或call transaction语句进行内存滚动区的切换。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈