首页 > 代码库 > [SAP ABAP开发技术总结]Function远程、同步、异步调用

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

<style></style> <script type="text/javascript">// 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); oBox.offsetTop == iTop ? clearInterval(oBox.timer) : (oBox.style.top = oBox.offsetTop + iSpeed + "px"); }, 10) }, 50) oMenu.onclick = function () { oBox.style.width = 260 + "px"; oMenu.style.display = "none"; oLine.style.display = "block"; }; oLine.onclick = function () { oBox.style.width = ‘‘; oLine.style.display = "none"; oMenu.style.display = "block"; }; var cat_nav = $("#cat_nav"); oLine.innerHTML = cat_nav.html();};// ]]></script>
目录导航
<script type="text/javascript">// </script>
声明:原创作品转载时请注明文章来自SAP师太博客并以超链接形式标明文章原始出处否则将追究法律责任!
原文出自:

20.1.         Function调用... 233

20.1.1.     更新FMLUW.. 233

20.1.2.     RFC函数:远程调用... 234

20.1.2.1.           同步... 234

20.1.2.2.           异步... 234

20.1.2.2.1.       事务性RFC调用... 234

20.1.2.3.           DESTINATION 取值... 234

20.1.     Function调用

技术分享

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  目标SPACE DESTINATION选项将会被忽略,被调功能函数将作为普通函数在本机调用

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

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