您好,登錄后才能下訂單哦!
如何理解SAP ABAP 程序之間的調用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
一,同步調用從一個程序同步調用其他的ABAP程序,有2種方式:
1,調用程序被打斷,當被調用程序執行完畢之后,調用程序繼續執行。如:CALL FUNCTION <function>SUBMIT <program> AND RETURNCALL TRANSACTION <tcode> 使用CALL FUNCTION 'AAA'調用FM的時候,相應的FUNCTION GROUP被加載到調用程序所在的internal session。當FM執行完畢,接著執行調用程序。FUNCTION GROUP和其GLOBAL DATA會一直保存在這個internal session直到調用程序結束。當調用程序再次調用這個FM的時候,不會再次加載相應的FUNCTION GROUP。這個FUNCTON GROUP的GLOBAL DATA和第一次調用它時的內容是一樣的。 使用SUBMIT <program> AND RETURN或者CALL TRANSACTION <tcode>的時候,實際是插入了一個新的internal session,當被調用的程序執行完畢之后,新插入的internal session會被刪除,繼續執行調用程序。可以使用leave program語句來結束程序。
2,調用程序被結束,被調用程序開始執行。如:SUBMIT <program>LEAVE TO TRANSACTION <tcode>. 使用SUBMIT語句之后,調用程序從所在的internal session中被刪除了,被調用的程序被加載到這個internal session。 使用LEAVE TO TRANSACTION <tcode>之后,當前external session中的所有internal session會被刪除,并產生一個新的internal session,被調用的tcode會加載到這個新的internal session中。特別要注意的是,使用這個語句之后,ABAP MEMORY會被初始化,意思就是你不可以通過ABAP MEMORY向被調用的tcode傳值。
二,FUNCTION MODULE的異步調用CALL FUNCTION 'AAA' STARTING NEW TASK <taskname> PERFORMING <subroutine> ON END OF TASK EXPORTING .....使用上面語句之后,AAA和調用其的程序 會并行運行。可以在<subroutine>中使用RECEIVE RESULTS FROM FUNCTION 'AAA'語句來獲得FUNCTION運行的結果。值得注意的是,用STARTING NEW TASK形式的FM的processing type必須要是REMOTE-CAPABLE MODULE.
三,LOGICAL MEMORY一個用戶session可以有多個external session,可以理解你開了幾個SAP的窗口,就有幾個external session,一般設置為6個。 一個external session里可以有多個internal session(最多20個,想想LIST的LSIND為什么不能超過20)。一個程序一般來說是在一個internal session里處理的。 可以用ABAP MEMORY(EXPORT/IMPORT)和SAP MEMORY(GET/SET)在不同的程序之間傳遞數據。 一個用戶session有一個SAP MEMORY,這個用戶session里所有session都可以訪問SAP MEMORY,但是SAP MEMORY一般用于不同external session間的internal session傳值。每個external session包含一個ABAP MEMORY,屬于這個external session的internal session都可以訪問這個ABAP MEMORY,ABAP MEMORY適合在一個external session的不同internal session間傳值。 當external session終止的時候,自動會釋放其ABAP MEMORY。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。