SAP Session有分external session和internal session.
External session最多有6個;一般每次打開一個新的Transaction code都可以看做一個external session.
Internal session最多有9個;當程序運行的時候,會產生多個internal session,這些internal session都是存儲在一個stack裏。當在程序中使用CALL Transacton .. and return或者submit < program>都會產生一個新的open internal session;當程序運行結束的時候,這個internal session會被deleted.
由於function module或method不能直接被loaded到program session,這需要通過function group 或global class pool來裝載。每個function module都會運行在一個獨立internal session; 如果2個程序調用的Function module都在同一個function group時候,那麼可以通過functon group進行數據的交互。
其實,在SAP 程序裝載運行的時候,都會產生一個program group,會同時伴隨一個main program group和多個additional program group.那麼通過main program group來訪問additional program group,這樣就實現了在主程序中調用function module或method.
Subroutine並不會產生一個新的open internal session.
Leave to transaction這條語句會destroy所有的internal session,並創建一個新的open internal session.