ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Programmablaufsteuerung →  Bedingte Ausdrücke → 

COND - Konditionaloperator

Syntax

... COND type( [let_exp]
               WHEN log_exp1 THEN [ let_exp] result1
             [ WHEN log_exp2 THEN [ let_exp] result2 ]
             ...
             [ ELSE [ let_exp] resultn ] ) ...

Wirkung

Ein bedingter Ausdruck mit dem Konditionaloperator COND hat ein von logischen Ausdrücken abhängiges Resultat result. Es wird entweder ein Wert des mit type angegebenen Datentyps erzeugt oder eine klassenbasierte Ausnahme ausgelöst. Für type kann angegeben werden:

Alle hinter THEN angegebenen Operanden müssen in den durch type bestimmten Datentyp konvertierbar sein. Bei Referenzvariablen muss ein Up Cast möglich sein.

In den Klammern muss mindestens eine Angabe WHEN mit einem beliebigen logischen Ausdruck log_exp angegeben werden. Es können beliebig viele Angaben WHEN mit weiteren logischen Ausdrücken folgen. Abschließend kann ein ELSE angegeben werden. Der Ausdruck wertet die logischen Ausdrücke der Reihe nach aus und wählt die Angabe result hinter THEN des ersten logischen Ausdrucks aus, dessen Ergebnis wahr ist . Das ausgewählte result bestimmt das Resultat des bedingten Ausdrucks. Wenn kein logischer Ausdruck wahr ist, wird die Angabe result hinter ELSE ausgewählt. Wenn kein ELSE angegeben ist, ist das Resultat dann der Initialwert des Datentyps type.

Optional kann vor dem ersten WHEN, hinter jedem THEN und hinter ELSE ein LET-Ausdruck zur Definition lokaler Hilfsfelder aufgeführt werden.

Hinweise

Beispiel

Verwandlung einer Uhrzeitangabe in das 12-Stunden-Format über einen bedingten Ausdruck an einer Operandenposition.. Der Typ des Resultats wird vom Operand hinter der ersten THEN-Angabe übernommen und ist deshalb string.

CLASS cx_cant_be DEFINITION INHERITING FROM cx_no_check.
ENDCLASS.

cl_demo_output=>display(
  COND #( LET t = '120000' IN
          WHEN sy-timlo < t THEN
            |{ sy-timlo TIME = ISO } AM|
          WHEN sy-timlo > t AND sy-timlo < '240000' THEN
            |{ CONV t( sy-timlo - 12 * 3600 ) TIME = ISO } PM|
          WHEN sy-timlo = t THEN
            |High Noon|
          ELSE
            THROW cx_cant_be( ) ) ).