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>... <f n> INTO <fg>.

Diese Anweisung definiert die Felder der Feldgruppe <fg>. Die Feldgruppe <fg> muß zuvor mit der Anweisung FIELD-GROUPS definiert werden. Als Felder <f i > 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 <f i > 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 muß 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