interne tabellen vergleichen

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

interne tabellen vergleichen

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
Hallo zusammen,


ich möchte 2 interne tabellen mit der gleichen struktur zeilenweise vergleichen und alle ungleichen einträge löschen.

ich hab das ganze über nen loop versucht, was aber nur dazuführt dass meine interne tabelle dann leer ist.

hoff mal ihr könnt mir da weiter helfen.
LOOP AT itab.

IF itab-gpart NE wa_itab-gpart.
DELETE wa_itab.
ENDIF.

ENDLOOP.

gruß tobi


Wer fehler Findet, darf se behalten :D

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


Re: interne tabellen vergleichen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »

Code: Alles auswählen.

loop at lt_itab1 into ls_itab1.
  read table itab2 into ls_itab2 index sy-tabix.
  if ls_itab1 ne ls_itab2.
    delete table lt_itab2 from ls_itab_2.
  endif.
endloop.
Ohne Syntax-Gewähr, ich hab grad kein System zur Hand.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von TakerOne (Specialist / 102 / 0 / 3 ) »
Hi.

Es existiert auch ein FuBa für diese Funktion

Hier ein Beispiel der Anwendung:

REPORT zdz_test_tabellenvergleich
NO STANDARD PAGE HEADING LINE-SIZE 80.

DATA:
gs_zpack_old TYPE STANDARD TABLE OF zpack,
gs_zpack_new TYPE STANDARD TABLE OF zpack,
gs_zpack_del TYPE STANDARD TABLE OF zpack,
gs_zpack_add TYPE STANDARD TABLE OF zpack,
gs_zpack_mod TYPE STANDARD TABLE OF zpack,
no_change TYPE char1,
key_len TYPE i.

key_len = 5.

SELECT * FROM zpack INTO TABLE gs_zpack_old.

SELECT * FROM zpack INTO TABLE gs_zpack_new
WHERE
vbpos = '000010'.

CALL FUNCTION 'CTVB_COMPARE_TABLES'
EXPORTING
table_old = gs_zpack_old
table_new = gs_zpack_new
key_length = key_len
IMPORTING
table_del = gs_zpack_del
table_add = gs_zpack_add
table_mod = gs_zpack_mod
no_changes = no_change.

WRITE: 'hallo'.

Gruß TakerOne
Ich bin eigentlich ein sehr netter Mensch.
Wenn ich Freunde hätte, könnten diese es bestätigen. :-)

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
alles klar ich dank euch.

ich werd die beiden varianten mal testen.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
also mit dem FuBa bekomm ich des net hin, da gibt's dann nur Laufzeitfehler weil mal wieder eine Docu zu dem Ding fehlt.

hab des ganze jetzt so versucht zu lösen

Code: Alles auswählen.

LOOP AT itab1 INTO wa_itab1.
    READ TABLE itab2 INTO wa_itab2.
    IF wa_itab1 NE wa_itab2.
      DELETE TABLE itab1 FROM wa_itab1.
    ENDIF.
  ENDLOOP.
