ABAP Keyword Documentation → ABAP − Reference → Creating Objects and Values
Parameters in the User MemoryOther versions: 7.31 | 7.40 | 7.54
The user memory is a user-specific memory area of the current AS Instance, which is accessed by all ABAP sessions of a user session at once. ABAP programs have access to SPA/GPA parameters stored in the user memory (also called SET/GET parameters).
Each SPA/GPA parameter is identified by an ID of up to 20 characters. SPA/GPA parameters can either
be created explicitly using the statement
SET PARAMETER, or implicitly in a
PAI event. Once they have been
saved in the user memory, they are available to any programs and any sessions throughout the whole duration
of a user session. SPA/GPA parameters are usually evaluated by the ABAP runtime environment. In ABAP
programs, the parameters can be read using the statement
One example of a program that uses SPA/GPA parameters is user maintenance (transaction SU01). In this transaction, user-specific parameters can be entered on the Parameters tab page, which are then set when the user logs on to AS ABAP, and are evaluated by other programs.
SPA/GPA Parameters and ABAP Programs
GET PARAMETER of a program do not directly access the SPA/GPA parameters of the user memory.
- Instead, as soon as an ABAP program is rolled in to the memory, all SPA/GPA parameters in the user memory are copied to the
program memory of the program.
GET PARAMETERof a program work with the local SPA/GPA parameters of the program memory.
- As soon as a program is rolled out of the memory, all local SPA/GPA parameters are copied to the cross-session SAP memory, where they replace all SPA/GPA parameters. Any SPA/GPA parameters that do not exist in the program memory do not exist in the user memory afterwards. A roll out is performed for various reasons, such as:
- When exiting a program.
- When calling a new program using
CALL TRANSACTION, or
LEAVE TO TRANSACTION.
- During any work process change A work process is changed in the same situations that cause implicit database commits.
- In the statement
ABAP programs cannot access the user memory directly. Instead, all SPA/GPA parameters have to be imported or exported implicitly at given times, just like a file. This has consequences for programs run in parallel sessions of the same user:
- If a program sets a SPA/GPA parameter using SET PARAMETER, a program in a parallel ABAP session cannot be started until the setter program has been rolled out if it needs to access the modified parameter.
- If a program sets a SPA/GPA parameter using SET PARAMETER while another program in a parallel ABAP session is active, and the latter has been running longer than the setting program, these changes are overwritten when the program that has been running longer is rolled out.
Premature rollouts can be forced by statements such as WAIT UP TO, but the fact that the state of the user memory is always determined by the program that was last rolled out creates a serious obstacle for cross-session use of SPA/GPA parameters in programs that are running in parallel. This type of programming is therefore not recommended.
Managing SPA/GPA Parameters
The names of SPA/GPA parameters are managed in the database table TPARA. In Object Navigator in ABAP Workbench, the names of SPA/GPA parameters are created (in uppercase) in the database table TPARA and are associated with packages. The database table TPARA acts as a reservation table for SPA/GPA parameters. If SPA/GPA parameters are used in a program, the name of the parameter must be contained in the PARAMID column in the database table TPARA. Care must be taken to not overwrite SPA/GPA parameters from other applications.
If a name exists in the database table TPARA, this does not automatically mean that the corresponding parameter also exists in the user memory. SPA/GPA parameters are created only during the execution of ABAP programs.
SPA/GPA Parameters and Dynpro Fields
When defining input fields, dynpro
fields can be associated with SPA/GPA parameters by entering the name of an SPA/GPA parameter from
the database table TPARA as an attribute PARAMETER ID. If the corresponding
parameter GET PARAMETER is set and no other value is assigned to the input field, the input field is filled with the value of the SPA/GPA parameter when the
screen is sent. If the corresponding
attribute SET PARAMETER is set, the content of the input field is assigned
to the SPA/GPA parameter at the PAI event. If the parameter does not yet exist in the user memory, it is created implicitly in the PAI event. In
this association can be created using the addition
MEMORY ID of the statements
- A data transport between a dynpro field and an SPA/GPA parameter in the user memory only takes place if a global data object with the same name as the dynpro field is declared in the corresponding ABAP program.
- If the PAI event is raised using a function of type "E", no values are assigned to the SPA/GPA parameters associated with the dynpro and no parameters are created in the user memory.