Löschen von itab-Zeilen

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

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

Löschen von itab-Zeilen

Beitrag von Patrick1982 (ForumUser / 33 / 4 / 0 ) »
Moin,

ich habe eine wahrscheinlich recht einfache Frage, die ich aber irgendwie grad nicht richtig gelöst bekomme:

Ich habe in einem Programm 2 itabs.
Die eine (itab_gross) ist sehr groß (ca. 20 Spalten und 1 Mio. Zeilen), die andere (itab_klein) sehr klein (2 Spalten und rund 30-50 Zeilen).
In beiden itabs gibt es das Schlüsselfeld VKONT.
Nun möchte ich aus der itab_gross alle Einträge löschen, in denen das Feld VKONT mit dem selben Wert im Feld VKONT der itab_klein gefüllt ist.
Sprich: In der itab_groß sind 1 Mio. Einträge mit 1 Mio. verschiedenen Werten in VKONT und in der itab_klein gibt es z.B. 10 Einträge, in denen das Feld VKONT den selben Wert hat wie in der itab_groß. Diese Einträge sollen nun aus der itab_gross gelöscht werden.

Ich tue mich irgendwie schwer damit, über die itab_groß zu loopen und für jeden Eintrag zu prüfen, ob es einen entsprechenden Eintrag in der itab_klein gibt.
Was könnt ihr Profis mir empfehlen, wie ich das Prüfen und Löschen aufbauen sollte, dass die Performance noch einigermaßen akzeptabel ist?

Besten Dank und viele Grüße,
Patrick

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


Re: Löschen von itab-Zeilen

Beitrag von msfox (Specialist / 386 / 58 / 76 ) »
Ohne es zu prüfen, würde mir einfallen, die kleine IT_TAB in eine Range-Tabelle zu packen.
lt_vkonto_range type range of vkont_kk.

Un dann mit einem DELETE und IN zu löschen. Weiß aber nicht, ob DELETE mit IN umgehen kann.

Also:
DELETE itab_gross where vkont IN lt_vkonto_range.
--
Oder du sortierst die große Tabelle nach VKONT als Sorted Tabelle.
Dann machts du ein LOOP über die kleine.
Am Ende dann
DELETE itab_gross WHERE VKONT = <wa_vkont>.
--
Kann sein, dass du das Sort auch in meinem ersten Vorschlag brauchst. Kann nämlich sein, dass der IN-Operator auch nur sequenziell für jeden Eintrag in der RANGE über die große Tabelle BIS ZUM ENDE Loop und dann löscht. Wenn sie sortiert ist, geht die Suche schneller.

Re: Löschen von itab-Zeilen

Beitrag von DeathAndPain (Top Expert / 1964 / 261 / 415 ) »

Code: Alles auswählen.

LOOP AT itab_gross ASSIGNING FIELD-SYMBOL(<itab_gross>).
  CHECK LINE_EXISTS( itab_klein[ vkont = <itab_gross>-vkont ] ).
  DELETE itab_gross.
ENDLOOP.
Optimalerweise gibt es auf der itab_klein einen HASHED INDEX auf die Spalte vkont.

Seite 1 von 1

Vergleichbare Themen

11
Antw.
11766
Views
doppelte Zeilen aus ITAB eliminieren
von mörtel » 27.06.2007 10:10 • Verfasst in ABAP® für Anfänger
2
Antw.
2660
Views
Zeilen aus ALV Löschen
von moee » 12.03.2009 13:18 • Verfasst in ABAP® für Anfänger
4
Antw.
3218
Views
Aus DB löschen, was nicht in itab
von Legxis » 19.07.2018 16:19 • Verfasst in ABAP® Core
4
Antw.
2460
Views
ABAP Word Zeilen löschen
von Pfirsichbäumchen » 21.04.2017 17:32 • Verfasst in ABAP® Core
6
Antw.
4785
Views
ALV Drucktaste zum Zeilen einfügen/löschen
von Ibiza90 » 27.08.2013 08:24 • 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 / 1749
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2299

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

Unbeantwortete Forenbeiträge

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