waas aber beim debuggen dazuführt dass ich ein Commit bekomme und des alv grid leer bleibt.
passiert leider auch beim direkten ausführen :(

so vllt weiß noch einer ne gute idee.

nochmal ne kleine erklärung zu meim problem:
ich hab 2 itabs mit der gleichen struktur aber unterschiedler anzahl von einträgen, ich will aber nur die einträge haben die in beiden tabellen vorhanden sind und diese dann durch n alv grid ausgaben.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
TobiB hat geschrieben:

Code: Alles auswählen.

LOOP AT itab1 INTO wa_itab1.
    READ TABLE itab2 INTO wa_itab2.
    IF wa_itab1 NE wa_itab2.
      DELETE TABLE itab1 FROM wa_itab1.
    ENDIF.
  ENDLOOP.
waas aber beim debuggen dazuführt dass ich ein Commit bekomme und des alv grid leer bleibt.
Dass du itab1 ausgeben musst ist dir klar, ja?

Was für einen Dump bekommst du? Was steht in den ersten fünf Zeilen? Der kann mit einem commit aber nichts zu tun haben.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
ralf.wenzel hat geschrieben:
Dass du itab1 ausgeben musst ist dir klar, ja?

Was für einen Dump bekommst du? Was steht in den ersten fünf Zeilen? Der kann mit einem commit aber nichts zu tun haben.
jo dass ich itab ausgeben muß is mir schon klar, andersrum würd's ja uch kein sinn machn.
ich bekomm gar keinen dump
entweder steht unter in der Status-leiste 'Commit wurde vom System ausgegeben' (oder so ähnlich)
oder im alv grid wird nix angezeigt.

naja ich schreib des ganze nochmal um und bastel dann alles in ein select rein, dann sollt es gehn.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
TobiB hat geschrieben:oder im alv grid wird nix angezeigt.
Welche der beiden itabs gibst du denn nun aus?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
ausgegeben werden soll itab1

hab auch schon des coding überprüfung, dass überall auch itab1 steht.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Poste doch mal bitte das Coding, das fängt langsam an mich zu interessieren....


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
naja des wrd schwierig weil ich es jetzt komplett umgeschrieben hab um diesen vergleich auszuschließen.

im grunde ging's darum dass ich den select

Code: Alles auswählen.

SELECT
     dfkkop~betrh
     dfkkop~augst
     dfkkop~vtref
     dfkkop~bukrs
     dfkkop~gpart
     dfkkop~vkont
     dfkkop~hvorg
     dfkkop~tvorg
     dfkkop~faedn
     dfkkop~opbel
     fkkmako~mstyp

  INTO CORRESPONDING FIELDS OF itab
  FROM ( dfkkop
  INNER JOIN fkkmako ON
  fkkmako~ausbl = dfkkop~opbel
  INNER JOIN dimaparbrok ON
  dimaparbrok~insobject = dfkkop~vtref )
  WHERE
  fkkmako~mstyp NOT IN ('MB') AND
  dfkkop~bukrs IN sel001 AND
  dfkkop~gpart IN sel002 AND
  dfkkop~vtref IN sel003 AND
  dfkkop~faedn IN sel004 AND
  dfkkop~hvorg IN ('1000') AND
  dfkkop~tvorg IN ('1010', '2012', '2013', '2019') AND
  dfkkop~augst NOT IN ('9')
  GROUP BY dfkkop~gpart dfkkop~opbel dfkkop~faedn dfkkop~tvorg
           dfkkop~hvorg dfkkop~vkont dfkkop~bukrs dfkkop~vtref
           dfkkop~betrh dfkkop~augst fkkmako~mstyp.

    MOVE-CORRESPONDING itab TO wa_fitab.

    CLEAR coll.
    CALL FUNCTION 'ISCD_BROK_OP_COLLECT_CHECK'
         EXPORTING
              i_fkkop   = wa_fitab
         IMPORTING
              e_collect = coll.

    IF coll NE ' '.

*     DELETE itab.
*mach nix
    ELSE.
      APPEND itab.
    ENDIF.
  ENDSELECT.
  SORT itab BY gpart.

aufgesplittet hatte und dann eine der select-abfragen durch den fuba gejagt hab um die beiden tabellen danach dann zu vergleichen damit alle ungleichen einträge rausfliegen.

grund warum ich des so machen wollt:
der FuBa ISCD_BROK_OP_COLLECT_CHECK is ziemlich lahm da der auf n paar weitre FuBa's zurückgreift und es dadurch immer weider zu Laufzeitfehlern (Time Out) kam.

so wie ich den jetzt eingebunden hab, geht's etwas schneller, wobei die auswetung immernoch gut 10 min brauch.

wenn am ganzen coding intressiert bist kann ich dir des gern mal schicken.
gruß tobi


Wer fehler Findet, darf se behalten :D

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1343
Views
7
Antw.
4088
Views
2 interne Tabellen vergleichen
von Frank Schmitt » 24.06.2020 09:40 • Verfasst in ABAP® für Anfänger
4
Antw.
3570
Views
2 interne Tabellen vergleichen
von swonny » 06.11.2006 16:12 • Verfasst in ABAP® für Anfänger
12
Antw.
7837
Views
2 interne Tabellen vergleichen
von Bright4.5 » 28.03.2019 08:56 • Verfasst in ABAP® für Anfänger
2
Antw.
2058
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

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von black_adept 2 / 61
Programm anlegen mit Vorlage
vor 13 Stunden von DeathAndPain 2 / 112
IT0024 Qualifikationen CP-ID
vor 13 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 15 Stunden von snooga87 1 / 84

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

Regex in where
vor 6 Stunden von black_adept 2 / 61
Programm anlegen mit Vorlage
vor 13 Stunden von DeathAndPain 2 / 112
IT0024 Qualifikationen CP-ID
vor 13 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 15 Stunden von snooga87 1 / 84

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 15 Stunden von snooga87 1 / 84
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821