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.