This is a test message to test the length of the message box.
Login
ABAP Obsolet Refresh
Erstellt von Software-Heroes

ABAP Obsolet - Refresh

Die Refresh Funktion ist schon eine ganze Weile obsolet, welche Funktion dann eigentlich nutzen? Refresh, Clear oder Free, was brauchst du wann?

Werbung

Die Funktion Refresh ist bereits seit einer ganzen Weile obsolet und wird auch nicht mehr benötigt, da bereits CLEAR und FREE zur Verfügung stehen, die das gleiche wie REFRESH können.

 

Verwendung von CLEAR

"Aber Refresh löscht doch den Tabellenkörper bei einer Tabelle mit Kopfzeile", wirst du dir vielleicht denken. Das ist richtig, aber dazu braucht man den Refresh nicht, da der Clear das gleiche kann, wenn man darauf achtet was man löschen will. Als Beispiel wie es bisher gemacht wurde:


" Löschen einer Select-Option
REFRESH: s_bukrs.
CLEAR: s_bukrs.

Nun kannst du beide Zeilen mit einer Zeile und dem Clear abbilden:


" Löschen einer Select-Option
CLEAR: s_bukrs, s_bukrs[].

Für die Angabe des Tabellenkörpers werden die eckigen Klammern [] eingesetzt, die auf die Tabelle verweisen. Wenn man dies weg lässt, wird auf die Kopfzeile verwiesen. Normale Tabellen ohne Kopfzeile benötigen keine spezielle Behandlung bei der Verabeitung und können weiterhin so genutzt werden.

Hinweis: Zudem solltest du beachten, dass die Verwendung von Tabellen mit Kopfzeilen noch viel länger obsolet ist und dies in Klassen bereits verboten ist. Select-Options und alte Reports sind die einzige Ausnahme zur Verwendung von Tabellen mit Kopfzeilen, wobei du diese mit Strukturen bearbeiten solltest, anstatt die Kopfzeile zu verwenden. 

 

Verwendung von FREE

Was macht dann eigentlich noch die Funktion FREE? Diese arbeitet bei Tabellen ebenso wie Refresh, nur das sie den bis dahin festgesetzten Speicher durch die interene Tabelle und die Daten, wieder frei gibt. Bei einem Clear wird nur die Tabelle gelöscht, Speicher der durch die Tabelle besetzt ist, wird nicht freigegeben.

Dies mag von großem Interesse sein, wenn man mit der selben Tabelle im Programm weiter arbeitet und diese viele Daten halten muss. Wenn man dann auch noch viele große Tabellen im Report hält, könnte es mit dem Speicher knapp werden.

 

Clear vs Free

Als kleines Beispiel ein Report mit einem Beispiel für die Funktionsweise der Befehle. Der Report baut zwei interne Tabellen auf, die als Grundlage die Tabelle T001 (Buchungskreis Grunddaten) haben. Dies soll ein Beispiel für eine breitere Stuktur sein.


REPORT ztest_clear_vs_free.

DATA:
  lt_tclr TYPE STANDARD TABLE OF t001,
  lt_tfre TYPE STANDARD TABLE OF t001.

" Befüllung der Sätze
DO 100000 TIMES.
  APPEND VALUE #( butxt = sy-index ) TO lt_tclr.
  APPEND VALUE #( butxt = sy-index ) TO lt_tfre.
ENDDO.

" Löschen der Daten
CLEAR lt_tclr.
FREE lt_tfre.

Zu Anfang sind beide Tabellen leer ...

... nach dem ersten Schleifendurchlauf ist die erste Zeile enthalten und Speicher allokiert ...

... zum Ende ist die Tabelle vollständig befüllt ...

... doch der eigentliche Unterschied wird nach dem Löschen der Inhalte offensichtlich ...

Der gesamte reservierte Speicher der Tabelle wurde mit Free freigegeben, die Tabelle hat den stand vor der Befüllung. Bei Clear wurden ebenfalls die Zeilen gelöscht, doch der durch die Zeilen reservierte Speicher wird weiterhin blockiert, solange die Variable existiert.

Die Speicherzuweisung findet ihr im Debugger bei der Variablenanzeige unter einem seperaten Reiter.

 

Fazit

Dies sind soweit aber nur theoretische Konstrukte und nur für die wenigsten produktiven Reports anwendbar. Die Erfahrung zeigt, dass die Verwendung von Clear völlig ausreichend ist und man nicht mehr für den täglichen Gebrauch benötigt. Unsere Empfehlung liegt also ganz klar bei der Verwendung von Clear.

 

Quelle:
Dokumentation Refresh
Dokumentation Clear
Dokumentation Free


Enthaltene Themen:
ObsoletRefresh
Kommentare (0)
Werbung

ABAP - Namenskonventionen

Kategorie - ABAP

Wie wichtig sind heutzutage noch die Einhaltung von Namenskonventionen oder überhaupt die Verwendung von Namenskonventionen im modernen ABAP Umfeld? Das wollen wir uns in diesem Artikel anschauen.

09.04.2021

ABAP - INSERT verwenden

Kategorie - ABAP

APPEND hat in ABAP bereits eine lange Geschichte, doch dieser wird in Zukunft immer weniger eine Rolle spielen. Wir zeigen dir wieso.

11.12.2020

ABAP Obsolet - Zuweisung und Berechnung

Kategorie - ABAP

Wie funktioniert das eigentlich mit den Zuweisungen und der Berechnung in ABAP? Hier erfährst du die aktuellen Sprachkonstrukte und was du vermeiden solltest.

26.06.2020

ABAP Obsolet - Range und Kopfzeilen

Kategorie - ABAP

Eine ordentliche Range zur Übergabe erzeugen? Tabellen mit oder ohne Kopfzeilen? Wir zeigen dir was noch geht und was du lieber sein lassen solltest.

12.06.2020

ABAP Obsolet - DESCRIBE

Kategorie - ABAP

Wieder haben wir für dich einen meist genutzten ABAP Begriff, für den es bereits eine neue Alternative gibt, dieses mal aber nicht nur Eine.

15.11.2019

Wir verwenden Cookies für unsere Dienste und Funktionen. Mehr Informationen