Show TOC Anfang des Inhaltsbereichs

Extrakt definieren  Dokument im Navigationsbaum lokalisieren

Die Definition eines Extrakts erfolgt in zwei Schritten. Erst müssen die Einzelsätze deklariert und dann ihre Struktur definiert werden.

Extraktsätze als Feldgruppen deklarieren

Ein Extraktdatenbestand besteht aus einer Folge von Sätzen. Die Sätze können unterschiedlicher Struktur sein. Alle Sätze einheitlicher Struktur bilden eine Satzart. Alle Satzarten eines Extraktdatenbestands müssen mit der Anweisung FIELD-GROUPS als Feldgruppen deklariert werden:

FIELD-GROUPS fg.

Diese Anweisung deklariert eine Feldgruppe fg. Eine Feldgruppe ist eine Zusammenfassung mehrerer Felder unter einem Namen. Feldgruppen sollten am besten zu Beginn des Programms am Ende des Deklarationsteils deklariert werden.

Eine Feldgruppe stellt keinen Speicherplatz für die Felder bereit, sondern enthält Zeiger auf existierende Felder. Beim Füllen des Extraktdatenbestands mit Sätzen, bestimmen diese Zeiger den Inhalt der abgespeicherten Sätze.

Es kann eine spezielle Feldgruppe header definiert werden:

FIELD-GROUPS header.

Diese Feldgruppe wird beim Füllen des Extraktdatenbestands automatisch jeder der übrigen Feldgruppen vorangestellt. D.h. im Extraktdatenbestand enthält ein Satz einer Feldgruppe fg im vorderen Teil immer die Felder der Feldgruppe header. Diese Felder dienen beim Sortieren des Extraktdatenbestands als Standardsortierschlüssel.

Struktur der Feldgruppe definieren

Um die Struktur eines Einzelsatzes zu definieren, müssen wie folgt Felder in die entsprechende Feldgruppe aufgenommen werden: 

INSERT f1... fn INTO fg.

Diese Anweisung definiert die Felder der Feldgruppe fg. Die Feldgruppe fg muss zuvor mit der Anweisung FIELD-GROUPS definiert werden. Als Felder f1... fn dürfen nur global sichtbare Datenobjekte des ABAP-Programms verwendet werden. Lokale Datenobjekte, die in einer Prozedur definiert sind, können nicht in eine Feldgruppe aufgenommen werden.

Die Anweisung INSERT stellt wie die Anweisung FIELD-GROUPS keinen Speicherplatz für Felder bereit und überträgt keine Werte. Die Anweisung INSERT erzeugt in der Feldgruppe fg Zeiger auf die Felder f1... fn und definiert damit die Struktur der Extraktsätze.

Während der Programmausführung können solange Felder in eine Feldgruppe aufgenommen werden, bis diese Feldgruppe zum ersten mal verwendet wird, um einen Extraktsatz zu füllen. Erst ab diesem Zeitpunkt liegt die Struktur des Satzes fest und darf nicht mehr geändert werden. Vor der ersten Verwendung ist eine Feldgruppe also beliebig dynamisch erweiterbar.

Da die spezielle Feldgruppe header Teil jedes Extraktsatzes ist, kann die Struktur der Feldgruppe header nach dem Füllen des ersten Extraktsatzes nicht mehr geändert werden.

Ein Feld kann zwar in mehreren Feldgruppen vorkommen, dies führt jedoch zu unnötiger mehrfacher Datenhaltung im Extraktdatenbestand. Die Struktur einer Feldgruppe muss nicht unbedingt explizit mit INSERT definiert werden. Falls die Feldgruppe header definiert ist, besteht eine undefinierte Feldgruppe implizit aus den Feldern der Feldgruppe header, ansonsten bleibt sie leer.

Beispiel

REPORT demo_extract_field_groups.

NODES: spfli, sflight.

FIELD-GROUPS: header, flight_info, flight_date.

INSERT: spfli-carrid spfli-connid sflight-fldate
        INTO header,
        spfli-cityfrom spfli-cityto
        INTO flight_info.

Das Programm sei mit der logischen Datenbank F1S verknüpft. Die Anweisung NODES deklariert die entsprechenden Schnittstellen-Arbeitsbereiche.

Es werden drei Feldgruppen erzeugt. Mit der INSERT-Anweisung werden in zwei der Feldgruppen Felder aufgenommen.

 

Ende des Inhaltsbereichs