ABAP Control Flow Statements COND/SWITCH


Example

SWITCH and COND offer a special form of conditional program flow. Unlike IF and CASE, they respresent different values based on an expression rather than executing statements. That's why they count as functional.

COND

Whenever multiple conditions have to be considered, COND can do the job. The syntax is fairly simple:

COND <type>( 
    WHEN <condition> THEN <value> 
    ... 
    [ ELSE <default> | throw <exception> ]
).

Examples

" Set screen element active depending on radio button
screen-active = COND i(
    WHEN p_radio = abap_true THEN 1
    ELSE 0 " optional, because type 'i' defaults to zero
).

" Check how two operands are related to each other
" COND determines its type from rw_compare
rw_compare = COND #( 
    WHEN op1 < op2 THEN 'LT'
    WHEN op1 = op2 THEN 'EQ'
    WHEN op1 > op2 THEN 'GT' 
).

SWITCH

SWITCH is a neat tool for mapping values, as it checks for equality only, thus being shorter than COND in some cases. If an unexpected input was given, it is also possible to throw an exception. The syntax is a little bit different:

SWITCH <type>( 
    <variable>
    WHEN <value> THEN <new_value> 
    ... 
    [ ELSE <default> | throw <exception> ]
).

Examples

DATA(lw_language) = SWITCH string(
    sy-langu
    WHEN 'E' THEN 'English'
    WHEN 'D' THEN 'German'
    " ...
    ELSE THROW cx_sy_conversion_unknown_langu( )
).