Delete in Loop abglecih 2 ITAb

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

Delete in Loop abglecih 2 ITAb

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Hallo Experten,
meine Frage, welchen von 2 Methoden sind perfoment bei DEL in Loop Schleife?
1.
SORT itab1 by matnr.
SORT itab2 by matnr.
LOOP AT itab2 ASSIGNING <fs_itab2>.
READ TABLE itab1 INTO gs_itab1
WITH KEY matnr = <fs_itab2>-matnr BINARY SEARCH.
IF sy-subrc NE 0.
DELETE itab2 WHERE matnr = <fs_itab2>-matnr .
ENDIF.
ENDLOOP.

oder
2.
SORT itab1 by matnr.
SORT itab2 by matnr.
LOOP AT itab2 ASSIGNING <fs_itab2>.
READ TABLE itab1 INTO gs_itab1
WITH KEY matnr = <fs_itab2>-matnr BINARY SEARCH.

IF sy-subrc NE 0.
<fs_itab2>-del = 'DEL'.
ENDIF.
ENDLOOP.
DELETE itab2 WHERE del = 'DEL'.

danke

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


Re: Delete in Loop abglecih 2 ITAb

Beitrag von jocoder (Specialist / 339 / 3 / 101 ) »
Wenn beides Standardtabellen sind, müsste die zweite Variante theoretisch ein wenig performanter sein. In der ersten Variante muss der ABAP-Interpreter für jede zu löschende Zeile die gesamte Tabelle durchsuchen.
In der zweiten Variante muss itab2 nur einmal durchsucht werden, um die Zeilen zu löschen.
Bei itab2 spielt die Sortierung keine Rolle. Daher ist das Statement "SORT itab2 BY matnr" überflüssig.
Für itab1 würde eine sortierte Tabelle Sinn ergeben:

Code: Alles auswählen.

DATA: itab2 TYPE SORTED TABLE structure_whatever WITH NON-UNIQUE KEY matnr.
Spart zwar keine Performance, aber die Statements "SORT" und "BINARY SEARCH".
Bei itab2 kann man sich jetzt streiten, ob ein ABAP-boolscher Wert besser ist oder eigener Datentyp. Ich bevorzuge bei Feldern, die ein Ja oder Nein enthalten, boolsche Werte:

Code: Alles auswählen.

DATA: itab2 TYPE SORTED TABLE structure_whatever WITH NON-UNIQUE KEY matnr.

LOOP AT itab2 ASSIGNING <fs_itab2>.
READ TABLE itab1 INTO gs_itab1
WITH TABLE KEY matnr = <fs_itab2>-matnr.

IF sy-subrc NE 0.
<fs_itab2>-del = abap_true.
ENDIF.
ENDLOOP.
DELETE itab2 WHERE del = abap_true.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag:
autohandel7


Seite 1 von 1

Vergleichbare Themen

4
Antw.
7034
Views
delete from itab mit where Bedingung
von debianfan » 31.07.2019 14:38 • Verfasst in ABAP® für Anfänger
6
Antw.
15350
Views
Delete innerhalb eines Loop
von ostpower » 29.10.2009 16:09 • Verfasst in ABAP® für Anfänger
10
Antw.
3642
Views
Delete mit where ohne loop möglich?
von RIG » 03.09.2012 17:32 • Verfasst in ABAP® für Anfänger
6
Antw.
3738
Views
LOOP AT ITAB und CREATE DATA
von lilly-joe » 23.02.2015 12:15 • Verfasst in ABAP® für Anfänger
4
Antw.
1807
Views
Daten in ITAB lesen für jeden Eintrag ohne Loop
von kpas » 04.08.2006 08:07 • Verfasst in ABAP® Core

Über diesen Beitrag



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

Aktuelle Forenbeiträge

E-Mail versenden mit GroupWise 18
vor 2 Stunden von Kaiwalker 2 / 280
PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 72

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

E-Mail versenden mit GroupWise 18
vor 2 Stunden von Kaiwalker 2 / 280
PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 72

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 132
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166