Show TOC Anfang des Inhaltsbereichs

Kopfzeilen als Arbeitsbereich  Dokument im Navigationsbaum lokalisieren

AchtungDas Arbeiten mit Kopfzeilen bei internen Tabellen ist in Klassen verboten und steht nur noch aus Gründen der Kompatibilität zu Releases vor 4.6 bzw. 6.10 zur Verfügung. Der Zusatz kann bei den unten aufgelisteten Anweisungen in älteren Programmen noch gefunden werden, sollte aber nicht mehr verwendet werden.

 

Beim Anlegen von internen Tabellen kann eine gleichnamige Kopfzeile deklariert werden. Die Kopfzeile kann in den Operationen mit einzelnen Zeilen als Arbeitsbereich verwendet werden, der zum Zeilentyp der internen Tabelle kompatibel ist. Die entsprechenden ABAP-Anweisungen haben Kurzformen, bei denen die explizite Angabe eines Arbeitsbereichs entfällt und bei denen die Kopfzeile implizit als Arbeitsbereich verwendet wird. Die folgende Tabelle stellt die expliziten Anweisungen ohne Verwendung einer Kopfzeile den impliziten Anweisungen mit Verwendung einer Kopfzeile gegenüber:

Operationen ohne Kopfzeile

Operationen mit Kopfzeile

Operationen für alle Tabellenarten

INSERT wa INTO TABLE itab.

INSERT TABLE ITAB.

COLLECT wa INTO itab.

COLLECT itab.

READ TABLE itab... INTO wa.

READ TABLE itab...

MODIFY TABLE itab FROM wa...

MODIFY TABLE itab...

MODIFY itab FROM wa...WHERE...

MODIFY itab... WHERE...

DELETE TABLE itab FROM wa.

DELETE TABLE itab.

LOOP AT ITAB INTO wa...

LOOP AT ITAB...

Operationen für Index-Tabellen

APPEND wa TO itab.

APPEND itab.

INSERT wa INTO itab...

INSERT itab...

MODIFY itab FROM wa...

MODIFY itab...

Die implizite Verwendung der Kopfzeile macht die Anweisungen zwar kürzer, aber nicht unbedingt lesbarer, da Ziel- und Quellfeld der Zuweisungen nicht ersichtlich sind. Weiterhin kann auch die Namensgleichheit zwischen interner Tabelle und Kopfzeile bei Operationen mit der gesamten internen Tabelle zu Verwirrung führen. Um Tabelle und Arbeitsbereich unterscheidbar zu machen, sollten deshalb Operationen auf internen Tabellen möglichst mit Arbeitsbereichen erfolgen, die andere Namen als die Tabelle haben.

Beispiel

Im folgenden werden zwei Programme gegenübergestellt, die eine interne Tabelle mit und ohne Kopfzeile bearbeiten. Die Funktion beider Programme ist identisch.

Bearbeitung mit Kopfzeile:

TYPES: BEGIN OF line,
         col1 TYPE i,
         col2 TYPE i,
       END OF line.

DATA itab TYPE HASHED TABLE OF line WITH UNIQUE KEY col1
               WITH HEADER LINE.

DO 4 TIMES.
  itab-col1 = sy-index.
  itab-col2 = sy-index ** 2.
  INSERT TABLE itab.
ENDDO.

itab-col1 = 2.
READ TABLE itab FROM itab.

itab-col2 = 100.
MODIFY TABLE itab.

itab-col1 = 4.
DELETE TABLE itab.

LOOP AT itab.
  WRITE: / itab-col1, itab-col2.
ENDLOOP.

Bearbeitung ohne Kopfzeile:

TYPES: BEGIN OF line,
         col1 TYPE i,
         col2 TYPE i,
       END OF line.

DATA: itab TYPE HASHED TABLE OF line WITH UNIQUE KEY col1,
      wa LIKE LINE OF itab.

DO 4 TIMES.
  wa-col1 = sy-index.
  wa-col2 = sy-index ** 2.
  INSERT wa INTO TABLE itab.
ENDDO.

wa-col1 = 2.
READ TABLE itab FROM wa INTO wa.

wa-col2 = 100.
MODIFY TABLE itab FROM wa.

wa-col1 = 4.
DELETE TABLE itab FROM wa.

LOOP AT itab INTO wa.
  WRITE: / wa-col1, wa-col2.
ENDLOOP.

Die Listenausgabe ist in beiden Fällen:

         1         1

         2       100

         3         9

Die Anweisungen des Programms ohne Verwendung einer Kopfzeile sind aussagekräftiger. Als weiteren Schritt könnte man z.B. einen weiteren Arbeitsbereich einführen, der nur zur Spezifikation des Schlüssels dient und dem keine Werte aus der Tabelle zugewiesen werden.

 

 

Ende des Inhaltsbereichs