关于Function远程,同步,异步调用

Function的调用模式

在这里插入图片描述

更新FM:LUW

CALL FUNCTION function IN UPDATE TASK
直到Commit work才运行,主要用于本地更新,如果是远程调用,
采用事务性RF调用方式:IN BACKGROUND TASK

同步

CALL FUNCTION func [DESTINATION dest]
DESTINATION不省略,dest不为空的情况下,函数必须为RFC函数

异步

CALL FUNCTION rfm_name STARTING NEW TASK [DESTINATION dest]taskname PERFORMING return_form ON END OF TASK

FORM return_form USING taskname.
  ...
  RECEIVE RESULTS FROM FUNCTION rfm_name
  ...
ENDFORM.

等待多个异步调用的返回结果:WAIT UNTIL log_exp [UP TO sec SECONDS].
异步调用时不能有IMPORTING参数;函数一定要是RFC函数才能采用异步调用;只要有STARTING NEW TASK选项,即为异步调用;如果是异步调用同一目标端的RFC函数,则可以省略DESTINATION

事务性RFC调用

事务RFC调用也属于异步调用
CALL FUNCTION func IN BACKGROUND TASK [DESTINATION dest]

函数一定要为RFC函数,且要通过Commit Work语句显示提交后,才会去执行,否则不会执行;如果是同一目标端的RFC函数,则可以省略DESTINATION

DESTINATION 取值

l 目标NONE:当前程序所在应用服务器作为目标系统,但调用过程还是RFC远程方式来调用,这与SPACE是同的

l 目标SPACE: DESTINATION选项将会被忽略,被调功能函数将作为普通函数在本机调用

l 目标BACK:用于被远程调用的RFM程序内部的CALL FUNCTION语句中的目标指定,通过已建立的RFC连接反过来调用该函数的主调者系统中的其他功能模块(即主调程序—>远程系统中的RFM—>又回调主调程序所在系统中的其他函数)

原文链接:http://m.myexception.cn/sap/1839590.html

猜你喜欢

转载自blog.csdn.net/ABAP_NY/article/details/103382269