Show TOC Anfang des Inhaltsbereichs

Datenbereiche für Feldsymbole  Dokument im Navigationsbaum lokalisieren

Feldsymbolen können Datenobjekte nur aus den Datenbereichen des ABAP-Programms zugewiesen werden. Während der Zuweisungen von Datenobjekten an Feldsymbole werden zur Laufzeit Prüfungen durchgeführt, um bei fehlerhaften Adreßzuweisungen außerhalb der Datenbereiche unkontrollierte Datenverluste zu verhindern.

Die Datenbereiche eines ABAP-Programms sind:

·        Der Tabellenspeicherbereich für interne Tabellen. Die Größe dieses Datenbereichs hängt von der Zahl der Tabellenzeilen ab, die nicht statisch ist, sondern zur Laufzeit dynamisch festgelegt wird.

·        Der DATA-Speicherbereich für andere Datenobjekte. Die Größe dieses Datenbereichs wird während der Datendeklaration festgelegt.

Feldsymbole können nicht auf Inhalte außerhalb dieser Bereiche zeigen. Wird bei einer Zuweisung von Datenobjekten ein derartiger Versuch Laufzeit registriert, kommt es zu einem Laufzeitfehler.

Bestimmte Systeminformationen, z.B. Kontrollblöcke interner Tabellen, sind ebenfalls im DATA-Speicherbereich abgelegt, so dass trotz Laufzeitprüfungen einige dieser Felder unbeabsichtigt überschrieben und dadurch Folgefehler verursacht werden können (z.B. Zerstörung von Tabellen-Headern).

Beispiel

REPORT demo_field_symbols_assign_err.

DATA: text1(10) TYPE c, text2(10) TYPE c, text3(5) TYPE c.

FIELD-SYMBOLS <fs> TYPE ANY.

DO 100 TIMES.                          "Runtime-Error!
  ASSIGN text1+sy-index(1) TO <fs>.
ENDDO.

Nach dem Starten von DEMO kommt es zu einem Laufzeitfehler. Der Beginn der Abbruchmeldung ist:

Diese Grafik wird im zugehörigen Text erklärt

Der DATA-Speicherbereich hat eine Breite von mindestens 25 Byte (es können Vergrößerungen um einige Byte durch Ausrichtung der Datenbereiche im Speicher auftreten). In einem der Schleifendurchläufe wird die Zuweisung einer Adresse außerhalb dieses Bereichs versucht. Die Abbruchmeldung zeigt weiter unten auch den Inhalt des Felds sy-index, der von Fall zu Fall etwas unterschiedlich sein kann. Bis mindestens zum 24. Schleifendurchlauf tritt kein Fehler auf. Ersetzt man in der ASSIGN-Anweisung text1 durch text2, tritt der Fehler zehn Schleifendurchläufe früher auf.

 

 

 

Ende des Inhaltsbereichs