External session: - when user logs on to R/3 system, the system Creates a new terminal session
called external session. E.g. System Session.
Internal session: - created by calling a transaction (with CALL TRANSACTION), a dialog module
(with CALL DIALOG) or a report (with SUBMIT or RETURN).
In general each user can open up to six R/3 windows in a single SAPgui session. Each of these
windows corresponds to a session on the application server with its own area of shared memory.
The first application program that you start in a session opens an internal session within the main
session. The internal session has a memory area that contains the ABAP program and its
associated data. When the program calls external routines (methods, subroutines or function
modules) their main program and working data are also loaded into the memory area of the internal
Only one internal session is ever active. If the active application program calls a further application
program, the system opens another internal session. Here, there are two possible cases: If the
second program does not return control to the calling program when it has finished running, the
called program replaces the calling program in the internal session. The contents of the memory of
the calling program are deleted. If the second program does return control to the calling program
when it has finished running, the session of the called program is not deleted. Instead, it becomes
inactive, and its memory contents are placed on a stack.
The memory area of each session contains an area called ABAP memory. ABAP memory is
available to all internal sessions. ABAP programs can use the EXPORT and IMPORT statements to
access it. Data within this area remains intact during a whole sequence of program calls. To pass
data to a program which you are calling, the data needs to be placed in ABAP memory before the
call is made. The internal session of the called program then replaces that of the calling program.
The program called can then read from the ABAP memory. If control is then returned to the program
which made the initial call, the same process operates in reverse.
All ABAP programs can also access the SAP memory. This is a memory area to which all sessions
within a SAPgui have access. You can use SAP memory either to pass data from one program to
another within a session, or to pass data from one session to another. Application programs that use
SAP memory must do so using SPA/GPA parameters (also known as SET/GET parameters). These
parameters are often used to preassign values to input fields. You can set them individually for
users, or globally according to the flow of an application program. SAP memory is the only
connection between the different sessions within a SAPgui.