Kopfzeilen als Arbeitsbereich 

Beim Anlegen von internen Tabellenobjekten 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.

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.