Zusatztabelle zuordnen 
Um für eine Tabelle einer Datenquelle eine Zusatztabelle zu definieren, gehen Sie folgendermaßen vor:
Klicken Sie die Tabelle, der Sie eine Zusatztabelle zuordnen möchten, doppelt an, und wählen Sie die Funktion Zusätze.
Wählen Sie die Funktion Anlegen (unten auf der rechten Bildschirmhälfte).
Es erscheint ein Dialogfenster, auf dem zunächst über Auswahlknöpfe festgelegt werden muß, ob eine Zusatztabelle, eine Zusatzstruktur, ein Zusatzfeld oder ein Coding definiert werden soll.
Hinweis
Bei der Funktion Ändern, die auch über einen Doppelklick ausgelöst wird, wird direkt in das entsprechende Pflegebild verzweigt.
Wählen Sie Zusatztabelle und geben Sie den Namen der Zusatztabelle ein. Zulässig sind alle Tabellen, die im ABAP Dictionary eingetragen sind oder die zuvor im InfoSet als Alias-Tabellen vereinbart wurden (siehe unten Zusatztabellen mehrfachzuordnen).
Haben Sie als Datenquelle eine logische Datenbank gewählt, erzeugt das System dann in einem weiteren Dialogfenster die entsprechende SELECT-Anweisung. Außerdem schlägt es eine Reihenfolge der Anordnung dieser SELECT-Anweisung im Coding-Abschnitt generierter Query-Reports zum Ereignis GET der Tabelle der log. Datenbank vor. Die Reihenfolge kann wichtig sein, wenn z.B. ein Tabellenfeld, das seinen Wert durch eine SELECT-Anweisung erhält, als Schlüssel in der WHERE-Bedingung der SELECT-Anweisung für eine andere Tabelle verwendet werden soll und beide Zusatztabellen der gleichen Tabelle der logischen Datenbank zugeordnet sind.
Das System zeigt Ihnen die Schlüsselfelder für die angegebene Tabelle an. Oft macht Ihnen das System auch gleich einen Vorschlag, wie das Schlüsselfeld gefüllt werden könnte. Als Sprachenschlüssel wird Ihnen z.B. immer SY-LANGU vorgeschlagen. In vielen Fällen wäre aber ein Vorschlag nicht sinnvoll, und Sie müssen das Schlüsselfeld selbst füllen.
Die Option intern puffern kann zur Verbesserung der Performance von Query-Reports benutzt werden. Ist diese Option gesetzt, so werden in Queries, die diese Zusatztabelle verwenden, alle gelesenen Sätze dieser Tabelle in einer internen Tabelle gesammelt. Wird ein Satz der Tabelle benötigt, so wird zunächst überprüft, ob dieser Satz bereits in der internen Tabelle vorhanden ist. Nur wenn das nicht der Fall ist, wird mit Hilfe einer SELECT SINGLE Anweisung der Satz aus der Datenbanktabelle gelesen und in die interne Tabelle aufgenommen. Die interne Pufferung bewirkt also, daß ein Satz der Zusatztabelle pro Ausführung einer Query höchstens einmal gelesen wird.
Hinweis
Die Option intern puffern sollte nur verwendet werden, wenn zu erwarten ist, daß bei der Abarbeitung einer Query ein Satz der Zusatztabelle mehrfach gelesen werden muß. Anderenfalls sollte diese Option nicht verwendet werden, da die interne Tabelle Speicherplatz kostet. Außerdem sollte bei sehr breiten Tabellen, d.h. Tabellen mit sehr vielen Feldern geprüft werden, ob der Speicherplatzbedarf zur Führung der internen Tabelle die Zeitersparnis beim Lesen rechfertigt.
Beispiel
In der logischen Datenbank F1S, die in diesem Handbuch für die Beispiele verwendet wird, tritt z.B. der Fall auf, daß in der Tabelle SPFLI zwei Felder für den Start- und den Zielflughafen existieren. Beide Felder enthalten einen Schlüssel für die Tabelle SAIRPORT, die die Langtexte für Flughäfen enthält. In diesem Fall sollte die Zusatztabelle intern gepuffert werden, da davon ausgegangen werden kann, daß im Normalfall Sätze aus SAIRPORT mehrfach gelesen werden müssen.
Füllen Sie nun alle Schlüsselfelder, die vom System nicht mit einem Vorschlag belegt wurden. Vorschläge können Sie natürlich überschreiben.
Zum Füllen können Sie Felder (z.B. SY-LANGU), Zahlenliterale (z.B. 34), Textliterale (z.B. 'D') oder Parameter verwenden.
Sie sollten sorgfältig prüfen, ob die zum Füllen der Schlüsselfelder verwendeten Felder zum Zeitpunkt des Lesens der Zusatztabelle mit sinnvollen Werten belegt sind. Das System hilft Ihnen dabei und läßt nur folgende Felder zu:
Parameter (siehe Parameter anlegen).
Daten aus dem DATA-Coding (siehe Weitere Codings).
Felder der Tabelle der logischen Datenbank, dem die Zusatztabelle zugeordnet ist, und Felder von übergeordneten Tabellen der logischen Datenbank. Bei übergeordneten Tabellen sind auch alle dort zugeordneten Zusatzfelder und Zusatztabellenfelder zulässig.
Beispiel
Wird die Zusatztabelle der Tabelle SFLIGHT der logischen Datenbank F1S zugeordnet, so sind Felder der Tabellen SPFLI und SFLIGHT zulässig. Außerdem kann auf die Felder der Zusatztabellen und auf die Zusatzfelder zugegriffen werden, die der Tabelle SPFLI zugeordnet sind.
Felder einer anderen angeschlossenen Zusatztabelle, die derselben Tabelle der log. Datenbank zugeordnet ist.
In diesem Fall müssen Sie sicherstellen, daß die Zusatztabellen in der richtigen Reihenfolge gelesen werden.
Zusatzfelder zur selben Tabelle der log. Datenbank.
In diesem Fall müssen Sie sicherstellen, daß die Berechnung der Zusatzfelder vor dem Zugriff auf die Zusatztabelle erfolgt.
Zur Prüfung der SELECT-Anweisung auf syntaktische Richtigkeit kann die Funktion Prüfen Zusatztabelle verwendet werden. Ansonsten wird diese Prüfung erst durch die Funktionen Prüfen bzw. Generieren für das gesamte InfoSet vorgenommen.
Immer wenn Sie sich auf dem Bild zur Bearbeitung von Zusatztabellen befinden, können Sie folgende Einstellungen ändern:
die Reihenfolge des SELECT innerhalb der Verarbeitung der Daten zur Tabelle der logischen Datenbank
die Option internpuffern
die Schlüsselfeldbelegung.
Die Zuordnung zu einer Tabelle der logischen Datenbank können Sie jedoch nicht mehr ändern. Um eine Zusatztabelle einer anderen Tabelle der logischen Datenbank zuzuordnen, müssen Sie sie löschen und neu anschließen.
Nach dem bisher beschriebenen Verfahren können Sie eine Tabelle genau einmal als Zusatztabelle an ein InfoSet anschließen. Wenn Sie versuchen, eine Tabelle ein zweites Mal als Zusatztabelle anzuschließen (mit anderer Schlüsselbelegung), erhalten Sie die Fehlermeldung, daß eine Tabelle nur einmal verwendet werden darf. Das folgende Beispiel zeigt jedoch, daß auch ein mehrfacher Anschluß einer Tabelle wichtig sein kann.
Beispiel
In der logischen Datenbank F1S, die in diesem Handbuch für die Beispiele verwendet wird, tritt der Fall auf, daß in der Tabelle SPFLI zwei Felder für den Start- und den Zielflughafen existieren. Beide Felder enthalten eine Abkürzung für den Flughafen und bilden einen Schlüssel für die Tabelle SAIRPORT, die die Langtexte für Flughäfen enthält. Könnte die Tabelle SAIRPORT nur einmal als Zusatztabelle an SPFLI angeschlossen werden, würde dies bedeuten, daß nur der Langtext für einen der beiden Flughäfen gewonnen werden könnte. Der Langtext für den anderen Flughafen müßte anders (über ein Zusatzfeld) ermittelt werden.
Ein ähnliches Problem tritt auf, wenn Sie eine Tabelle, die zur logischen Datenbank gehört, als Zusatztabelle anschließen möchten. Auch hier erhalten Sie die Fehlermeldung, daß eine Tabelle nur einmal verwendet werden darf.
Über die Alias-Tabellen kann eine mehrfache Verwendung einer Tabelle ermöglicht werden.
Für eine Tabelle können mehrere verschiedene Alias-Namen vergeben werden. Die Tabelle kann dann über die verschiedenen Namen mehrfach angesprochen werden.
Um für eine Tabelle einen Alias-Namen zu vergeben, gehen Sie folgendermaßen vor:
Wählen Sie Alias-Tabellen.
Es erscheint ein Fenster, in dem die vorhandenen Alias-Namen aufgeführt sind, einschließlich der Information, auf welche Tabellendefinitionen aus dem Dictionary sich die Alias-Namen beziehen. Alias-Namen müssen innerhalb eines InfoSetes eindeutig sein. Sie müssen sich immer direkt auf eine Tabellendefinition aus dem Dictionary beziehen und dürfen nicht mit dem Namen einer Definition aus dem Dictionary identisch sein.
Hinweis
Die Funktion Alias-Tabellen steht auch auf verschiedenen Dialogfenstern als Drucktaste zur Verfügung.
Wählen Sie in der Übersicht für die Alias-Namen die Funktion Anlegen.
Es erscheint ein weiteres Fenster, in dem der Alias-Name und die zugeordnete Tabelle aus dem Dictionary eingegeben werden.
Um einen Alias-Namen zu löschen, muß in der Übersicht für die Alias-Namen der Cursor auf den betreffenden Alias-Namen gestellt und die Funktion Löschen aufgerufen werden. Das Löschen ist nur möglich, wenn die Alias-Tabelle nicht im InfoSet verwendet wird.
Um eine Tabelle z.B. zweimal als Zusatztabelle in einem InfoSet anzuschließen, muß wie folgt verfahren werden:
Schließen Sie die Tabelle unter ihrem Orginal-Namen einmal an.
Vergeben Sie für die Tabelle einen Alias-Namen.
Schließen Sie die Tabelle unter diesem Alias-Namen ein zweites Mal als Zusatztabelle an.
Hinweis
Zu beachten ist, daß die Felder dieser Tabelle jetzt zweimal mit den gleichen Langtexten und Überschriften im InfoSet auftreten. Bei einem mehrfachen Anschluß einer Tabelle müssen deshalb in der Regel auch die Langtexte und Überschriften der Felder geändert werden, die einer Feldgruppe zugeordnet werden.