Aus DB löschen, was nicht in itab

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

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

Aus DB löschen, was nicht in itab

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Hallo zusammen,

wir haben eine Fehlerliste, die jeden Tag per Job ausgedruckt wird, so dass die Fehler bearbeitet werden können.
Ich arbeite gerade daran, dass man die Daten per Report einsehen und kommentieren kann. Dafür habe ich die Stelle im Job bearbeitet, so dass die Fehlerdaten in eine Z-Tabelle geschrieben werden.
Das Problem ist jetzt, dass jeden Tag die aktuellen Fehler ausgegeben werden, dass heißt, dass gelöst Fehler aus der Datenbank gelöscht werden müssen.

Beispiel: Ich habe die erste DB-Tabelle von gestern, der Job läuft und findet alle aktuellen Fehler, die in der zweiten Tabelle stehen. Die DB muss jetzt so aktualisiert werden, dass sie wie die dritte Tabelle aussieht.

Bild

Das Einfügen von Einträgen habe ich schon mit Existenzprüfung gemacht (wenn Datensatz schon existiert nichts machen, wenn es Datensatz nicht gibt, dann einfügen), das war kein Problem, aber das Löschen bereitet Probleme. Ich muss die Einträge aus der DB löschen, die NICHT in der itab sind.
Ich hatte es schonmal so versucht:

Code: Alles auswählen.

SELECT * 
FROM db
INTO t_not_in_itab_but_in_db
FOR ALL ENTRIES IN itab
WHERE key1 <> itab-key1
   OR key2 <> itab-key2
    ...(andere keys)
Das hatte allerdings alle Einträge ausgewählt. Mit ANDs gar keine.

Jetzt versuche ich den Ansatz vorher die ganze DB in eine itab zu kopieren und dann innerhalb eines nested loops zu löschen, aber das verwirrt mich sehr, vielleicht stelle ich mich auch blöd an? Ich wäre für Hilfe sehr dankbar. Im Moment habe ich das, das macht aber keinen Sinn:

Code: Alles auswählen.

SELECT *
   FROM db
   INTO TABLE gt_db.

  LOOP AT gt_db INTO wa_db.
    LOOP AT gt_itab INTO wa_itab. 

      IF wa_itab-werks <> wa_db-werks.
        IF wa_itab-vbeln <> wa_db-vbeln.
          ...(andere keys)

           DELETE db FROM wa_itab.

           ...
        ENDIF.
      ENDIF.

    ENDLOOP.
  ENDLOOP.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

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


Re: Aus DB löschen, was nicht in itab

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Hey Legxis,

eine vielleicht nicht so elegante Lösung:

Code: Alles auswählen.

* über die neue itab in wa
Loop itab into wa (oder ASSIGN)
Select Single auf dbtab where key  = wa-key and key2 = wa-key
if sy-subrc = 0.
*Satz vorhanden muss aus DB raus 
delete dbtab from wa
endif.
endloop.

EDIT: Falsch rum gelesen :o :!:

Neuer Versuch :D

Code: Alles auswählen.

*lade db_alt in it_alt.
loop it_alt into wa
*Schaue ob Satz aus it_alt in it_neu ist.
Read table it_neu key key = wa-key
if sy-subrc <> 0.
* löschen
delete dbtab where wa = wa_it_alt

endif
endloop

Grüße 4byte
Zuletzt geändert von 4byte am 19.07.2018 16:43, insgesamt 1-mal geändert.

Folgende Benutzer bedankten sich beim Autor 4byte für den Beitrag:
Legxis

Es gibt 10 Menschen die binär verstehen :)

Re: Aus DB löschen, was nicht in itab

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Lösch doch einfach alles und füge die ITAB neu ein.

Re: Aus DB löschen, was nicht in itab

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Danke 4byte, das hat schön funktioniert! (musste nur DELETE FROM heißen)

@Daniel: ich kann nicht die ganze DB leeren und die aktuellen Fehler reinschreiben, weil die User in einem Report Kommentare in die DB schreiben, die wären dann auch weg
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Aus DB löschen, was nicht in itab

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Legxis hat geschrieben:(musste nur DELETE FROM heißen)
Pseudocoding von mir :D
Es gibt 10 Menschen die binär verstehen :)

Seite 1 von 1

Vergleichbare Themen

2
Antw.
676
Views
Löschen von itab-Zeilen
von Patrick1982 » 08.07.2021 12:30 • Verfasst in ABAP® für Anfänger
7
Antw.
3916
Views
Datensatz aus einer itab löschen(mit Field-Symbols)
von Hagbard » 17.08.2005 15:34 • Verfasst in ABAP® für Anfänger
30
Antw.
14400
Views
move itab 1 nach itab 2 mit bedingung
von c oco » 17.04.2012 14:39 • Verfasst in ABAP® für Anfänger
2
Antw.
2519
Views
XML->ITAB
von ewx » 09.07.2008 10:24 • Verfasst in ABAP® Core
2
Antw.
438
Views
itab?
von DerAzubi » 19.10.2022 16:44 • 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

Nach MESSAGE TYPE E Felder entsperren
vor einer Woche von rob_abc gelöst 8 / 8704
ABAP - Mail so10 Text
vor einer Woche von retsch 6 / 2591
selection-screen comment mit icon
vor einer Woche von DeathAndPain 9 / 3901

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

Nach MESSAGE TYPE E Felder entsperren
vor einer Woche von rob_abc gelöst 8 / 8704
ABAP - Mail so10 Text
vor einer Woche von retsch 6 / 2591
selection-screen comment mit icon
vor einer Woche von DeathAndPain 9 / 3901

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor 2 Wochen von Manfred K. 1 / 2993
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 4803