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

SWITCH - Konditionaloperator

Syntax

... SWITCH type( [let_exp]
                 operand
                 WHEN const1 THEN [ let_exp] result1
               [ WHEN const2 THEN [ let_exp] result2 ]
               ...
               [ ELSE [ let_exp] resultn ] ) ...

Wirkung

Ein bedingter Ausdruck mit dem Konditionaloperator SWITCH hat ein von einer Fallunterscheidung 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.

Die Position operand in der Klammer ist der Wert, der in der Fallunterscheidung überprüft wird. Es handelt sich um eine allgemeine Ausdrucksposition. Dahinter muss mindestens eine Angabe WHEN aufgeführt werden. Für const hinter WHEN können Literale und Konstanten angegeben werden, die mit operand vergleichbar sein müssen. Es können beliebig viele Angaben WHEN mit weiteren konstanten Werten folgen. Abschließend kann ein ELSE angegeben werden. Der Ausdruck vergleicht die Werte des Operanden operand der Reihe nach mit den angegebenen konstanten Werten und wählt die Angabe result hinter THEN für welche die Werte von Operand und Konstante zum ersten Mal gleich sind. Das ausgewählte result bestimmt das Resultat des bedingten Ausdrucks. Wenn keine Gleichheit festgestellt wird, wird die Angabe result hinter ELSE ausgewählt. Wenn kein ELSE angegeben ist, ist das Resultat der Initialwert des Datentyps type.

Wenn eine Angabe hinter THEN oder ELSE ausgewählt werden kann, wird genau wie bei einem bedingten Ausdruck mit COND entweder das Resultat gesetzt oder eine klassenbasierte Ausnahme ausgelöst.

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

Hinweise

COND type( WHEN operand = const1 THEN result1
         [ WHEN operand = const2 THEN result2 ]
         ...
         [ ELSE resultn ] )

Beispiel

Konditionaloperator SWITCH an einer Operandenposition in einer Schleife. Die Schleife wird beim Abfangen der hinter ELSE ausgelösten Ausnahme verlassen.

CLASS cx_overflow DEFINITION INHERITING FROM cx_static_check.
ENDCLASS.

DATA(out) = cl_demo_output=>new( ).
DO.
  TRY.
      out->write(
        SWITCH string( sy-index
                       WHEN 1 THEN 'one'
                       WHEN 2 THEN 'two'
                       WHEN 3 THEN 'three'
                       ELSE THROW cx_overflow( ) ) ).
    CATCH cx_overflow.
      out->display( ).
      EXIT.
  ENDTRY.
ENDDO.