Skip to content

Prefer CASE over Multiple IF / ELSEIF on the Same Variable ​

WarningClean ABAP & Modern Syntax#EC PREF_CASERemote Enabled

Overview ​

Use CASE instead of IF when checking multiple values.

ATC Finding Message: Multiple ELSEIF branches check the same variable; use CASE instead

Rationale ​

A chain of ELSEIF statements that compares the same variable to different values is harder to scan than a CASE statement. CASE groups all alternatives under one subject and makes a missing OTHERS branch visible. Use CASE for multi-value dispatch on a single expression.

Non-Compliant ​

abap
IF lv_payment_method = 'CARD'.
  process_card( ).
ELSEIF lv_payment_method = 'CASH'.
  process_cash( ).
ELSEIF lv_payment_method = 'TRANSFER'.
  process_transfer( ).
ENDIF.

Compliant ​

abap
CASE lv_payment_method.
  WHEN 'CARD'.
    process_card( ).
  WHEN 'CASH'.
    process_cash( ).
  WHEN 'TRANSFER'.
    process_transfer( ).
ENDCASE.

Configuration & Thresholds ​

This check can be fine-tuned directly in the ATC Check Variant Editor (CHKV) in Eclipse ADT:

Parameter NameData TypeDefault Value
MIN_BRANCHESInteger3

Suppression ​

To suppress findings for this rule, append the pseudo-comment to the statement:

abap
" Standard pseudo-comment:
... "#EC PREF_CASE

" SAP CI_ prefix format:
... "#EC CI_PREF_CASE

Technical Details ​

Released under the MIT License.