Show TOC Anfang des Inhaltsbereichs

Tabellenzeilen verdichtet einfügen  Dokument im Navigationsbaum lokalisieren

Mit folgender speziellen Anweisung lassen sich verdichtete interne Tabellen ohne doppelte Einträge erstellen:

COLLECT wa INTO itab.

Der Zeilentyp von itab muss flach strukturiert und alle nicht zum Tabellenschlüssel gehörigen Felder müssen einen numerischen Typ (f, i, p) haben. Die einzufügende Zeile wa wird als zum Zeilentyp von itab kompatibler Arbeitsbereich angegeben.

Beim Einfügen wird überprüft ob schon ein zum Tabellenschlüssel passender Tabelleneintrag vorliegt. Wenn nicht, hat die Anweisung COLLECT die gleiche Wirkung wie beim Tabellenzeilen einfügen. Liegt aber schon ein Eintrag vor, fügt COLLECT keine neue Zeile ein, sondern addiert den Inhalt der numerischen Felder des Arbeitsbereichs zum Inhalt der entsprechenden Felder des vorhandenen Eintrags.

Beispiel

REPORT demo_int_tables_COLLECT .

DATA: BEGIN OF line,
        col1(3) TYPE c,
        col2(2) TYPE n,
        col3    TYPE i,
      END OF line.

DATA itab LIKE SORTED TABLE OF line
          WITH NON-UNIQUE KEY col1 col2.

line-col1 = 'abc'. line-col2 = '12'. line-col3 = 3.
COLLECT line INTO itab.
WRITE / sy-tabix.

line-col1 = 'def'. line-col2 = '34'. line-col3 = 5.
COLLECT line INTO itab.
WRITE / sy-tabix.

line-col1 = 'abc'. line-col2 = '12'. line-col3 = 7.
COLLECT line INTO itab.
WRITE / sy-tabix.

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

Die Listenausgabe ist:

         1

         2

         1

abc 12          10

def 34           5

Eine sortierte Tabelle wird verdichtet gefüllt. Die ersten beiden COLLECT-Anweisungen wirken wie normale Füll-Anweisungen. In der dritten COLLECT-Anweisung wird die erste Zeile von itab geändert. Die folgende Abbildung verdeutlicht die drei Schritte:

Diese Grafik wird im zugehörigen Text erklärt

 

 

Ende des Inhaltsbereichs