Show TOC Anfang des Inhaltsbereichs

Interne Tabellen initialisieren  Dokument im Navigationsbaum lokalisieren

Wie alle Datenobjekte können interne Tabellen mit der Anweisung

CLEAR itab.

initialisiert werden. Dabei wird der für die Tabelle benötigte Hauptspeicherplatz bis auf die initiale Speicheranforderung freigegeben.

Bei Tabellen mit Kopfzeile ist zu beachten, dass Kopfzeile und Tabellenkörper den gleichen Namen haben. Um nicht die Kopfzeile, sondern die Tabelle selbst beim Initialisieren mit CLEAR anzusprechen, müssen hinter dem Namen zwei eckige Klammern ([]) angehängt werden:

CLEAR itab[].

Um sicher zu gehen, dass die Tabelle selbst initialisiert wird und nicht eine eventuell vorhandene Kopfzeile, kann man die Anweisung

REFRESH itab.

verwenden, die immer auf den Tabellenkörper zugreift. Auch bei REFRESH bleibt die initiale Speicheranforderung für die Tabelle reserviert. Dieser Speicherplatz kann mit der Anweisung:

FREE itab.

frei gegeben werden. Mit FREE kann eine interne Tabelle auch direkt initialisiert und ihr gesamter Speicherplatz inklusive der initialen Speicheranforderung freigegeben werden, ohne dass vorher REFRESH oder CLEAR verwendet werden muss. FREE greift wie REFRESH auf den Tabellenkörper und nicht auf den Tabellenarbeitsbereich zu. Nach einer FREE-Anweisung ist die interne Tabelle weiterhin vorhanden. Sie belegt noch Speicherplatz für den Tabellen-Header (zur Zeit 256 Byte). Bei erneutem Füllen reserviert das System den Speicherplatz für die Zeilen neu.

Beispiel

REPORT demo_int_tables_clear.

DATA: BEGIN OF line,
         col1(1) TYPE c,
         col2(1) TYPE c,
      END OF line.

DATA itab LIKE TABLE OF line.

line-col1 = 'A'. line-col2 = 'B'.

APPEND line TO itab.

REFRESH itab.

IF itab IS INITIAL.
  WRITE 'itab is empty'.
  FREE itab.
ENDIF.

Die Listenausgabe ist:

itab is empty.

Es wird eine Standard-Tabelle itab gefüllt und dann mit REFRESH initialisiert. In der IF-Anweisung wird mit dem logischen itab IS INITIAL geprüft, ob itab leer ist. Ist itab leer, wird auch der Speicherplatz freigegeben.

 

 

Ende des Inhaltsbereichs