Show TOC Anfang des Inhaltsbereichs

Besonderheiten bei Standard-Tabellen  Dokument im Navigationsbaum lokalisieren

Während es sortierte Tabellen, Hash-Tabellen und Schlüsselangaben zu Tabellen erst seit Release 4.0 gibt, gab es Standard-Tabellen auch schon vor diesem Release. Weiterhin ist die Definition eines beliebigen Zeilentyps, die Definition von Tabellentypen und die Deklaration von Tabellen ohne Kopfzeile erst seit Release 3.0 möglich. Dies bedingt einige Besonderheiten beim Anlegen von Standardtabellen, die aus Kompatibilitätsgründen erhalten bleiben.

Standard-Tabellen vor Release 3.0

Vor Release 3.0 gab es nur interne Tabellenobjekte mit Kopfzeile, deren Zeilentyp eine flache Struktur ist. Es gab keine selbständigen Tabellentypen. Ein solches Tabellenobjekt wurde ausschließlich dadurch angelegt, dass der OCCURS-Zusatz wie folgt bei der Deklaration einer flachen Struktur zugefügt wird:

DATA: BEGIN OF itab OCCURS n,
      ...

        f1...,
        f2...,

      ...
      END OF itab.

Die Anweisungskette deklariert eine interne Tabelle itab, deren Zeilentyp der flachen Struktur entspricht, die ohne den OCCURS-Zusatz erzeugt würde. Weiterhin wird dabei immer eine Kopfzeile für die interne Tabelle angelegt.

Die Zahl n im OCCURS-Zusatz hat die gleiche Bedeutung, wie im Zusatz INITIAL SIZE ab Release 4.0. Dabei wirkt die Angabe der Zahl 0 wie das Weglassen des Zusatzes INITIAL SIZE. Der initiale Hauptspeicherbedarf der internen Tabelle wird dann vom System bestimmt.

Obige Anweisung ist auch zu Release 4.0 noch möglich und hat in etwa die gleiche Funktionalität wie folgende Anweisungen:

TYPES: BEGIN OF itab,
       ...

         f1...,
         f2...,
       ...
       END OF itab.

DATA itab TYPE STANDARD TABLE OF itab
                 WITH NON-UNIQUE DEFAULT KEY
                 INITIAL SIZE n
                 WITH HEADER LINE.

Bei der ursprünglichen Anweisung wird jedoch kein selbständiger Datentyp itab angelegt, sondern der Zeilentyp existiert nur als Attribut des Datenobjekts itab.

Standard-Tabellen seit Release 3.0

Seit Release 3.0 können Tabellentypen mit

TYPEStype TYPE|LIKE linetype OCCURS n.

und Tabellenobjekte mit

DATA itab TYPE|LIKE linetype OCCURS n [WITH HEADER LINE].

angelegt werden. Der Zusatz OCCURS bewirkt, dass aus dem Datentyp linetype eine Standard-Tabelle dieses Zeilentyps konstruiert wird. Der Zeilentyp kann ein beliebiger Datentyp sein. Die Zahl n im OCCURS-Zusatz hat die gleiche Bedeutung, wie vor Release 3.0. Interne Tabellen vor Release 4.0 hatten als Schlüssel immer den Standardschlüssel, d.h. alle nichtnumerischen Felder, die weder interne Tabellen sind noch enthalten.

Obige Anweisungen sind auch zu Release 4.0 möglich und haben genau die gleiche Funktionalität wie

TYPES|DATA itab TYPE|LIKE STANDARD TABLE OF linetype
                            WITH NON-UNIQUE DEFAULT KEY
                            INITIAL SIZE n
                            [WITH HEADER LINE].

Sie können also auch durch diese Anweisungen ersetzt werden.

Standard-Tabellen seit Release 4.0

Beim Anlegen von Standard-Tabellen sind folgende Formen der Anweisungen TYPES und DATA möglich. Die zusätzliche Angabe INITIAL SIZE ist bei allen Anweisungen möglich. Die zusätzliche Angabe WITH HEADER LINE ist bei den DATA-Anweisungen nur noch außerhalb von Klassen möglich.

Standard-Tabellentypen

Generischer Standard-Tabellentyp:

TYPESitab TYPE|LIKE [STANDARD] TABLE OF linetype.

Der Tabellenschlüssel ist nicht definiert.

Vollständig spezifizierter Standard-Tabellentyp:

TYPESitab TYPE|LIKE [STANDARD] TABLE OF linetype
                       WITH [NON-UNIQUE] key.

Der Schlüssel einer vollständig spezifizierten Standardtabelle ist immer nicht eindeutig.

Standard-Tabellenobjekte

Kurzformen der DATA-Anweisung

DATA itab TYPE|LIKE [STANDARD] TABLE OF linetype.

DATA itab TYPE|LIKE [STANDARD] TABLE OF linetype
                      WITH DEFAULT KEY.

Diese beiden DATA-Anweisungen werden vom System automatisch zur folgenden Anweisung vervollständigt:

DATA itab TYPE|LIKE STANDARD TABLE OF linetype
                      WITH NON-UNIQUE DEFAULT KEY.

Die beiden Kurzformen der DATA-Anweisung sollen dazu dienen, die Deklaration von Standard-Tabellen, die kompatibel zu den internen Tabellen vor Release 4.0 sind, möglichst einfach zu halten. Wenn in einer DATA-Anweisung Bezug auf obigen generischen Standard-Tabellentyp genommen wird, wird ebenfalls automatisch der Standardschlüssel als Tabellenschlüssel verwendet.

Vollständig spezifizierte Standard-Tabelle:

DATA itab TYPE|LIKE [STANDARD] TABLE OF linetype
                       WITH [NON-UNIQUE] key.

Der Schlüssel einer Standardtabelle ist immer nicht eindeutig.

 

Ende des Inhaltsbereichs