ABAP Filter Statement –  Wie du sie nutzt!

Stell dir vor, du arbeitest als ABAP-Entwickler in einem großen Unternehmen, das täglich tausende Bestellungen verarbeitet. Dein Chef kommt zu dir und sagt: „Wir müssen dringend eine Liste aller offenen Bestellungen für einen bestimmten Kunden erstellen – und zwar schnell!“ Früher hättest du wahrscheinlich eine LOOP AT-Schleife mit IF-Bedingungen geschrieben, um die gewünschten Datensätze herauszufiltern. Doch was, wenn ich dir sage, dass es eine viel elegantere Lösung gibt? Willkommen in der Welt von FILTER!

Das FILTER Statement in ABAP ermöglicht eine effiziente und deklarative Möglichkeit, interne Tabellen zu filtern. Früher musste man hierfür oft umständliche Schleifen und Bedingungen formulieren, doch mit FILTER lässt sich dies in einer einzigen, kompakten Anweisung realisieren. Dies führt zu einer besseren Lesbarkeit und oft auch zu einer höheren Performance.

ABAP-Entwickler können mit FILTER komplexe Selektionen durchführen, ohne explizite LOOP AT oder READ TABLE Statements verwenden zu müssen. Besonders in Kombination mit modernen Entwicklungsansätzen und CDS-Views ist FILTER eine wertvolle Ergänzung für performanten ABAP-Code.

In diesem Blogpost erkläre ich die Syntax, gebe Codebeispiele und zeige, wie das Statement optimal genutzt werden kann. Dabei verwenden wir moderne Namensgebung nach Hungarian Notation, ohne die traditionellen Präfixe wie lt_ oder ls_, um den Code übersichtlicher zu gestalten.

Grundlagen der FILTER-Anweisung

Das FILTER Statement kann mit einer internen Tabelle und einer Bedingung genutzt werden, um eine neue Tabelle mit den passenden Einträgen zu erzeugen.

Syntax

tableTarget = FILTER #( tableSource WHERE condition ).

Erklärung:

  • FILTER #(…) erzeugt eine neue Tabelle mit gefilterten Einträgen.

  • tableSource ist die interne Tabelle, aus der gefiltert wird.

  • condition bestimmt, welche Zeilen übernommen werden.

  • tableTarget enthält die gefilterten Einträge.

CloudDNA Bücher

Beispiele

Beispiel 1: Filtern nach einem festen Wert

Angenommen, wir haben eine Tabelle mit Bestellungen und möchten nur die Einträge für eine bestimmte Kundennummer extrahieren:

data orders type table of tyOrder.
data filteredOrders type table of tyOrder.

filteredOrders = FILTER #( orders WHERE customerId = '1001' ).

Erklärung:

  • orders enthält alle Bestellungen.

  • filteredOrders enthält nur Bestellungen für die Kundennummer 1001.

Beispiel 2: Filtern mit mehreren Bedingungen

Hier extrahieren wir alle Bestellungen eines bestimmten Kunden, die zudem noch offen sind:

data openOrders type table of tyOrder.

openOrders = FILTER #( orders WHERE customerId = '1001' AND status = 'OPEN' ).

Erklärung:

  • Die Bedingung kombiniert zwei Kriterien (customerId und status).

  • openOrders enthält nur Bestellungen, die sowohl zur Kundennummer 1001 gehören als auch den Status OPEN haben.

Beispiel 3: Filtern mit einer anderen Tabelle

Manchmal müssen wir nach Werten aus einer zweiten Tabelle filtern. Nehmen wir an, wir haben eine Liste gültiger Kunden-IDs:

data validCustomers type table of string.
data selectedOrders type table of tyOrder.

selectedOrders = FILTER #( orders IN validCustomers WHERE customerId = table_line ).

Erklärung:

  • Die Bedingung WHERE customerId = table_line prüft, ob customerId in validCustomers enthalten ist.

  • table_line ist eine spezielle Variable, die das aktuelle Element der Vergleichstabelle repräsentiert.

  • selectedOrders enthält nur Bestellungen von Kunden, die in validCustomers gelistet sind.

Vorteile der FILTER-Anweisung

Die Verwendung der FILTER-Anweisung bringt zahlreiche Vorteile mit sich, die sowohl die Effizienz als auch die Lesbarkeit von ABAP-Code erheblich verbessern. Gerade in modernen ABAP-Entwicklungsprojekten, in denen Performance und Wartbarkeit eine entscheidende Rolle spielen, ist der gezielte Einsatz von FILTER besonders empfehlenswert. Im Folgenden sind die wichtigsten Vorteile zusammengefasst:

  • Kürzerer und verständlicherer Code: Durch den Verzicht auf explizite Schleifen wird der Code kompakter und leichter zu lesen.
  • Bessere Performance: ABAP führt die Filterung intern optimiert durch, was oft schneller ist als eine manuelle Iteration.

  • Einfache Kombination mit anderen OpenSQL- und Inline-Funktionen: FILTER kann nahtlos mit anderen modernen ABAP-Funktionen kombiniert werden.

  • Reduzierung von Fehlerquellen: Weniger explizite Verarbeitung bedeutet weniger Möglichkeit für versehentliche Programmierfehler.

Fazit

Das FILTER Statement ist ein leistungsstarkes Werkzeug, um interne Tabellen in ABAP effizient zu filtern. Es reduziert den Codeumfang erheblich und sorgt für performante Selektionen. Gerade in modernen ABAP-Anwendungen, in denen große Datenmengen verarbeitet werden müssen, kann es eine entscheidende Rolle spielen. Anstatt mühsam Schleifen und Bedingungen zu schreiben, lässt sich mit FILTER die gewünschte Selektion in einer einzigen kompakten Anweisung realisieren.

Mit der richtigen Anwendung lässt sich nicht nur die Lesbarkeit und Wartbarkeit des Codes erheblich verbessern, sondern auch die Laufzeit optimieren. In vielen Fällen führt FILTER zu einer deutlich besseren Performance, insbesondere wenn interne Tabellen sehr groß sind und gezielt nur bestimmte Werte extrahiert werden sollen.

Setze das FILTER Statement in deinen ABAP-Programmen ein, um von seinen Vorteilen zu profitieren!

Wie CloudDNA dich unterstützen kann

Vor kurzem kam ein Kunde mit einem massiven Performance-Problem auf uns zu. Die Verarbeitung von großen Datenmengen in ihren ABAP-Programmen dauerte ewig, und das System geriet immer wieder an seine Grenzen. Unser Team bei CloudDNA analysierte den Code und stellte fest, dass veraltete Schleifen und ineffiziente Datenzugriffe die Hauptursache waren.

Durch den gezielten Einsatz von modernen ABAP-Techniken, einschließlich des FILTER Statements, konnten wir die Laufzeit der Programme drastisch reduzieren. Statt minutenlanger Wartezeiten liefen die Prozesse nun in wenigen Sekunden durch. Das Ergebnis? Ein zufriedener Kunde mit einem performanten System und einer deutlich verbesserten Benutzererfahrung.

Wenn auch du von der neuesten ABAP-Optimierung profitieren willst, dann kontaktiere uns bei CloudDNA – wir machen dein System schneller, effizienter und zukunftssicher!