While analyzing the memory consumption of some reporting transactions (e.g. MB51, SDO1, FBL5N, ...) with transaction SM04 (-> goto Memory -> goto Memory (Session Details) -> goto Memory (I-Session Details)) I found the following behaviour on performing the following steps:
Step 1: Call reporting transaction (for example MB51)
SM04 Memory (I-Session Details) shows the following memory allocation:
int. session 1: MB51 - e.g. 2.500.000 bytes (probably from SAP Easy-Access
menu)
int. session 2: MB51 - e.g. 500.000 bytes (memory requirements of the MB51 selection screen)
Step 2: Perform selection of some data with MB51
SM04 shows the following memory allocation:
int. session 1: MB51 - e.g. 2.500.000 bytes (same as before)
int. session 2: MB51 - e.g. 6.000.000 bytes (memory requirements of the MB51 data)
Step 3: Go back to the MB51 selection screen with the back-button
SM04 shows the following memory allocation:
int. session 1: MB51 - e.g. 2.500.000 bytes (same as before)
int. session 2: MB51 - e.g. 6.000.000 bytes (same as before: memory requirements of the MB51 data from the first selection?)
new int. session 3: MB51 - e.g. 500.000 bytes (new session for the selection screen?)
Step 5: Perform another selection (with same or different selection criteria - it doesn't matter)
SM04 shows the following memory allocation:
int. session 1: MB51 - e.g. 2.500.000 bytes (same as before)
int. session 2: MB51 - e.g. 6.000.000 bytes (same as before: memory requirements of the MB51 data from the first selection?)
int. session 3: MB51 - e.g. 6.000.000 bytes (memory requirements of the MB51 data from the current selection?)
If I repeat the last two steps (go back and reselect) a few more times, the internal session number 3 releases and reallocates its memory depending on the amount of data selected/released. This is the behaviour I expected.
The question is, why the data of the first selection remains in the int. session 2 and still uses the memory there?
Is there any sense in opening a third int. session at step 3 and preserving session 2? Why is the memory of the selected data in session 2 not released when going back to the selection screen. This memory area remains allocated until I leave the transaction and so it may lead to situations where users allocate twice as much memory than they are aware of.
Thanks for any help, hints and explanations!