수색…


IF / ELSEIF / ELSE

IF lv_foo = 3.
  WRITE: / 'lv_foo is 3'.
ELSEIF lv_foo = 5.
  WRITE: / 'lv_foo is 5'.
ELSE.
  WRITE: / 'lv_foo is neither 3 nor 5'.
ENDIF.

케이스

CASE lv_foo.
  WHEN 1.
    WRITE: / 'lv_foo is 1'.
  WHEN 2.
    WRITE: / 'lv_foo is 2'.
  WHEN 3.
    WRITE: / 'lv_foo is 3'.
  WHEN OTHERS.
    WRITE: / 'lv_foo is something else'.
ENDCASE

검사

CHECK 는 논리적 표현식을 평가하고 false 일 경우 현재 처리 블록을 종료하는 간단한 명령문입니다.

METHOD do_something.
  CHECK iv_input IS NOT INITIAL. "Exits method immediately if iv_input is initial

  "The rest of the method is only executed if iv_input is not initial
ENDMETHOD.  

애써

ASSERT 는 변수가 특정 값을 가지고 있다는 것을 절대적으로 확신하고자하는 민감한 영역에서 사용됩니다. ASSERT 이후의 논리 조건이 거짓으로 판명되면 처리 할 수없는 예외 ( ASSERTION_FAILED )가 발생합니다.

ASSERT 1 = 1. "No Problem - Program continues

ASSERT 1 = 2. "ERROR

콘드 / 스위치

SWITCHCOND 는 특별한 형태의 조건부 프로그램 흐름을 제공합니다. IFCASE 와 달리, 명령문을 실행하는 대신 표현식을 기반으로 다른 값을 재현합니다. 그것이 그들이 기능으로 간주하는 이유입니다.

조건

여러 조건을 고려해야 할 때마다 COND 가 작업을 수행 할 수 있습니다. 구문은 매우 간단합니다.

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

예제들

" 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 는 값을 매핑하기위한 깔끔한 도구로서 평등만을 검사하므로 일부 경우 COND 보다 짧습니다. 예기치 않은 입력이있는 경우 예외를 throw 할 수도 있습니다. 구문은 약간 다릅니다.

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

예제들

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow