Interne Tabellen (ABAP)
Interne Tabellen sind Tabellen, die im Hauptspeicher gehalten werden. Im Gegensatz dazu werden Datenbanktabellen im Datenbanksystem abgelegt.
Der für die interne Tabelle benötigte Tabellentyp kann im Dictionary oder im ABAP Code definiert werden.
Beispiel für implizite Definition:
DATA: gt_buchregal TYPE TABLE OF gst_buch
Beispiele für explizite Definition:
" Struktur für Buch
TYPES: BEGIN OF gst_buch,
buch_titel type string,
anz_seiten type int4,
END OF gst_buch.
" Tabellentyp für Standard-Tabelle
TYPES: gtt_buchregal TYPE STANDARD TABLE OF gst_buch
WITH NON-UNIQUE DEFAULT KEY.
DATA: gt_buchregal TYPE gtt_buchregal
Dabei könnte die Struktur gst_buch
und der Tabellentyp gtt_buchregal
auch im Dictionary definiert werden.
Tabellentyp
Interne Tabellen benötigen einen Tabellentyp. Ein Tabellentyp kann per Code oder im Dictionary definiert werden. Er definiert:
- Tabellenart: z. B. STANDARD
- Zeilentyp
- Schlüsseldefinition: z. B. WITH NON_UNIQUE DEFAULT KEY
Tabellenarten
Typ | ANY* | ||
---|---|---|---|
Generisch | INDEX TABLE* | Hashed Table | |
Tabellenart | STANDARD TABLE | SORTED TABLE | HASHED TABLE |
Indexzugriff | Ja | Ja | Nein |
Schlüsselzugriff | Ja | Ja | Ja |
Schlüsseleindeutigkeit | NON-UNIQUE | UNIQUE oder NON-UNIQUE | UNIQUE |
Bemerkung | Kann und muss im
Schlüssel keine eindeutigen Werte enthalten. |
Kann und muss im
Schlüssel eindeutige Werte enthalten. |
Schlüssel muss
eindeutige Werte |
*) ANY und INDEX TABLE können als Typisierung für Schnittstellen von Methode, Funktionsbausteinen etc. verwendet werden.
Beispiel für explizite Definition:
" Tabellentyp für sortierte Tabelle
TYPES: gtt_buchregal_sortiert TYPE SORTED TABLE OF gst_buch
WITH NON-UNIQUE DEFAULT KEY.
" Tabellentyp für hashed Tabelle
TYPES: gtt_buchregal_hashed TYPE HASHED TABLE OF gst_buch
WITH UNIQUE DEFAULT KEY.
Schlüsseldefinition
Der Standardschlüssel DEFAULT KEY
umfasst alle nicht numerischen Felder des Strukturtyps.
Beispiel für explizite Definition:
" Tabellentyp für sortierte Tabelle mit Schlüsselfeld anz_seiten
TYPES: gtt_buchregal_sortiert TYPE SORTED TABLE OF gst_buch
WITH NON-UNIQUE KEY anz_seiten.
Wichtig sind folgende Einschänkungen zur Schlüsseleindeutigkeit:
Tabellenart | Schlüsseleindeutigkeit | Beschreibung |
---|---|---|
STANDARD | NON-UNIQUE | Kann mehrere Einträge mit identischen Schlüsselwerten enthalten |
SORTED | UNIQUE und NON-UNIQUE | Eindeutigkeit der Schlüsselwerte ist optional |
HASHED | UNIQUE | Einträge müssen eindeutige Schlüsselwerte tragen |
Kopfzeilen
Früher: Interne Tabellen wurden mit Kopfzeilen angelegt (Stichwort ABAP-Anweisung OCCURS).
Das heißt, die Kopfzeile ist die Arbeitsstruktur in die die Daten der Tabelle geschrieben werden.
Diese Arbeitsstruktur ist namensgleich mit dem Tabellenkorpus. Damit war eine verkürzte Notation möglich:
" Verkürzte Notation
LOOP AT <itab>
" Lange Notation
LOOP AT <itab> INTO <ws>
Empfehlung heute: Interne Tabellen ohne Kopfzeilen anlegen. Damit ist der Weg für optimierten Zugriff auf die Tabelleninhalte frei.