3 Tabellen miteinander vergleichen und Treffer ausgeben (Ohne Interne Tabellen)

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

3 Tabellen miteinander vergleichen und Treffer ausgeben (Ohne Interne Tabellen)

Beitrag von Reyvn94 (ForumUser / 1 / 2 / 0 ) »
Guten Abend,

ich hab ein Problem und daher eine Frage.
Ich hab eine Aufgabe zum Üben vor mir liegen, auf dessen Lösung ich nicht wirklich komme.
Ich hab eine Tabelle mit dem Namen "ZDRTEST" diese hat 2 Felder D1 (KEY) und D2.
Außerdem ist noch eine Tabelle ZDRTEST2 und ZDRTEST3 vorhanden mit dem selben Aufbau.

Ich soll dafür einen ABAP Report schreiben "OHNE interne Tabellen", der alle vorhandenen D1-Werte aus ZDRTEST3 ausgibt, die jeweils auch in den beiden anderen Tabellen vorhanden sind.

Kleine Aufzeichnung meinerseits:
ZDRTEST3:
Hat folgende Werte bei D1: 1,2,3,4,5,6,7,8,9,10
ZDRTEST2:
Hat folgende Werte bei D1: 2,3,4,5,11,12,14,15,16
ZDRTEST:
Hat folgende Werte bei D1: 1,2,3,4,5,6,7,8

Die Ausgabe sollte dann: 2,3,4,5 lauten.

Meine Überlegung und Ansatz war ein 2-facher-Inner-Join, ich kann es leider nicht testen, da ich keine Tabellen anlegen kann....:

TABLES: ZDRTEST, ZDRTEST2, ZDRTEST3.
DATA:
lv_zdr3d1 TYPE ZDRTEST3-D1,
lv_zdr2d1 TYPE ZDRTEST2-D1.
lv_zdrd1 TYPE ZDRTEST-D1.

Select ZDRTEST3~D1, ZDRTEST2~D1, ZDRTEST~D1
into (@lv_zdr3d1, @lv_zdr2d1, @lv_zdrd1) from ZDRTEST3
inner join ZDRTEST on ZDRTEST3~D1 = ZDRTEST~D1
inner join ZDRTEST2 on ZDRTEST3~D1 = ZDRTEST~D1.
Write:/, lv_zdr3d1.
ENDSELECT.


Bin mir aber wirklich nicht sicher ob das richtig sein soll oder ob ich vom Ergebnis wirklich 200 km entfernt bin.

Ich wäre um eure Hilfe dankbar.

Grüße
Reyvn

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: 3 Tabellen miteinander vergleichen und Treffer ausgeben (Ohne Interne Tabellen)

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Dein zweiter INNER JOIN hat einen Fehler in der ON-Bedingung aber ansonsten scheint alles andere stimmig zu sein. Du könntest vielleicht noch die Felder lv_zdr2d1 und lv_zdrd1 weglassen, da die ja nicht (explizit) gefordert waren aber das ist dann auch schon alles.

Alternativ kann man das auch mit Subselects lösen, wenn man explizit ein kartesisches Produkt vermeiden möchte, aber da in deinem Fall eh alle Tabellen denselben Schlüssel haben besteht hier keine Gefahr.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Reyvn94

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: 3 Tabellen miteinander vergleichen und Treffer ausgeben (Ohne Interne Tabellen)

Beitrag von Reyvn94 (ForumUser / 1 / 2 / 0 ) »
Welcher Fehler liegt in meiner ON-Bedingung denn vor?

Das ist mein neuer Versuch, mit ihren Tipps beachtet:

TABLES: ZDRTEST3, ZDRTEST2, ZDRTEST.

DATA:
lv_zdr3d1 TYPE ZDRTEST3-D1.

SELECT ZDRTEST3~D1 into (@lv_zdr3d1) from ZDRTEST3
INNER JOIN ZDRTEST2 on ZDRTEST3~D1 = ZDRTEST2~D1
INNER JOIN ZDRTEST on ZDRTEST3~D1 = ZDRTEST~D1 order by ZDRTEST3~D1.
Write:/, lv_zdr3d1.
ENDSELECT.

Ist das so korrekt? Soweit ich das vergleiche mit meinem ersten Code, hab ich ZDRTEST2~D1 nicht verwendet in der ON Bedingung.

Jetzt müsste diese Ausgabe ja funktionieren oder?

ZDRTEST3:
Hat folgende Werte bei D1: 1,2,3,4,5,6,7,8,9,10
ZDRTEST2:
Hat folgende Werte bei D1: 2,3,4,5,11,12,14,15,16
ZDRTEST:
Hat folgende Werte bei D1: 1,2,3,4,5,6,7,8

Die Ausgabe sollte dann: 2,3,4,5 lauten.

Wie wäre die Alternative oder andere Möglichkeit nur mit Subselects ohne die Joins und Verwendung von Internen Tabellen?
Zuletzt geändert von Reyvn94 am 07.02.2022 15:31, insgesamt 1-mal geändert.

Re: 3 Tabellen miteinander vergleichen und Treffer ausgeben (Ohne Interne Tabellen)

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Reyvn94 hat geschrieben:
07.02.2022 15:03
Welcher Fehler liegt in meiner ON-Bedingung denn vor?
...
Ist das so korrekt? Soweit ich das vergleiche mit meinem ersten Code, hab ich ZDRTEST2~D1 nicht verwendet in der ON Bedingung.
Ja, dann hast du es eh entdeckt.
Reyvn94 hat geschrieben:
07.02.2022 15:03
Jetzt müsste diese Ausgabe ja funktionieren oder?
Theoretisch ja. Einfach ausprobieren.
Reyvn94 hat geschrieben:
07.02.2022 15:03
Wie wäre die Alternative oder andere Möglichkeit nur mit Subselects ohne die Joins und Verwendung von Internen Tabellen?
https://codezentrale.de/abap-opensql-su ... verwenden/
https://tricktresor.de/blog/sub-queries/

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Reyvn94

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2091
Views
2 Tabellen vergleichen, bei Treffer, einen Wert weg schreibe
von Beginner » 10.10.2006 12:29 • Verfasst in ABAP® für Anfänger
10
Antw.
17271
Views
interne tabellen vergleichen
von TobiB » 23.11.2007 13:12 • Verfasst in ABAP® Core
4
Antw.
3623
Views
2 interne Tabellen vergleichen
von swonny » 06.11.2006 16:12 • Verfasst in ABAP® für Anfänger
7
Antw.
4168
Views
2 interne Tabellen vergleichen
von Frank Schmitt » 24.06.2020 09:40 • Verfasst in ABAP® für Anfänger
2
Antw.
2107
Views
2 interne Tabellen vergleichen
von Klende » 21.11.2005 15:16 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 2674
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 4480