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 / 343 / 3 / 102 ) »
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.
8288
Views
delete from itab mit where Bedingung
von debianfan » 31.07.2019 14:38 • Verfasst in ABAP® für Anfänger
10
Antw.
3765
Views
Delete mit where ohne loop möglich?
von RIG » 03.09.2012 17:32 • Verfasst in ABAP® für Anfänger
6
Antw.
15894
Views
Delete innerhalb eines Loop
von ostpower » 29.10.2009 16:09 • Verfasst in ABAP® für Anfänger
6
Antw.
4094
Views
LOOP AT ITAB und CREATE DATA
von lilly-joe » 23.02.2015 12:15 • Verfasst in ABAP® für Anfänger
4
Antw.
2137
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

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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 2734
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 4540