Definition eines Tabellen-Joins ohne graf. Unterstützung 

Innerhalb einer SELECT-Anweisung können mehrere Tabellen zu einem Join verknüpft werden. Die Ergebnismenge besteht in einer Tabelle, deren Zeilen alle Felder aller am Join beteiligten Tabellen enthalten. Zwischen den einzelnen Tabellen im Join können Verknüpfungsbedingungen formuliert werden. Diese Bedingungen steuern, welche Kombinationen der Sätze der einzelnen Tabellen in die Ergebnismenge aufgenommen werden.

Das Ergebnis eines Tabellen-Joins ist wieder eine (flache) Tabelle! Die Auswertung hierarchischer Beziehungen zwischen Tabellen ist deshalb mit einem Tabellen-Join nicht möglich. Dazu müssen logische Datenbanken verwendet werden.

Für genauere Angaben über den Tabellen-Join wird auf die online-Dokumentation der ABAP-Anweisung SELECT verwiesen.

Wenn Sie dem Anwender der Query Auswertungen ermöglichen wollen, so legen Sie dazu ein InfoSet an, bei dem Sie auf dem Bild Titel, Datenbank im Feld Tabelle den Namen der ersten Tabelle des Joins angeben und das Feld Tabellen-Join markieren.

Die Tabelle muß im ABAP Dictionary verzeichnet sein und auf der Datenbank existieren.

Aus technischen Gründen kann die erste Tabelle eines Joins zu einem späteren Zeitpunkt nicht mehr verändert werden. Mit der Funktion Weiter gelangen Sie auf das Bild Tabellen im Join, in dem die weiteren Angaben zum Tabellen-Join vorgenommen werden können.

Auf diesem Bild können auf der linken Seite alle Tabellen eingegeben werden, die im Join verknüpft werden sollen. Zwischen je zwei Tabellen muß eine Verknüpfungsart festgelegt werden:

Ein Satz wird in die Ergebnismenge aufgenommen, wenn für einen Satz der ersten Tabelle auch ein Satz der zweiten Tabelle gemäß den Verknüpfungsbedingungen (siehe unten) existiert.

Jeder Satz der ersten Tabelle wird in die Ergebnismenge aufgenommen. Wenn für diesen Satz in der zweiten Tabelle kein Satz gemäß den Verknüpfungsbedingungen existiert, so wird für die zweite Tabelle ein Satz verwendet, dessen Felder alle den Initialwert enthalten.

Wenn Sie eine Tabelle zweimal in den Join aufnehmen wollen, müssen Sie dies mit Hilfe von Alias-Tabellen tun. Definieren Sie für die betreffende Tabelle einen Aliasnamen wie es im Abschnitt Zusatztabellen zuordnen beschrieben wurde. Sie können dann die Tabelle unter ihrem Originalnamen und dem Aliasnamen in den Join aufnehmen.

Zwischen je zwei Tabellen des Joins müssen Verknüpfungsbedingungen definiert werden. Dazu sind zwei Schritte erforderlich. Werden im Join nur zwei Tabellen verknüpft, so besteht der erste Schritt lediglich im Aufruf der Funktion Bedingung definieren. Dadurch werden im rechten Teil des Bildes beide Tabellen in eine Liste von Tabellenpaaren aufgenommen. Werden im Join mehr als zwei Tabellen verknüpft, so müssen vor dem Aufruf der Funktion Bedingung definieren zunächst zwei Tabellen markiert werden. Dann werden durch diese Funktion im rechten Teil des Bildes die zwei markierten Tabellen in eine Liste von Tabellen-Paaren aufgenommen.

Durch die Funktion Bedingung definieren wird nur festgelegt, zwischen welchen Tabellen eine Verknüpfungsbedingung definiert werden soll. In einem zweiten Schritt muß jede Bedingung noch spezifiziert werden.

Um eine Verknüpfungsbedingung zu spezifizieren, muß die Funktion Bedingung spezifizieren aufgerufen werden. Diese Funktion liegt für jedes Tabellen-Paar auf einer Drucktaste rechts neben dem Paar. Der Aufruf dieser Funktion führt auf ein weiteres Bild, in dem die Verknüpfungsbedingungen für dieses Tabellen-Paar konkretisiert werden können. Obwohl der Tabellen-Join beliebige Bedingungen zuläßt, wird innerhalb der Query nur der Fall unterstützt, daß je zwei Felder der beteiligten Tabellen gleich sind (Gleich-Relation).

