Löschen von fast indentischen Einträgen in einer internen Tabelle

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

Löschen von fast indentischen Einträgen in einer internen Tabelle

Beitrag von kaim77 (Specialist / 172 / 0 / 0 ) » 30.06.2020 12:54
Guten Tag,

man hat ja mit
DELETE ADJACENT DUPLICATES FROM lt_obj COMPARING objid.

die Möglichkeit Duplikate zu löschen, wenn die Spalte objid folgende Einträge hat:

7867524
7867524

Wie ist es, wenn man folgenden Eintrag in einer Spalte hat. Also nur die Mitte identisch ist:
0A W 47112345 11
0A W 47112345 22

hier sollte dann eine Zeile gelöscht werden.

Viele Grüße
Kaim


Re: Löschen von fast indentischen Einträgen in einer internen Tabelle

Beitrag von qyurryus (ForumUser / 47 / 35 / 12 ) » 30.06.2020 13:13
Man könnte beim "COMPARING"-Zusatz das Feld mit einem Offset + Länge einschränken (Voraussetzung natürlich eine sortierte Tabelle), Beispiel:

Code: Alles auswählen.

TYPES ty_objid_t TYPE STANDARD TABLE OF name1 WITH DEFAULT KEY.
DATA(test) = VALUE ty_objid_t(
  ( |0A W 47112345 11| )
  ( |0A W 47112345 11| )
  ( |1A W 47112345 22| )
  ( |1A W 471| ) ).
  
  " vergleicht stelle 1-13, also z.B. den Teil 0A W 47112345
  DELETE ADJACENT DUPLICATES FROM test COMPARING table_line(13).
  " Ergebnis:
  " ( |0A W 47112345 11| )
  " ( |1A W 47112345 22| )
  " ( |1A W 471| ) ).

  " vergleicht "Mittelteil" 47112345
  DELETE ADJACENT DUPLICATES FROM test COMPARING table_line+5(8). 
  " Ergebnis:
  " ( |0A W 47112345 11| )
  " ( |1A W 471| ) ).

Re: Löschen von fast indentischen Einträgen in einer internen Tabelle

Beitrag von DeathAndPain (Top Expert / 1386 / 148 / 324 ) » 30.06.2020 16:00
Funktionieren Offsetangaben denn beim COMPARING-Zusatz? Ich habe es nie versucht, aber es würde mich überraschen.

Ansonsten kann man auch auf den DELETE ADJACENT DUPLICATES verzichten und es "zu Fuß" machen.

Code: Alles auswählen.

LOOP AT tabelle ASSIGNING FIELD-SYMBOL(<tabelle>) FROM 2.
  ASSIGN tabelle[ sy-tabix - 1 ] TO FIELD-SYMBOL(<vorige_zeile>).
  CHECK <tabelle>-spalte+5(10) = <vorige_zeile>-spalte+5(10).
  DELETE tabelle.
ENDLOOP.

Re: Löschen von fast indentischen Einträgen in einer internen Tabelle

Beitrag von qyurryus (ForumUser / 47 / 35 / 12 ) » 30.06.2020 16:10
DeathAndPain hat geschrieben:
30.06.2020 16:00
Funktionieren Offsetangaben denn beim COMPARING-Zusatz? Ich habe es nie versucht, aber es würde mich überraschen.
Ich war mir auch nicht sicher - habe mir deshalb den Beispielfall gebaut in dem es tatsächlich funktioniert.

Folgende Benutzer bedankten sich beim Autor qyurryus für den Beitrag:
DeathAndPain


Re: Löschen von fast indentischen Einträgen in einer internen Tabelle

Beitrag von DeathAndPain (Top Expert / 1386 / 148 / 324 ) » 30.06.2020 16:13
Nun ja, dann hat er jetzt zwei funktionierende Alternativen. 😊

Seite 1 von 1

Aktuelle Forenbeiträge

Upload Dateitypen - Content ermitteln
vor 7 Stunden von STDIN 1 / 13
Best Practice IDOC Typen
Gestern von Basler84 1 / 126

Vergleichbare Themen

Suche nach gleichartigen Einträgen in einer internen Tabelle
von balkusan » 19.01.2017 16:45
Spalten einer internen Tabelle löschen
von dEr_BuMaN » 27.06.2007 21:33
Feld einer internen Tabelle dynamisch löschen
von Hagbard » 16.08.2005 15:28
SELECT-FROM-Befehl und Löschen von Einträgen
von lr_1504 » 10.01.2020 16:53
Löschen von Einträgen in einer Customizingtabelle
von LyNx » 10.06.2008 11:25