ABAP Keyword Documentation → ABAP − Reference → Declarations → Typing
Generic Typing and Full Typing
This example demonstrates how generically and fully typed formal parameters are accessed.
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 STANDARD TABLE OF struc1,
           itab2g TYPE STANDARD TABLE OF struc2,
           itab2c TYPE STANDARD 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
Three table types are declared in the class demo_typing:
- itab1ghas the row type- struc1with the components- colaand- colb. It is generic since the primary table key is not specified.
- itab2ghas the row type- struc2with the components- colband- cola. It is generic since the primary table key is not specified.
- itab2chas the row type- struc2with the components- colaand- colb. It is full since the primary table key is specified.
The method sort_itab has two formal parameters:
- pgis typed generically with- itab2g.
- pcis typed fully with- itab2c.
In the method start, an internal table tab is
declared with reference 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 and in the second sort it is specified dynamically. The behavior is as follows:
- The first SORTstatement accesses the generically typed formal parameterpgstatically. In this case, the typing withitab2gtakes priority, wherecolais the second column.
- The second SORTstatement accesses the generically typed formal parameterpgdynamically. In this case, the type of the actual parameteritab1gtakes priority, wherecolais the first column.
- The third and fourth SORTstatements access the fully typed formal parameterpcdynamically or statically. In these cases, the typing withitab2ctakes priority, wherecolais 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.