2 Tabellen unterschiedlicher Struktur vergleichen?

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

2 Tabellen unterschiedlicher Struktur vergleichen?

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

ist es möglich 2 Tabellen unterschiedlicher Struktur miteinander zu vergleichen?
Eine Tabelle ist eine interne Tabelle, die andere eine DB-Tabelle. Beide haben eine unterschiedliche Struktur.
Ich kann die interne Tabelle auch nicht mit der gleichen Struktur anlegen, da nicht alle Spalten benötigt werden.

Kann mir jemand weiterhelfen?

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


Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Was willst Du denn dann vergleichen?
Bestimmte Spalten miteinander die das gleiche Format haben oder ....?
Frank

Beitrag von Gast ( / / 0 / 3 ) »
die interne tabelle enthält nur bestimmte felder der db-tabelle. sprich die interne tabelle ist eine abgespeckte version der db-tabelle. (die spalten haben das gleiche format.)

Beitrag von Gast ( / / 0 / 3 ) »
Kannst Du noch ein paar Informationen geben, wie Dein Vergleich funktionieren soll? (Coding-Snippet?)

Wenn von der DB selektiert wird, dann kann man das in eine entsprechende Vergleichstabelle machen (mit into corresponding-fields), die man dann mit der eigentlichen internen Tabelle vergleicht.

Beitrag von Gast ( / / 0 / 3 ) »
Ich selektiere die Daten aus der DB durch einen vorhandenen Funktionsbaustein.
Das mit der Vergleichstabelle mit into correspondig fields hört sich nicht schlecht an. Ich habe auch schon daran gedacht, wußte jetzt aber nicht wie ich das realisieren soll.

Mein Vergleich sieht so aus:

Code: Alles auswählen.

  LOOP AT c_itab2 INTO wa_test.
    READ TABLE splittab2 INTO wa_splittab2 WITH KEY equnr =
wa_test-equnr.
    IF sy-subrc <> 0.
      APPEND wa_test to difftab.
    ELSEIF wa_test <> wa_splittab2.
      APPEND wa_test TO difftab.
    ENDIF.
  ENDLOOP.

  LOOP AT splittab2 INTO wa_splittab2.
    READ TABLE c_itab2 INTO wa_test WITH KEY equnr =
wa_splittab2-equnr.
    IF sy-subrc <> 0.
      APPEND wa_splittab2 TO difftab.
    ENDIF.
  ENDLOOP.
Diesen Code hab ich aus einem älteren Beitrag hier auf dieser Seite.
Er funktioniert auch, ich bin mir nur nicht sicher, ob dieser auch in unterschiedlich strukturierten Tabellen funktioniert. An dieser Stelle wußte ich nicht, wie ich das mit into corresponding fields realisiere.

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

kann mir denn jemand sagen, wie ich "into corresponding fields" im obigen Problem einsetzen kann bzw. wie das mit der Vergleichstabelle gehen soll?

Wäre super nett!

Danke.

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi,

du muß eine Tab. t3 definieren , die alle Felder aus den zu vgl. Tabellen ( t1 und t2 ) enthält.

dann kannst du doch sagen: move-corresponding
t1 to t3 / t2 to t3.


Grx

Andreas

Beitrag von Gast ( / / 0 / 3 ) »
Das versteh ich nicht.

Mit move-corresponding führe ich doch nur 2 Tabellen zu einer zusammen. Da hab ich doch keinen Vergleich durchgeführt.

Oder?

Beitrag von meinrad (ForumUser / 67 / 0 / 0 ) »
hallo,
mit move-corresponding kann man meines Wissens nur
Strukturen übertragen und keine Tabellen(Tabellen-körper).

Ich würde beim DB-select ansetzen bzw. nach dem Fu-Baustein, der wohl eine interne Tabelle zurückliefert.
Diese "grössere" Tabelle würde ich in eine Tabelle bringen, die die gleiche Struktur hat wie die "kleinere" interne Tabelle. dies geschieht mit loop move-corresponding und append.

Dann hat man zwei interne Tabellen und kann diese
nach allen Regeln der Programmierkunst vergleichen, wenn es gemeinsame Schlüssel-Felder gibt:
Zeile in beiden Tabellen gleich.
Zeile nur in DB.
Zeile nur in Itab.
Zeile vorhanden aber abweichend.
Die beiden Tabellen müssen nach diesen Schlüsselfelder sortiert sein.
Das muss man aber von Hand codieren.

ich würde mit der Tabelle anfangen (LOOP) die vermutlich mehr Zeilen hat.
Dann würde ich in einer While-schleife mit READ und Index auf die zweite Tabelle zugreifen. dabei einen eigenen Zählindex verwenden. Solange bis Tabellen-ende erreicht oder die Schlüssel-felder >= sind.
wenn Schlüssel-Gleichheit:
- dann Perform Gleich_Key.
(Dort weitere Vergleiche oder zwischenspeichern)
Zaehl-index für itab2 erhöhen.

Wenn die Schlüssel-felder der 2. Tabelle grösser sind, dann PERFORM "NUR_IN_TAB1"
Zaehl-index nicht erhöhen.

wenn itab2-schlüssel kleiner dann Perform "nur-in-itab2"
zaehl-index erhöhen und nochmals Read-Table.
(While-Schleife)
ENDLOOP.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
336
Views
Spalten unterschiedlicher Tabellen vergleichen und dann ändern
von yefpie » 26.07.2022 16:10 • Verfasst in ABAP® für Anfänger
6
Antw.
2233
Views
2 interne Tabellen mit unterschiedlicher Struktur vergleiche
von Chriz » 24.11.2005 14:45 • Verfasst in ABAP® für Anfänger
3
Antw.
1707
Views
4
Antw.
872
Views
Tabellen vergleichen
von Frank Schmitt » 11.05.2020 14:51 • Verfasst in ABAP® für Anfänger
2
Antw.
2135
Views
2 interne Tabellen vergleichen
von Klende » 21.11.2005 15:16 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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 / 1791
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2331

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 / 1791
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2331

Unbeantwortete Forenbeiträge

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