!--a11y-->
Beziehungen zwischen Tabellen können im ABAP Dictionary durch das Anlegen von Fremdschlüsseln abgebildet werden.
Über Fremdschlüssel können auf einfache Art Werteprüfungen auf Eingabefeldern angelegt werden. Weiterhin können Fremdschlüssel verwendet werden, um mehrere Tabellen in einem
View oder einem
Sperrobjekt zu verknüpfen.
Feldzuordnung im Fremdschlüssel
Ein Fremdschlüssel stellt die Verbindung zweier Tabellen T1 und T2 her, indem er Felder der Tabelle T1 den Primärschlüsselfeldern der Tabelle T2 zuordnet.

Die Tabelle T1 heißt in diesem Fall Fremdschlüsseltabelle (abhängige Tabelle) und die Tabelle T2 Prüftabelle (referierte Tabelle). Die einander zugeordneten Feldpaare müssen den gleichen Datentyp und die gleiche Länge besitzen. Jedem Schlüsselfeld der Prüftabelle entspricht also ein Feld der Fremdschlüsseltabelle. Ein solches Feld heißt Fremdschlüsselfeld.
Ein Fremdschlüssel erlaubt eine Zuordnung von Datensätzen in Fremdschlüsseltabelle und Prüftabelle. Durch die Einträge in den Fremdschlüsselfeldern spezifiziert ein Satz der Fremdschlüsseltabelle eindeutig einen Satz der Prüftabelle.
Prüffeld und Werteprüfung
Eines der Fremdschlüsselfelder ist als Prüffeld ausgezeichnet, d.h. für dieses Feld wird die Fremdschlüsselbeziehung gepflegt.
Bei einer Eingabe in das Prüffeld wird geprüft, ob in der Prüftabelle ein Satz mit dem durch die Werte in den Fremdschlüsselfeldern vorgegebenen Schlüssel existiert. Ist dies der Fall, ist die Eingabe zulässig, andernfalls wird die Eingabe vom System zurückgewiesen.

In diesem Beispiel würde eine Eingabe Feld2 = 2 und Feld4 = 2 zurückgewiesen, da in T2 kein Satz mit dem Schlüssel Feld5 = 2 und Feld6 = 2 vorhanden ist.
Falls nicht gegen alle Schlüsselfelder der Prüftabelle geprüft werden soll, kann man über
generische und konstante Fremdschlüssel Felder der Fremdschlüsseltabelle aus der Zuordnung zu den Feldern der Prüftabelle herausnehmen.Funktionsweise der Werteprüfung
Aus der Definition des Fremdschlüssels wird ein SELECT-Statement generiert. Wird eine Eingabe in das Prüffeld gemacht, so wird dieses SELECT-Statement abgeschickt. Wird dabei ein passender Satz der Prüftabelle gefunden, so ist die Eingabe zulässig. Andernfalls wird die Eingabe zurückgewiesen.
Für die in der obenstehenden Grafik dargestellte Fremdschlüsseltabelle würde das entsprechende SELECT-Statement folgende Form besitzen:
SELECT * FROM T2 WHERE T2-FELD5 = T1-FELD2 AND T2-FELD6 = T1-FELD4.
Eine Eingabe in einem Dynpro für das Prüffeld Feld2 ist also nur zulässig, wenn in der Prüftabelle ein Satz mit den auf dem Dynpro für Feld2 und Feld4 gemachten Eingaben als Schlüssel existiert.

In der Tabelle SBOOK im
Flugmodell sind die Buchungen von Flügen durch die Kunden einer Fluggesellschaft verzeichnet. Die Flugbuchungen können von Reisebüros oder direkt am Verkaufsschalter der Fluggesellschaft vorgenommen werden. Falls die Buchung an einem Verkaufsschalter vorgenommen wurde, wird in der Tabelle SBOOK dessen Nummer im Feld COUNTER zusammen mit der Buchung abgespeichert.Hierbei muß sichergestellt werden, daß nur korrekte Nummern von Schaltern eingetragen werden können. Alle vorhandenen Verkaufsschalter sind in der Tabelle SCOUNTER eingetragen. Damit kann durch Anlegen eines Fremdschlüssels zum Prüffeld COUNTNUM die notwendige Werteprüfung etabliert werden.

Siehe auch:
Strukturübergreifende Fremdschlüssel Semantische Eigenschaften eines Fremdschlüssels Fremdschlüssel anlegen