12.6 Inhalte von internen Tabellen löschen 

Je nach betriebswirtschaftlicher Aufgabenstellung und der Programmablaufsteuerung könnte sich auch noch ein weiteres kleines Problem ergeben – insbesondere dann, wenn das Füllen und Verarbeiten einer internen Tabelle in einer Schleife steckt: Die Inhalte der Workarea und des Tabellenrumpfes bleiben im Programm so lange erhalten, bis sie überschrieben werden.
Bei bestimmten Verarbeitungen würde dies aber zu unsinnigen Ergebnissen führen. Falls es erforderlich ist, dass der neue Verarbeitungsschritt mit einer leeren internen Tabelle startet, müssen Arbeitsbereiche und Tabellenrumpf gelöscht bzw. initialisiert werden. Hierzu gibt es mehrere Möglichkeiten und Anweisungen, wobei die Unterscheidung zwischen internen Tabellen mit Kopfzeile und internen Tabellen ohne Kopfzeile von zentraler Bedeutung ist.
12.6.1 Workareas und interne Tabellen mit Workarea löschen 

Interne Tabellen mit Workarea werden durch die Anweisung CLEAR gelöscht. So bewirkt die folgende Anweisung das Löschen der Rumpfzeilen:
CLEAR itab01.
Die Anweisung CLEAR löscht den Tabellenrumpf komplett. Alle alten Zeilen sind nicht mehr vorhanden. Die Workarea für diese Tabelle muss gesondert initialisiert werden, und zwar mit folgender Anweisung:
CLEAR wa_itab01.
Die Anweisung REFRESH bewirkt im Umfeld von ABAP Objects genau das Gleiche und gilt daher als obsolet. Die Workarea der internen Tabelle bleibt auch von der Anweisung REFRESH unberührt und muss mit einem gesonderten CLEAR-Kommando initialisiert werden. Die Zeilen der internen Tabelle ITAB01 und ihre Workarea WA_ITAB01 werden mit zwei Anweisungen gelöscht bzw. initialisiert:
CLEAR itab01.
CLEAR wa_itab01.
Diese Anweisungen können auch komfortabel als Kettensatz formuliert werden:
CLEAR: itab01, wa_itab01.
Als Alternative zur CLEAR-Anweisung bietet sich eventuell die FREE-Anweisung an:
FREE itab01.
Während bei CLEAR die initiale Speicheranforderung reserviert bleibt, gibt FREE den gesamten durch die Tabelle beanspruchten Speicherplatz für andere Anforderungen frei. Die interne Tabelle kann zwar jederzeit erneut angesprochen werden, nur muss dann vom System erst wieder der Speicherbereich reserviert werden, was Performance kosten könnte. Selbstverständlich bleibt auch bei der FREE-Anweisung die Workarea der Tabelle unberührt.
12.6.2 Interne Tabellen mit Kopfzeile löschen 

Haben Sie eine interne Tabelle mit Kopfzeile, beispielsweise die Tabelle ITAB01, können Sie mit folgender Anweisung die Kopfzeile der internen Tabelle initialisieren:
Die alten Feldinhalte werden gelöscht und die Felder auf ihren Initialwert gesetzt. Die Einträge im Tabellenrumpf bleiben von dieser Anweisung allerdings unberührt.
Möchten Sie mit der CLEAR-Anweisung nicht nur die Kopfzeile, sondern auch die Rumpfzeilen der internen Tabelle von alten Inhalten befreien, müssen Sie zwei eckige Klammern hinter den Namen setzen:
CLEAR itab01[].
[»] Rumpfzeilen löschen
Beachten Sie, dass die Rumpfzeilen mit dieser Anweisung nicht initialisiert, sondern tatsächlich gelöscht werden.
Die Anweisung REFRESH wirkt bei beiden internen Tabellenarten gleich und löscht die Rumpfzeilen der Tabelle. Möchten Sie beispielsweise die Rumpfzeilen der internen Tabelle ITAB02 löschen, schreiben Sie:
REFRESH itab02.
Möchten Sie sowohl die Kopfzeile initialisieren als auch den Tabellenrumpf löschen, benötigen Sie zwei Anweisungen, beispielsweise:
CLEAR itab02.
REFRESH itab02.
Auch bei Tabellen mit Kopfzeile wird mit folgender Anweisung nicht nur der Tabellenrumpf gelöscht, sondern auch der reservierte Speicherbereich für andere Anforderungen freigegeben:
FREE itab03.
Wie die Anweisungen CLEAR und REFRESH wirkt auch die Anweisung FREE bei beiden internen Tabellenarten gleich; sie löscht die Zeilen des Tabellenrumpfes und gibt den reservierten Speicherplatz frei. Sie tangiert den Inhalt der Kopfzeile nicht. Für das Initialisieren der Workarea wird wiederum zusätzlich die CLEAR-Anweisung benötigt.
Die Kopfzeile der internen Tabelle wird von der FREE-Anweisung nicht tangiert. Als Alternative für CLEAR und REFRESH könnten Sie schreiben:
CLEAR itab03.
FREE itab03.