您的位置:首页 > 其它

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

2015-02-01 15:24 246 查看


声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:/article/6606733.html

20.1. Function调用... 233

20.1.1. 更新FM:LUW.. 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. 更新FM:LUW

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 PERFORMINGreturn_form ON END OF TASK

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

等待多个异步调用的返回结果:WAIT UNTILlog_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—>又回调主调程序所在系统中的其他函数)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: