A dynamic selection is a selection condition that can be entered on a dynamically created selection screen. The associated selection screens are generated, displayed, and processed by the system function modules FREE_SELECTIONS_.... of the function group SSEL. The selection screens can be displayed as standalone screens, or integrated into the screens of other dynpros or selection screens as a subscreen. Dynamic selections can be incorporated into logical database or used in any programs.
If used wrongly, dynamic programming techniques can present a serious security risk. Any dynamic content
that is passed to a program from the outside must be checked thoroughly or escaped before being used
in dynamic statements. This can be done using the system class CL_ABAP_DYN_PRG or the predefined function
Security Risks of Input from Outside.
Dynamic Selections in Logical Databases
can provide dynamic selections on their selections screens to specify further dynamic selection conditions
for individual nodes of the logical database, in addition to the parameters and selection criteria already
defined statically in the database. These dynamic conditions can then be evaluated in the database program
of the logical database. Dynamic selections of a logical database can be declared simply using the addition
of the statement
SELECTION-SCREEN in the database.
The ABAP runtime environment is responsible for calling function modules to create, display, and handle dynamic selections. The selections entered by the user are passed directly to data objects of the database program and can be evaluated there. For more information, see Logical Databases - Dynamic Selections.
The special addition WITH
FREE SELECTIONS of the statement
is used to pass parameters to selection screens of logical databases that provide dynamic selections. If this addition is used, the function modules mentioned above are generally also implemented.
Dynamic Selections in All Programs
In ABAP programs that work with classical dynpros, dynamic selections can be provided by the direct use of the following two function modules:
The function module FREE_SELECTIONS_INIT determines the entities for which dynamic selections are to be made. This could be, for example, database tables from ABAP Dictionary or any selection of valid fields. The result of the function module is a selection ID, which must be passed to the function module FREE_SELECTIONS_DIALOG.
The function module FREE_SELECTIONS_DIALOG can display differently configured selection screens in different
formats. Users can enter dynamic selections on these selection screens for the fields provided there
and, if required, can also choose fields for which they want to perform dynamic selections. If
Save is chosen, the function module returns the specified selections to the caller in three different formats, which the caller can take from the following
This parameter passes an internal table with the conditions
sql_condgenerated according to the dynamic selections for dynamic specification in the
This parameter passes an internal table with the ranges tables generated according to the dynamic selections and that can be evaluated using the predicate relational operator
WHEREconditions or comparison expressions.
This parameter passes an internal table with conditions generated according to the dynamic selections in an internal format (Reverse Polish Notation). This format can then be passed to the function module FREE_SELECTIONS_INIT to prepare a selection screen that is predefined with these selections. This format is also required for passes made to called programs using the addition
WITH FREE SELECTIONSof the statement
For more information, see the documentation about function modules and their parameter interface.
See Dynamic Selections.