Anfang des Inhaltsbereichs

Interne Tabellen zuweisen Dokument im Navigationsbaum lokalisieren

Wie jedes Datenobjekt können interne Tabellen Operanden der MOVE-Anweisung

MOVE <itab1> TO <itab2>.

oder der gleichbedeutenden Zuweisung

<itab2> = <itab1>.

sein. Beide Operanden müssen kompatibel oder ineinander konvertierbare interne Tabellen sein. Diese Anweisungen weisen den gesamten Inhalt der Tabelle <itab1> der Tabelle <itab2> zu, einschließlich der Daten von eventuell geschachtelten internen Tabellen. Der ursprüngliche Inhalt der Zieltabelle wird dabei überschrieben.

Bei Tabellen mit Kopfzeile ist zu beachten, daß Kopfzeile und Tabellenkörper den gleichen Namen haben. Um nicht die Kopfzeile, sondern die Tabelle selbst bei einer Zuweisung anzusprechen, müssen hinter dem Namen zwei eckige Klammern ( []) angehängt werden.

Beispiel

DATA: BEGIN OF line,
        col1(1) TYPE c,
        col2(1) TYPE c,
      END OF line.

DATA: etab LIKE TABLE OF line WITH HEADER LINE,
      ftab LIKE TABLE OF line.

line-col1 = 'A'. line-col2 = 'B'.

APPEND line TO etab.

MOVE etab[] TO ftab.

LOOP AT ftab INTO line.
  WRITE: / line-col1, line-col2.
ENDLOOP.

Die Listenausgabe ist:

A B

Es werden zwei Standard-Tabellen ETAB und FTAB mit dem Zeilentyp der Struktur LINE angelegt. ETAB hat eine Kopfzeile. Nach dem zeilenweisen füllen von ETAB mit APPEND, wird ihr gesamter Inhalt an FTAB zugewiesen, wobei der Gebrauch der eckigen Klammern zu beachten ist.

Beispiel

DATA: ftab TYPE SORTED TABLE OF f
           WITH NON-UNIQUE KEY table_line,
      itab TYPE HASHED TABLE OF i
           WITH UNIQUE KEY table_line,
      fl   TYPE f.

DO 3 TIMES.
  INSERT sy-index INTO TABLE itab.
ENDDO.

ftab = itab.

LOOP AT ftab INTO fl.
  WRITE: / fl.
ENDLOOP.

Die Listenausgabe ist:

1.000000000000000E+00

2.000000000000000E+00

3.000000000000000E+00

FTAB ist eine sortierte Tabelle mit Zeilentyp F und nicht eindeutigem Schlüssel. ITAB ist eine Hash-Tabelle mit Zeilentyp I und eindeutigem Schlüssel. Die Zeilentypen und damit die gesamten Tabellen sind ineinander konvertierbar. Daher kann der Inhalt von ITAB an FTAB zugewiesen werden. Bei der Zuweisung der unsortierten Tabelle ITAB an die sortierte Tabelle FTAB wird der Inhalt automatisch nach deren Schlüssel sortiert.

Beispiel

Die folgende Konvertierung ist in einem Unicode-System verboten:

DATA: BEGIN OF iline,
        num TYPE i,
      END OF iline,

      BEGIN OF fline,
        num TYPE f,
      END OF fline,

      itab LIKE TABLE OF iline,
      ftab LIKE TABLE OF fline.

DO 3 TIMES.
  iline-num = sy-index.
  APPEND iline-num TO itab.
ENDDO.

ftab = itab.

loop AT ftab INTO fline.
  WRITE: / fline-num.
ENDLOOP.

Die Listenausgabe kann in einem Nicht-Unicode-Sytem so aussehen:

6.03823403895813E-154

6.03969074613219E-154

6.04114745330626E-154

Die Zeilentypen der Standard-Tabellen ITAB und FTAB sind Strukturen, jede mit jeweils einer Komponente des Typs I oder F. Die Zeilentypen sind konvertierbar, jedoch nicht kompatibel. Bei der Zuweisung von ITAB zu FTAB wird daher der Inhalt der Tabelle ITAB zeilenweise in Felder vom Typ C konvertiert und den Zeilen von FTAB zugewiesen. ABAP interpretiert die übergebenen Daten als Felder vom Typ F und erhält sinnlose Ergebnisse. In einem Unicode-System ist die Konvertierung von numerischen Feldern in Felder vom Typ C verboten.

Ende des Inhaltsbereichs