Denksport: Interne Tabelle

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Denksport: Interne Tabelle

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo zusammen,
mir ist heute nach Jahren der ABAP-Programmierung für eine immer wieder mal vorkommende Problemstellung eine - wie ich finde - elegante Lösung eingefallen, die auch funktioniert. Vielleicht ist das für euch ja bereits eine bekannte Lösung. Aber ich dachte, es wäre interssant zu erfahren, was ihr so für Lösungsvorschläge habt.

Gegeben sei (als Beispiel) eine interne Tabelle mit den Spalten
- mandt like sy-mandt
- bname like sy-uname
- datum like sy-datum

Für die Kombination MANDT und BNAME können in der internen Tabelle mehrere Einträge mit unterschiedlichen und gleichem Datum vorkommen.
Die Aufgabe ist nun mit möglichst wenig Coding und Speicher für jede Kombination MANDT und BNAME nur den Eintrag mit dem jüngsten Datum in der internen Tabelle zu haben, sprich alle anderen zu entfernen. (Geht in gleicher Weise auch für das älteste Datum)

Wer Freude an solchen Aufgaben hat, ist eingeladen, Lösungvorschläge zu posten. Meine Lösung benötigt 8 Zeilen, wobei jedes Statement wie üblich in einer Zeile steht (nicht zusammengefasst).

Gruß Dele

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


Re: Denksport: Interne Tabelle

Beitrag von JHM (Top Expert / 1225 / 2 / 204 ) »
Dele hat geschrieben: Wer Freude an solchen Aufgaben hat, ist eingeladen, Lösungvorschläge zu posten.
Dann will ich mal:

Code: Alles auswählen.

SORT itab BY mandt bname datum.
DELETE ADJACENT DUPLICATES FROM itab COMPARING mandt bname.
zwei Zeilen Code :D. Über den Sort kann bestimmt werden ob das älteste bzw. das jungste Datum erhalten werden soll.
Gruß Hendrik

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo JHM,

stimmt ! (Wer lesen kann ist klar im Vortei und ich sollte mich wohl ein wenig schämen). Ich hatte irgendwie im Sinn, das beim Befehl DELETE ADJACENT DUPLICATES die Reihenfolge nicht sicher ist - man also nicht weiß, welche Zeilen er löscht. Aber in der Doku steht, daß er immer die erste stehen läßt.

Nun denn, dann hat es sich auf jeden Fall auch für mich gelohnt.

Meine Lösung war übrigens so:

SORT itab BY mandt bname datum.
loop at itab.
at end of bname.
continue.
endat.
delete itab.
endloop.

Vielen Dank für deinen Hinweis. Ich glaube kürzer wird's wohl kaum gehen.

Gruß Dele

Re: Denksport: Interne Tabelle

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Dele hat geschrieben:Meine Lösung benötigt 8 Zeilen, wobei jedes Statement wie üblich in einer Zeile steht (nicht zusammengefasst).
Lügner!!!
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4800
Views
5
Antw.
5968
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
5
Antw.
5584
Views
1
Antw.
5137
Views

Ü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.