Interne Tabellen initialisieren 

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, daß 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, daß 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 daß vorher REFRESH oder CLEAR verwendet werden muß. 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.

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.