Effect Case distinction.
Depending on the current contents of a field, this statement executes
one of several alternative processing branches. The field whose
contents determine how the subsequent processing is specified after
CASE ; the individual processing branches are introduced by
WHEN , followed by the value to be tested. The entire block is
concluded by ENDCASE .
The structure of the CASE statement is as follows:
On reaching such a CASE statement, the processor compares
f with f1 .
If f = f1 , it executes the processing block between " WHEN
f1. " and the next WHEN statement. If there are no further
WHEN statements, it executes the processing block up to the
ENDCASE statement and then continues with any subsequent
If f <> f1 , the processor compares the field f2 in the
next WHEN statement with f and proceeds as with f1
and so on.
Although f should be a variable, f1 can be a variable or
a literal. For the comparison " f = f1 ", the rules are the same
as for IF .
There is a second variant of the WHEN statement:
No more than one such WHEN statement is allowed within a
CASE block. The " WHEN OTHERS " processing block is always
concluded by ENDCASE , i.e. no further WHEN statements can
The " WHEN OTHERS " processing block is executed only if none of
the preceding WHEN blocks have been executed, i.e. if all
previous comparisons (" f = ... ) have returned a negative result.
DATA: ONE TYPE I VALUE 1,
THREE TYPE P VALUE 3.
DO 5 TIMES.
WRITE / 'That is'.
Output: " That is a good example ! ! "
You can nest several CASE statements and even
combine them with IF statements.
The statement " WHEN: f1, f2. " does not make sense. The example
below shows that the block belonging to " WHEN f1 " is empty:
© SAP AG 1996