Werte aus zwei unterschiedlichen Tabellen vergleichen

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

Werte aus zwei unterschiedlichen Tabellen vergleichen

Beitrag von blaah (ForumUser / 9 / 0 / 0 ) »
Hallo,

ich bin noch relativ neu in der ABAP-Welt und benötige eine performante Lösung für folgenden Fall.
Ich habe zwei Tabelle, die so vergleichen und geändert werden sollen, dass nur die Werte, welche in beiden Tabellen vorhanden sind übrig bleiben.
Ein Beispiel hierfür wären Kundennummern und Adressdaten in Tabelle eins und nur Kundennummern in Tabelle zwei. Nach der Abarbeitung sollen in Tabelle 1 nur noch die Kunden stehen, deren Kundennummern auch in Tabelle zwei vorhanden sind.

Gelöst habe ich es im Moment mit einem verschachtelten Loop. Aber ich denke, dass es da eine bessere Lösung geben sollte.

Code: Alles auswählen.

loop at l_tab into l_struct.
  loop at l_cmp_tab into kunnr.
    if l_struct-kunnr = kunnr.
       APPEND l_struct TO output_tab.
    endif.
  endloop.
endloop.
Vielleicht findet jemand die Zeit, mir einen Tipp zu geben. :)

Grüße!

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


Re: Werte aus zwei unterschiedlichen Tabellen vergleichen

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Grüße!
evtl. kannst du schon beim Select mit einem Inner Join arbeiten...?!

Ansonsten wäre LOOP mit READ TABLE die bessere Variante.
Dann kannst du gleich in der einen Tabelle die Felder markieren, die mit READ nicht in der anderen Tabelle zu finden sind und kannst die markierten Zeilen performant mit einem DELETE ... WHERE löschen.

Code: Alles auswählen.

loop at itab1 assigning <itab1>.
 read table itab2 transporting no fields with key kunnr = <itab1>-kunnr.
if sy-subrc > 0.
<itab1>-kunnr = 'XXX'.
endif.
endloop.
DELETE itab1 where kunnr = 'XX'.
Danach kannst du dich dann noch mit den einzelnen Zugriffen per READ beschäftigen (sorted table, binary search etc).

Re: Werte aus zwei unterschiedlichen Tabellen vergleichen

Beitrag von blaah (ForumUser / 9 / 0 / 0 ) »
Hallo Ewx,

super, das scheint doch eine elegante Lösung zu sein! Musste mir noch kurz die Feldsymboltechnik ansehen, nun klappts aber. Danke für den Ansatz!

Die Tabelle eins mit den "Stammdaten" bekomme ich von außen, ich ermittele nur die "Vergleichsdaten" selbst. Einen Join kann ich daher nicht nutzen. Wegen der Tabellenarten (Sorted, Hashed, etc.) sehe ich mich gerade um.

Besten Dank und schöne Grüße!

PS: Tricktresor hat mir in den letzten Monaten schon einige Male weiter geholfen - super Page, gerade für Einsteiger!

Re: Werte aus zwei unterschiedlichen Tabellen vergleichen

Beitrag von blaah (ForumUser / 9 / 0 / 0 ) »
Hi
ganz so klappt's wohl doch nicht. Habe die Ausgangssituation falsch verstanden. Ich bekomme nicht die nötigen Stammdaten, sondern nur Kundennummern. Dazu muss aus der Tabelle KNVP die zuständige Partnernummer ermittelt werden und die wird gegen mehrere andere Partnernummern verglichen.

Um den äußeren Loop komm ich wahrscheinlich nicht herum, um an die einzelnen Kundennummern zu kommen.
Die Vergleichspartnernummern variieren nicht pro Kundennummer, diese kann man also noch vor dem Loop besorgen.

In dem Loop müsste ich dann einen SELECT machen um die zur Kundennummer gehörige Partnernummer zu ermitteln. Danach würde dann das READ-Statement folgen, um zu prüfen ob die Partnernummer aus dem Select innerhalb der Vergleichsparnernummern, die vor dem Loop ermittelt wurden, vor kommt.

Das wäre allerdings auch ein SELECT innerhalb eines Loops.. :mrgreen:

Code: Alles auswählen.

l_t_compare_parnrs = get_compare_parnrs() //select compare-parnrs from db /z_compare

LOOP at i_t_kunnrs INTO <l_kunnr>
	SELECT 	parnr 
		FROM knvp
		INTO selected_parnr
		WHERE kunnr = <l_kunnr>
	 	AND ..
	
	READ TABLE l_t_compare_parnrs TRANSPORDING NO FIELDS WHERE KEY parnr = selected_parnr
	
	if sy-subrc <> 0
		<l_kunnr> = 'XXX'
	endif
endloop.

DELETE FROM i_t_kunnrs WHERE kunnr = 'XXX'
*Edit: hab gerade For all Entries entdeckt. Damit kann man scheinbar vorher zu den Kundennummern die Partnernummern ergänzen und hat anschließend nur noch den einen Loop ohne Select. Das scheint mir die beste Lösung zu sein. :hallo:

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2425
Views
Zwei Spalten aus unterschidlichen Tabellen vergleichen
von robin1at » 27.01.2006 12:05 • Verfasst in ABAP® für Anfänger
9
Antw.
3212
Views
Vergleichen zwei Ausdrücke
von Nadine_2706 » 01.09.2011 07:41 • Verfasst in ABAP® für Anfänger
2
Antw.
6023
Views
Zwei Programme im Hintergrund vergleichen
von kalle_pohl » 22.12.2010 14:16 • Verfasst in ABAP® für Anfänger
4
Antw.
2141
Views
cl_salv_table zwei Felden vergleichen und markieren
von autohandel7 » 26.01.2016 11:52 • Verfasst in ABAP® für Anfänger
3
Antw.
1707
Views

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1763
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2306

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.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1763
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2306

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 319
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 912
MS-Word als Editor
letzen Monat von tekko 1 / 4417