CASE

Basic form

CASE f.
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:
CASE f. WHEN f1. ... WHEN f2. ... ... ENDCASE.

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 processing.
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:

WHEN OTHERS.
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 follow.

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.

Example

DATA: ONE TYPE I VALUE 1, THREE TYPE P VALUE 3. DO 5 TIMES. CASE SY-INDEX. WHEN ONE. WRITE / 'That is'. WHEN 2. WRITE 'a'. WHEN THREE. WRITE 'good'. WRITE 'example'. WHEN OTHERS. WRITE '!'. ENDCASE. ENDDO.

Output: " That is a good example ! ! "

Notes

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:

WHEN f1.
WHEN f2.
Related IF , ELSEIF

Index
© SAP AG 1996