ABAP COND Operator- Alles was ihr darüber wissen müsst!

Mit der kontinuierlichen Modernisierung von ABAP bietet SAP immer mehr Möglichkeiten, den Code kompakter und lesbarer zu gestalten. Ein gutes Beispiel dafür ist der COND-Operator, der eine elegante Alternative zu klassischen IF-ELSE-Strukturen darstellt. In diesem Beitrag werfen wir einen Blick auf die Funktionsweise von COND, vergleichen ihn mit älteren ABAP-Versionen und zeigen praxisnahe Beispiele.

Was ist der COND-Operator?

Der COND-Operator wurde mit ABAP 7.40 (SP08) eingeführt und ermöglicht es, bedingte Ausdrücke in einer kompakten Form direkt in Zuweisungen zu schreiben. Er funktioniert nach dem Prinzip einer Kaskade von WHEN-Bedingungen, ähnlich einer CASE-Anweisung, aber für beliebige boolesche Ausdrücke.

Syntax:

DATA(result) = COND string(
    WHEN sy-subrc = 0 THEN 'Erfolg'
    WHEN sy-subrc = 4 THEN 'Warnung'
    ELSE 'Fehler' ).

Hier wird result direkt mit einem Wert basierend auf sy-subrc belegt – ohne IF-ELSE oder CASE-Anweisung.

CloudDNA Bücher

Vergleich mit älteren ABAP-Versionen

Vor der Einführung von COND musste man für solche logischen Entscheidungen auf IF-ELSE oder CASE zurückgreifen:

Vor ABAP 7.40 (klassische IF-ELSE-Logik)

DATA result TYPE string.
IF sy-subrc = 0.
    result = 'Erfolg'.
ELSEIF sy-subrc = 4.
    result = 'Warnung'.
ELSE.
    result = 'Fehler'.
ENDIF.

Diese Variante ist funktional identisch mit der COND-Lösung, aber deutlich ausführlicher.

Vergleich: -Anweisung

Alternativ hätte man auch eine CASE-Struktur verwenden können:

DATA result TYPE string.
CASE sy-subrc.
    WHEN 0.
        result = 'Erfolg'.
    WHEN 4.
        result = 'Warnung'.
    WHEN OTHERS.
        result = 'Fehler'.
ENDCASE.

Die CASE-Lösung ist zwar übersichtlicher als IF-ELSE, aber immer noch länger als COND.

Erweiterte Anwendungsfälle

Neben einfachen Bedingungen bietet COND auch erweiterte Möglichkeiten, um komplexere Szenarien kompakt abzubilden.

Dynamische Werte basierend auf mehreren Bedingungen

DATA(user_status) = COND string(
    WHEN user_role = 'ADMIN' AND is_active = abap_true THEN 'Aktiver Admin'
    WHEN user_role = 'USER' AND is_active = abap_true THEN 'Aktiver Nutzer'
    ELSE 'Inaktiv' ).

Hier werden mehrere Bedingungen kombiniert, um den Status eines Benutzers dynamisch zu bestimmen.

Verwendung mit Typumwandlungen

COND kann auch mit unterschiedlichen Datentypen arbeiten:

DATA(num) = COND i(
    WHEN is_valid = abap_true THEN 100
    ELSE 0 ).

Das Ergebnis ist hier eine Ganzzahl (i), je nachdem ob is_valid wahr ist oder nicht.

Zusammenfassung

Der COND-Operator ist eine leistungsfähige Alternative zu klassischen IF-ELSE– und CASE-Strukturen. Er verbessert die Lesbarkeit des Codes, reduziert die Anzahl der Zeilen und ermöglicht eine kompakte Schreibweise direkt in Zuweisungen. Gerade in modernen ABAP-Umgebungen mit Fokus auf Performance und Wartbarkeit ist der Einsatz von COND eine sinnvolle Option.

Empfehlung: Wer auf ABAP >= 7.40 entwickelt, sollte sich mit COND vertraut machen und es gezielt einsetzen, um redundanten Code zu vermeiden und die Übersichtlichkeit zu erhöhen.

Hast du COND bereits in deinen Projekten genutzt? Teile deine Erfahrungen in den Kommentaren!