Selektion von Sprachen über Left Outer Join

Dieses Problem kennen sicher viele ABAP Entwickler: Bei einem komplexen Join über mehrere Tabellen werden im Ergebnis keine Daten zurückgegeben, obwohl in der Haupttabelle alle Daten gepflegt sind und auf die anderen Daten nur per LEFT OUTER JOIN zugegriffen wird. Zumindest die Daten aus der Haupttabelle sollten daher sicher gefunden werden. Schuld daran kann in diesen Fällen der Sprachschlüssel in den JOINs sein.

 

Wenn in einem SELECT mit einem LEFT OUTER JOIN auf eine Tabelle mit Sprachschlüssel zugegriffen wird, ist es entscheidend, an welcher Stelle die Sprache abgefragt wird. Wenn eine Bezeichnung nämlich nicht für alle Sprachen übersetzt wurde, liefert die Datenabfrage keine Daten zurück. Ziel ist es aber, dass in dem Fall zumindest alle anderen Felder, außer der Bezeichnung, zurückgegeben werden.

 

Beispiel: Es soll ein Material samt Bezeichnung aus den Tabellen MARA und MAKT selektiert werden. Hierbei soll neben der Materialnummer die Bezeichnung in der Anmeldesprache zurückgegeben werden (Abfrage über sy-langu).

Wenn keine Beschreibung in der Anmeldesprache gepflegt wurde, soll aber trotzdem zumindest die Materialnummer zurückgegeben werden.

 

Hierfür muss der Sprachschlüssel in der ON-Bedingung und nicht in der WHERE-Bedingung abgefragt werden!

Dann wird bei einem LEFT OUTER JOIN auch etwas aus der Haupttabelle (MARA-MATNR) zurückgegeben, wenn keine Bezeichnung in der passenden Sprache gepflegt wurde (in der MAKT). Wird die Sprache hingegen im WHERE abgefragt, wird auch die Materialnummer in der MARA nicht gefunden. Dies ist bei einem LEFT JOIN aber nicht wünschenswert!

Sprechen Sie uns an, wenn Sie Fragen haben.

Zurück