码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-01 16:08:09      阅读:566      评论:0      收藏:0      [点我收藏+]

标签:

声明:原创作品转载时请注明文章来自SAP师太博客并以超链接形式标明文章原始出处否则将追究法律责任!
原文出自:

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远程、同步、异步调用

标签:

原文地址:http://www.cnblogs.com/jiangzhengjun/p/4265586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!