[SAP ABAP開發技術總結]Function遠程、同步、異步調用


 

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  目標SPACE DESTINATION選項將會被忽略,被調功能函數將作為普通函數在本機調用

l  目標BACK:用於被遠程調用的RFM程序內部的CALL FUNCTION語句中的目標指定,通過已建立的RFC連接反過來調用該函數的主調者系統中的其他功能模塊(即主調程序—>遠程系統中的RFM>又回調主調程序所在系統中的其他函數)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM