SAP NetWeaver AS ABAP Release 752, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
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( ) ) ).