[ABAP] Tabellentypen mit Beispielen

Übersicht interne Tabellen: Link

Beispieltyp

TYPES: BEGIN OF ty_long,
         posnr   TYPE posnr,
         matnr   TYPE matnr,
         vbeln   TYPE vbeln,
         flag_ok TYPE boolean,
       END OF ty_long.

STANDARD TABLE

* unsortiert, kann mit SORT sortiert werden
* Zugriff über Index und Schlüssel

DATA: it_st TYPE STANDARD TABLE OF ty_long WITH DEFAULT KEY.

SORTED TABLE

* nach definiertem Schlüssel sortiert
* Zugriff über Index und Schlüssel
* wenn Zugriff über Schlüssel
* schnell, da binäre Suche  

* Primary Key: posnr
* Secondary Key: flag
DATA: it_so TYPE SORTED TABLE OF ty_long WITH UNIQUE KEY posnr WITH NON-UNIQUE SORTED KEY flag COMPONENTS flag_ok.

* Primary Key: table_line
DATA: it_sorted TYPE SORTED TABLE OF string WITH UNIQUE KEY table_line.

HASHED TABLE

* Zugriff nur über eindeutigen Schlüssel, kein Index
* Zugriff nur über einen unique-Schlüssel -> jeder Schlüsselwert darf nur einmal vorkommen, sonst Exception
* schnell, wenn alle Schlüsselfelder einbezogen werden

* Primary Key: DEFAULT KEY
DATA: it_hadk TYPE HASHED TABLE OF ty_long WITH UNIQUE DEFAULT KEY.

* Primary Key: posnr
DATA: it_hauk TYPE HASHED TABLE OF ty_long WITH UNIQUE KEY posnr.

* Primary Key: DEFAULT KEY
* Secondary Key: flag 
DATA: it_hask TYPE HASHED TABLE OF ty_long WITH UNIQUE DEFAULT KEY WITH NON-UNIQUE SORTED KEY flag COMPONENTS flag_ok.

* Primary Key: posnr, matnr, vbeln
* Secondary Key: flag 
DATA: it_hauksk TYPE HASHED TABLE OF ty_long WITH UNIQUE KEY posnr matnr vbeln WITH NON-UNIQUE SORTED KEY flag COMPONENTS flag_ok.

[ABAP] Interne Tabelle mit Strings definieren

* Variante 1: unsortiert, ohne Schlüssel
DATA(it_names) = VALUE stringtab( ( |Horst| )
                                  ( |Udo| )
                                  ( |Heinz| ) ).

* Variante 2: sortiert, mit Schlüssel
TYPES: ty_sorted TYPE SORTED TABLE OF string WITH UNIQUE KEY table_line.

* strings dürfen nicht doppelt auftreten, sonst Duplicate-Key-Exception.
DATA(it_sorted) = VALUE ty_sorted( ( |Horst| )
                                   ( |Udo| )
                                   ( |Heinz| ) ).