ENDFORM - werden lokale Daten verworfen?

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

ENDFORM - werden lokale Daten verworfen?

Beitrag von DeathAndPain (Top Expert / 1797 / 214 / 396 ) »
Hallo zusammen,

eine Frage beschäftigt mich, auf die hier vielleicht jemand eine Antwort weiß. Bei FORMs ist es ja (im Gegensatz etwa zu Funktionsbausteinen und ich glaube, auch zu Methoden) so, dass alle lokal mit DATA definierten Variablen bei jedem Aufruf der FORM initial sind (wer das nicht will, nimmt STATICS statt DATA). Was ich mich jetzt frage: Bedeutet das, dass die FORM an ihrem Ende auch den Speicherplatz aller lokalen Variablen sofort wieder freigibt, oder bleibt dieser trotzdem bis zum Programmende belegt? Bei internen Tabellen ist es ja z.B. so, dass das Löschen einzelner Zeilen nicht dazu führt, dass ABAP Speicher freigibt. Will ich den Speicher schon vor Programmende freigeben, dann muss ich explizit den FREE-Befehl nutzen.

Um meine Frage auf den Punkt zu bringen: Wenn ich in einer Form eine dicke interne Hilfstabelle anlege, die die Form für ihre Berechnungen braucht, die aber nach dem Verlassen der Form keine Bedeutung mehr hat, macht es dann Sinn, als letzten Befehl in der Form FREE HILFSTABELLE zu schreiben, oder macht der Interpreter das schon von sich aus?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: ENDFORM - werden lokale Daten verworfen?

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
Hi,

also in der Regel ist es ja so, dass lokale Daten auf dem Stack abgelegt werden. Willst du eine Tabelle aus dem lokalen Kontext rausbekommen, musst du sie irgendwie auf den Heap kopieren. Ich hatte schon mehrmals den Fall, dass Referenzen auf lokale Tabellen nach dem Verlassen auf bereinigten Speicher zeigten, weil die Umgebung irgendwie doch nicht so clever war wie vermutet.

Kurz: Nein, um diese Form der Speicherverwaltung sollte man sich in ABAP keine Sorgen mehr machen

Kannst du auch damit mal testen (o_ptr zeigt auf "FREED STACK"):

Code: Alles auswählen.

TYPES t_kna1_tt TYPE STANDARD TABLE OF kna1 WITH EMPTY KEY.

DATA o_ptr TYPE REF TO t_kna1_tt.

PERFORM test CHANGING o_ptr.

FORM test CHANGING co_ptr TYPE REF TO t_kna1_tt.

  DATA li_kna1 TYPE t_kna1_tt.

  SELECT *
    FROM kna1
    INTO TABLE li_kna1
    UP TO 10 ROWS.

  GET REFERENCE OF li_kna1 INTO co_ptr.

ENDFORM.

Folgende Benutzer bedankten sich beim Autor lausek für den Beitrag:
DeathAndPain


Seite 1 von 1

Vergleichbare Themen

2
Antw.
1874
Views
Hostorie - Lokale Daten
von ICO-Man » 26.04.2007 16:02 • Verfasst in Basis
0
Antw.
1263
Views
Optionen - Lokale Daten - Verzeichnis für Dokumente
von MartinZapf » 25.11.2016 08:13 • Verfasst in Sonstige Module
3
Antw.
1950
Views
Auf "Verzeichnis für lokale Daten" zugreifen
von rueschenbaum » 01.04.2006 12:19 • Verfasst in ABAP® Core
2
Antw.
1911
Views
Form / Endform in Layout funktioniert nicht
von Kona » 02.05.2006 11:30 • Verfasst in Web-Dynpro, BSP + BHTML
7
Antw.
2452
Views
Lokale Tabellen.
von Dzhan » 24.06.2008 10:22 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.