Beim erstmaligen Aufruf der Funktion Bedingung spezifizieren für ein Tabellen-Paar können Standardvorschläge für diese Bedingung bereitgestellt werden. Hierbei wird aus den im Dictionary hinterlegten Fremdschlüsselbeziehungen bzw. den Schlüsselfeldern der beteiligten Tabellen ein Vorschlag abgeleitet.

Auf dem Bild Verknüpfungsbedingungen sind alle Felder der beiden beteiligten Tabellen mit technischen Namen und Langtexten aufgeführt. In beiden Feldlisten kann unabhängig voneinander geblättert werden. Wenn zwei Felder über eine Gleich-Relation verknüpft werden sollen, so muß für beide Felder in einem jedem Feld zugeordneten Eingabefeld das gleiche Kürzel eingetragen werden. Dieses Kürzel besteht aus zwei beliebigen Zeichen (empfohlen werden allerdings nur Ziffern) und erfüllt genauso wie das Kürzel von Feldgruppen nur den technischen Zweck einer eindeutigen Zuordnung.

Felder können nicht beliebig verknüpft werden, da hier Einschränkungen der Datenbanksysteme zu beachten sind. Eine Verknüpfung ist nur möglich, wenn beide Felder den gleichen Datentyp im Dictionary (einschließlich der Längenattribute) haben. Zwei Felder können folglich immer verknüpft werden, wenn sie die gleiche Domäne besitzen. Um zueinander passende Felder zu finden, existieren für jede Tabelle getrennt Suchfunktionen. Hier kann nach Texten, Domänen und Datentypen gesucht werden. Die Textsuche bezieht sich sowohl auf die technischen Namen der Felder als auch auf die Langtexte. Mit Hilfe der Funktion Felddokumentation können Sie sich Informationen über die technische Definition eines Feldes beschaffen, um dann gezielt nach passenden Feldern zu suchen.

Sind für zwei zueinander passende Felder gleiche Kürzel eingetragen, so werden diese zwei Felder in die gleiche Zeile (am Anfang der Feldliste) gestellt und ihre erfolgreiche Verknüpfung wird durch ein Gleichheitszeichen ausgewiesen. Die Auflösung einer so vorgenommenen Beziehung erfolgt dadurch, daß der Cursor auf eines der beteiligten Felder gestellt wird und die Funktion Beziehung aufheben aufgerufen wird, die auf einer Drucktaste unmittelbar über den Gleichheitszeichen liegt.

Sind die Vernüpfungsbedingungen für ein Tabellen-Paar spezifiziert, so müssen Sie mit der Funktion Zurück auf das Bild Tabellen im Join zurückkehren. Wenn alle definierten Verknüpfungsbedingungen in der geschilderten Art spezifiziert sind, können Sie mit der Funktion Feldgruppen in die Pflege der Feldgruppen verzweigen.

Auch hier stehen Ihnen alle Möglichkeiten zur Verfügung, die Sie bei InfoSets über logischen Datenbanken nutzen können, also z.B. Anschluß von Zusatztabellen, Definition von Zusatzfeldern und Definition von Parametern und Selektionskriterien. Bitte beachten Sie die am Ende des Abschnittes Sequentieller Bestand genannten Besonderheiten.

Auf dem Bildschirmbild zur Pflege von Feldgruppen sind alle Tabellen im zweiten Teilbaum nebeneinander, d.h. auf dem gleichen Niveau angeordnet.

Ein wichtiger Unterschied zu den logischen Datenbanken ist jedoch zu beachten: der Tabellen-Join liefert wieder eine flache Tabelle und erlaubt deshalb keine Auswertung hierarchischer Beziehungen! Aus diesem Grund werden Zusatztabellen, Zustatzstrukturen und Zusatzfelder immer an die erste Tabelle des Joins angeschlossen und es existiert nur das Coding zur Satzverarbeitung. In den WHERE-Bedingungen angeschlossener Zusatztabellen bzw. dem Coding für Zusatzfelder kann allerdings auf alle Felder der am Join beteiligten Tabellen zugegriffen werden, auch wenn der Anschluß immer an die erste Tabelle des Joins erfolgt.

Vom Bildschirmbild für die Feldgruppen kann über die Funktion Join wieder in die Pflege des Tabellen-Joins verzweigt werden, so daß zu jedem Zeitpunkt Änderungen an der Definition des Joins und den Verknüpfungsbedingungen vorgenommen werden können. Hierbei bestehen nur die Einschränkungen, daß die erste Tabelle des Joins nicht mehr entfernt werden kann und daß andere Tabellen nur dann aus dem Join entfernt werden dürfen, wenn keine Felder dieser Tabelle Feldgruppen zugeordnet sind.