Buch Dienstleistungen Downloads Diverses Forum Impressum

Join mit unterschiedlichem Inhalt der Verknüpfungsspalten

Diskussionen zur SapQuery

Join mit unterschiedlichem Inhalt der Verknüpfungsspalten

Beitragvon ernsta » 20.09.2006, 14:41

Hallo,

wir versuchen bei uns einen Join hinzubekommen, der aber im Standard nicht funktioniert. Es geht um zwei Tabellen die beide eine Kostenstelle als Angabe für den Join enthalten. Leider sieht das bei den Tabellen wie folgt aus.

Tabelle 1: 0000560099
Tabelle 2: KSTU 0000560099

Bedeutet also es ist zwar in beiden Tabellen der selbe Inhalt, der aber leider in einer Tabelle mit einem Präfix versehen ist. Kennt hier jemand eine Möglichkeit, wie ich trotzdem einen Join dieser beiden Tabellen erreichen kann.

Wenn ja, bitte ausführlich schildern. Wir sind noch Anfänger in dem Bereich.


Vielen Dank.
ernsta
 
Beiträge: 3
Registriert: 20.09.2006, 14:15

Join mit unterschiedlichem Inhalt der Verknüpfungsspalten

Google Werbung

Google Werbung
 

Re: Join mit unterschiedlichem Inhalt der Verknüpfungsspalte

Beitragvon NicoManicone » 25.09.2006, 15:59

wir versuchen bei uns einen Join hinzubekommen,
...

Tabelle 1: 0000560099
Tabelle 2: KSTU 0000560099

Bedeutet also es ist zwar in beiden Tabellen der selbe Inhalt, der aber leider in einer Tabelle mit einem Präfix versehen ist.

Genauer: Sie wollen als Joinbedingung zwei unterschiedliche Datentypen verwenden. Das funktioniert nicht.
eine Möglichkeit, wie ich trotzdem einen Join dieser beiden Tabellen erreichen kann.


Im Rahmen der SAPQuery sieht das nicht gut aus. Sie können den Join mit einer Zusatztabelle "simulieren". Da bei einer Zusatztabelle ein Select Single verwendet wird, macht dies nur Sinn, wenn Sie a. den vollständigen Primärschlüssel haben und b. für jeden Eintrag in Tabelle 1 EIN Eintrag in Tabelle 2. vorhanden ist.

Schritte:
1. Definieren Sie ein Zusatzfeld.
2. Definieren Sie Tabelle 1 als Zusatztabelle. Dabei geben Sie das Zusatzfeld als Schlüsselfeld der Zusatztabelle an.
3. Weisen Sie dem Feld im Codingabschnitt "Satzverarbeitung" mit einem move(10) den Schlüssel zu. Aus einem "KSTU 0000560099" wird so "0000560099".

Grüße,
Nico Manicone.
NicoManicone
Administrator
 
Beiträge: 99
Registriert: 29.05.2004, 20:06

Beitragvon ernsta » 28.09.2006, 14:48

Sorry aber verstehe das nicht so ganz. Könnten Sie das mit dem Schlüsselfeld in Punkt 2 und den den 3. Punkt noch einmal genauer erläutern?


Vielen Dank.
Mit freundlichen Grüßen Adrian Ernst.
ernsta
 
Beiträge: 3
Registriert: 20.09.2006, 14:15

Beitragvon NicoManicone » 06.10.2006, 11:07

Vorbemerkung
Da die Felder einen unterschiedlichen Datentyp haben, ist ein Join nicht möglich. D.h. Sie müssen den Join "simulieren". In ABAP gibt es mehrere Möglichkeiten, in der SapQuery nur eine [1], nämlich via Zusatztabelle. Und dabei handelt es sich um einen SELECT SINGLE. Dies ist eine massive Einschränkung.

Die Join Simulation funktioniert nur für eine 1:1 oder eine N:1 Beziehung. Es darf maximal ein Datensatz in der zweiten Tabelle vorhanden sein. Man könnte daher z.B., wenn das InfoSet auf die MARC zugreift, via Zusatztabelle auf die MARA zugreifen. Der umgekehrte Fall geht nicht, da es für einen Eintrag in der MARA mehrere Einträge in der MARC geben kann.

zu 2. Wenn Sie die Zusatztabelle anlegen, wird eine WHERE-Clausel abgefragt. Dort müssen Sie dann das Zusatzfeld angeben.

zu 3.Sie müssen ein Coding angeben zum Zeitpunkt "Satzverarbeitung".
Code: Alles auswählen
  move tabelle-feld+?(10) to schluessel.


Ersetzen Sie Tabelle und Feld mit den realen Namen. Das ? muß gegen das offset ausgetauscht werden. Schluessel ist das Zusatzfeld. Wenn sie also ein Vorlage mit 18 Chars haben und die letzten 10 Chars kopieren möchten, wäre die Anweisung

Code: Alles auswählen
  move tabelle-feld+8(10) to schluessel.


[1] Wenn man die Datenversorgungsprogramme einbezieht sind es zwei. Aber das ist dann ABAP!
NicoManicone
Administrator
 
Beiträge: 99
Registriert: 29.05.2004, 20:06


Zurück zu SapQuery

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast