[SAP ABAP开发技术总结]Function远程、同步、异步调用

本文详细介绍了ABAP中的函数调用方法,包括本地更新FM:LUW的使用,以及RFC函数的同步和异步远程调用方式。特别强调了事务性RFC调用的特点及其应用场景。

 

20.1.     Function调用

image394

20.1.1.             更新FMLUW

CALL FUNCTION update_function IN UPDATE TASK直到Commit Work 才运行

主要用于本地更新(非远程RFC调用,如果是远程调用,则采用事务性RFC调用方式:IN BACKGROUND TASK

20.1.2.             RFC函数:远程调用

20.1.2.1.       同步

CALL FUNCTION func [DESTINATION dest]  [?desti?nei??n]

DESTINATION不省略的情况下,且dest取值又不为SPACE,则函数一定要是RFC函数才能采用此方式进行远程同步调用

20.1.2.2.       异步

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

20.1.2.2.1.              事务性RFC调用

实质上事务RFC调用也属于异步调用

CALL FUNCTION func IN BACKGROUND TASK [DESTINATION dest]并不立即执行,直到主调程序中的COMMIT WORK语句(隐式提交不要,一定要使用COMMIT WORK显示提交)才一次性执行多个远程函数调用

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

20.1.2.3.       DESTINATION 取值

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

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

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

转载于:https://www.cnblogs.com/jiangzhengjun/p/4265586.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值