nachdem DELETE ADJACENT nicht hilft, würde es uns helfen, wenn Du ein Beispiel geben würdest. Dann haben wir die Möglichkeit, an Hand der Daten Dein Problem zu verstehen.Arno hat geschrieben:Hallo,
ich stehe vor folgendem Problem:
- in einem Report wird eine interne Tabelle von variabler Länge generiert
- in dieser Tab. gibt es eine Spalte, in der doppelte Einträge vorkommen können
- wenn nun eine Doppelung auftritt, soll immer der zweite (gleiche) Eintrag der Spalte mit seiner ganzen Zeile gelöscht werden
Ich habe es mit DELETE ADJACENT DUPLICATE ENTRIES FROM <itab> [COMPARING... ] versucht. Damit lassen sich jedoch nur doppelte Einträge benachbarter Spalten auffinden und löschen, jedoch nicht innerhalb einer Spalte.
Für ein paar kreative Anregungen bin ich sehr dankbar!
mfg Arno
Code: Alles auswählen.
victor hugo prince
leonid tolstoy woina
john tolkien hobbit
john tolkien hobbithobbit
...und sortieren vor dem DELETE ADJACENT DUPLICATE... soll nicht sein? Ansonsten würde das helfenIch habe es mit DELETE ADJACENT DUPLICATE ENTRIES FROM <itab> [COMPARING... ] versucht. Damit lassen sich jedoch nur doppelte Einträge benachbarter Spalten auffinden und löschen, jedoch nicht innerhalb einer Spalte.
möglicherweise kannst Du bereits bei der Selektion (von der Datenbank) mittels Zusatz DISTINCT doppelte Datensätze vermeiden.Arno hat geschrieben:Im Anhang befindet sich ein word file mit einer fiktiven Beispieltabelle. In der ersten Spalte treten Doppelungen auf. Diese sollen samt der dazugehörigen Zeile gelöscht werden.
Es muß also innerhalb einer Spalte geprüft werden, ob Doppelungen auftreten.
mfg Arno
wenn nicht sortiert werden darf, musst Du mittels LOOP die Tabelle durch gehen und für jeden Satz prüfen, ob Du mit READ TABLE einen Satz findest, dessen SY-TABIX LT akt_tabix ist. Wenn das der Fall ist, kannst Du die aktuelle Zeile löschen:Kowi hat geschrieben:...und sortieren vor dem DELETE ADJACENT DUPLICATE... soll nicht sein? Ansonsten würde das helfenIch habe es mit DELETE ADJACENT DUPLICATE ENTRIES FROM <itab> [COMPARING... ] versucht. Damit lassen sich jedoch nur doppelte Einträge benachbarter Spalten auffinden und löschen, jedoch nicht innerhalb einer Spalte.
Gruß,
Kowi
Code: Alles auswählen.
LOOP AT itab.
lv_tabix = sy-tabix.
READ TABLE itab WITH KEY
sp1 = itab-sp1
TRANSPORTING NO FIELDS.
IF sy-tabix LT lv_tabix.
DELETE itab INDEX lv_tabix.
ENDIF.
Code: Alles auswählen.
SORT itab BY sp1.
DELETE ADJACENT DUPLICATED FROM itab COMPARING sp1.
Anonymous hat geschrieben: Sort itab... (by)......
Collect itab.
PENG.
Hier liegt bereits der "Fehler". Bevor ich (doppelte) Einträge in eine interne Tabelle einfüge, prüft man ob dieser schon vorhanden ist.Arno hat geschrieben:Hallo,
ich stehe vor folgendem Problem:
- in einem Report wird eine interne Tabelle von variabler Länge generiert
Das wird doch in der F1-Hilfe zu DELETE erklärt.Arno hat geschrieben:Sortieren wäre möglich, aber was sollte es bringen?
Solche Antworten kannst Du Dir sparen.Frank Dittrich hat geschrieben:Das wird doch in der F1-Hilfe zu DELETE erklärt.Arno hat geschrieben:Sortieren wäre möglich, aber was sollte es bringen?
Warum wendest Du Befehle an, deren Bedeutung Du nicht kennst?
ob die Formulierung von Frank's Antwort die Beste war, stelle ich mal dahin, aber Deine aggressive (meine Meinung) Anmerkung ist auch nicht wirklich hilfreich.Anonymous hat geschrieben:Solche Antworten kannst Du Dir sparen.Frank Dittrich hat geschrieben:Das wird doch in der F1-Hilfe zu DELETE erklärt.Arno hat geschrieben:Sortieren wäre möglich, aber was sollte es bringen?
Warum wendest Du Befehle an, deren Bedeutung Du nicht kennst?
ALLE Fragen kannst Du so lapidar beantworten... Schau in die Hilfe, schau in die Documentation, schau bei SAP nach.
Es soll Datenbestände geben, die sich nicht umsortieren lassen, weil es keine 'Key'-Felder gibt, nach denen später wieder sortiert werden kann.Anonymous hat geschrieben:Die Lösung ist doch ein Scherz
Erstens wird nur ein Feld verglichen, warum also kein Sort nach diesem Feld und danach evtl. wieder nach den keyfelder?
@ereglam: Wenn Du schon überlegen musst, ob Dittrichs Antwort nicht die Beste war, dann mein Mitleid.
Gut zu beobachten, jede direkte Konfrontation mit Dir oder Dittrich wird SOFORT als aggressive dargestellt. Meistens (fast immer) sogar von einem von Euch beiden, je nachdem.
Habt ihr Angst man rüttel an Eurem "Thron". Was auch ja bereits mehrfach von anderen erwähnt wurde. Die meisten werden dann mundtot gemacht, indem deren Postings gelöscht werden.
Sehr "fair" (ironio off), aber wenn ihr euch nicht anders auseinandersetzen könnt, geht's wohl nur so.