ABAP Keyword Documentation → ABAP - Reference → Declarations → Typing
Generic and Complete Typing
The example shows how to access generically and completely typed formal parameters.
Other versions: 7.31 | 7.40 | 7.54
Source Code
REPORT demo_typing.
CLASS demo_typing DEFINITION.
PUBLIC SECTION.
CLASS-METHODS start.
PRIVATE SECTION.
TYPES: BEGIN OF struc1,
cola TYPE i,
colb TYPE i,
END OF struc1,
BEGIN OF struc2,
colb TYPE i,
cola TYPE i,
END OF struc2,
itab1g TYPE TABLE OF struc1,
itab2g TYPE TABLE OF struc2,
itab2c TYPE TABLE OF struc2 WITH NON-UNIQUE DEFAULT KEY.
CLASS-METHODS sort_itab IMPORTING VALUE(pg) TYPE itab2g
VALUE(pc) TYPE itab2c.
ENDCLASS.
CLASS demo_typing IMPLEMENTATION.
METHOD start.
DATA: tab TYPE itab1g,
wa LIKE LINE OF tab.
tab = VALUE #(
FOR j = 1 UNTIL j > 5
( cola = j colb = 6 - j ) ).
sort_itab( pg = tab
pc = tab ).
ENDMETHOD.
METHOD sort_itab.
DATA(out) = cl_demo_output=>new( ).
SORT pg BY cola.
out->write_data( pg ).
SORT pg BY ('COLA').
out->write_data( pg ).
SORT pc BY cola.
out->write_data( pc ).
SORT pc BY ('COLA').
out->write_data( pc ).
out->display( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo_typing=>start( ).
Description
In the class demo_typing, three table types are declared:
itab1ghas the line typestruc1with the componentscolaandcolb. It is generic since the primary table key has not been specified.
itab2ghas the line typestruc2with the componentscolbandcola. It is generic since the primary table key has not been specified.
itab2chas the line typestruc2with the componentscolaandcolb. It is complete since the primary table key has been specified.
The method sort_itab has two formal parameters:
pgis typed generically withitab2g.
pcis typed completely withitab2c.
In the method start, an internal table tab is
declared by referring to itab1g. The key is specified implicitly. This table is filled and passed to the formal parameters of sort_itab.
In sort_itab, both formal parameters are sorted twice. In the first sort,
the column cola is specified statically as a sort criterion, in the second sort, it is specified dynamically. The behaviour is as follows:
- The first
SORTstatement statically accesses the generically typed formal parameterpg. In this case, the typing withitab2gtakes priority in whichcolais the second column.
- The second
SORTstatement dynamically accesses the generically typed formal parameterpg. In this case, the type of the actual parameteritab1gtakes priority in whichcolais the first colulmn.
- The third and fourth
SORTstatements dynamically or statically access the completely typed formal parameterpc. In these cases, the typing withitab2ctakes priority in whichcolais the second column.
If components of generically typed formal parameters are accessed dynamically, a runtime error may occur if the components do not exist in the actual parameter.