본문 바로가기
카테고리 없음

ABAP New Syntax #8 - COND/SWITCH Operator

by SAPortal 2024. 3. 5.

목차

    1. COND/SWITCH Operator 란?

    COND/SWITCH 연산자는 여러 조건 중 하나를 만족하는 경우에 해당하는 값을 반환하는 조건부 표현식입니다.

    이 연산자는 다양한 경우의 수를 평가하고, 각 경우에 대응하는 값을 선택하여 반환하는 데 사용됩니다.

    COND/SWITCH 연산자는 복잡한 IF-ELSEIF 구문을 대체하여 코드를 더 간결하고 읽기 쉽게 만들어 줍니다.

     

    2. COND/SWITCH Operator 예제

    예제1) COND 연산자 기본사용

    DATA(LV_AGE) = 20.
    DATA(LV_ADULT) = COND #( WHEN LV_AGE >= 18 THEN 'Yes' ELSE 'No' ).
    
    [RESULT]
    Yes

    CASE문과 비슷하다고 생각하면 쉽습니다.

    WHEN절이 참이면 THEN문을 타고 거짓이면 ELSE문을 타게 됩니다.

    위 예제에서는 LV_AGE가 20이기 때문에 WHEN절이 참이므로 THEN절이 타게 됩니다.

    COND 연산자로 인해 Return되는 값이 String이기 때문에 TARGET변수는 Inline 선언이 가능합니다.

     

     

    예제2) COND 연산자 복합조건

    DATA(LV_SCORE) = 85.
    DATA(LV_GRADE) = COND #( WHEN LV_SCORE > 90 THEN 'A'
                             WHEN LV_SCORE > 80 THEN 'B'
                             ELSE 'C' ).
                             
    [RESULT]
    B

    이 예제에서는 LV_SCORE 변수의 값에 따라 LV_GRADE에 서로 다른 값을 할당합니다.

    점수가 90 초과이면 'A', 80 초과이면 'B', 그 외의 경우에는 'C'가 됩니다.

     

     

    예제3) SWITCH 연산자 기본사용

    DATA(LV_DAY) = 'SAT'.
    DATA(LV_DAY_TYPE) = SWITCH #( LV_DAY WHEN 'SAT' OR 'SUN' THEN 'Weekend'
                                         ELSE 'Weekday' ).
                                         
    [RESULT]
    Weekend

    이 예제에서는 LV_DAY 변수의 값에 따라 LV_DAY_TYPE에 'Weekend' 또는 'Weekday'를 할당합니다.

    LV_DAY가 'SAT' 또는 'SUN'일 경우 'Weekend'를, 그렇지 않으면 'Weekday'를 반환합니다.

     

     

    예제4) SWITCH 연산자 복합조건

    DATA(LV_DAY) =  'Friday'.
    
    DATA(LV_MESSAGE) = SWITCH #( LV_DAY WHEN 'Monday'    THEN 'Start of the work week.'
                                        WHEN 'Tuesday'   THEN 'Second day of the work week.'
                                        WHEN 'Wednesday' THEN 'Middle of the work week.'
                                        WHEN 'Thursday'  THEN 'Just one more day to Friday!'
                                        WHEN 'Friday'    THEN 'Finally, it is Friday!'
                                        WHEN 'Saturday' OR 'Sunday' THEN 'Weekend!'
                                        ELSE 'Invalid day' ).
                        
    [RESULT]
    Finally, it is Friday!

    이 예제에서는 각 요일(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)에 대해 별도의 WHEN 절을 사용하여, 해당 요일에 맞는 메시지를 LV_MESSAGE 변수에 할당합니다.

    SaturdaySunday는 주말을 나타내므로, 같은 메시지('Weekend!')를 반환하기 위해 하나의 WHEN 절에 함께 지정되어 있습니다.

     

    3. COND/SWITCH Operator 장점

    가독성 향상: 다중 조건을 평가하는 코드를 한 곳에 모아서 처리할 수 있어, 코드의 읽기 쉽고 이해하기 쉬워집니다.

    코드 간결성: 복잡한 IF-ELSEIF 구문을 간결한 SWITCH 구문으로 대체할 수 있어, 코드의 길이를 줄이고 구조를 단순화할 수 있습니다.

    유연성: 다양한 조건과 상황에 대응하는 값을 쉽게 매핑할 수 있어, 비즈니스 로직의 변경이나 확장에 유연하게 대응할 수 있습니다.