본문 바로가기

ABAP New syntax - switch, cond

반응형

ABAP 신문법(New Syntax)인 switch, cond구문에 대한 설명이다.

switch, cond문법은 case문과 비슷한 구조, 기능이며 변수에 값을 설정할 때 다른 변수의 값에 따라 동적으로 값을 설정하는데 사용된다.

동적인 프로그램을 개발하는데 유리하고 if문을 썼을 때 보다 코딩 라인을 줄일 수 있다.


● cond 구문


DATA(lv_char) = 'B'.

DATA lv_num TYPE int1.

"case문 사용
CASE lv_char.
  WHEN 'A'.
    lv_num = 1.
  WHEN 'B'.
    lv_num = 2.
  WHEN 'C'.
    lv_num = 3.
  WHEN 'D'.
    lv_num = 4.
  WHEN OTHERS.
ENDCASE.

(구 문법(case 사용))


DATA(lv_char) = 'B'.

DATA lv_num TYPE int1.

"if문 사용
IF lv_char EQ 'A'.
  lv_num = 1.
ELSEIF lv_char EQ 'B'.
  lv_num = 2.
ELSEIF lv_char EQ 'C'.
  lv_num = 3.
ELSEIF lv_char EQ 'D'.
  lv_num = 4.
ENDIF.

(구 문법(if 사용))


DATA(lv_char) = 'B'.

DATA(lv_num) = COND i( WHEN lv_char = 'A' THEN 1
                       WHEN lv_char = 'B' THEN 2
                       WHEN lv_char = 'C' THEN 3
                       WHEN lv_char = 'D' THEN 4 ).

(신 문법(cond 사용))

변수 선언(DATA(lv_num)과 동시에 조건에 맞는 값을 설정한다.

위의 i는 data type을 의미한다. data type을 명시함으로써 lv_num의 data type은 int type이 된다.

 


DATA(lv_char) = 'B'.

DATA lv_num2 TYPE int1.

lv_num2 = COND #( WHEN lv_char = 'A' THEN 1
                  WHEN lv_char = 'B' THEN 2
                  WHEN lv_char = 'C' THEN 3
                  WHEN lv_char = 'D' THEN 4 ).

(이미 선언된 변수의 값 설정)

당연히 이미 선언된 변수에 대해서도 cond / switch문을 사용할 수 있다.

Value구문에서 말했다시피 #은 operand type(피 연산자 type)이다. 정리하자면

'lv_num2이라는 변수에 int1의 data type으로 데이터를 설정하겠다'라는 뜻으로 해석할 수 있다.

 

ABAP New Syntax - Value

ABAP 신문법(New Syntax)인 Value구문에 대한 설명이다. Value문은 Insert/Append와 유사한 기능을 한다. Internal Table 또는 Structure에 초기 데이터를 생성하거나 데이터를 추가할 수 있는 기능을 가지고 있..

kyoshins.tistory.com

 

lv_char은 'B'이기 때문에 각각의 변수의 값은 2가 된다.


● switch 구문


DATA(lv_char) = 'B'.

DATA(lv_num3) = SWITCH #( lv_char
                          WHEN 'A' THEN 1
                          WHEN 'B' THEN 2
                          WHEN 'B' THEN 3
                          WHEN 'B' THEN 4 ).

(신 문법(switch 사용))

cond구문과 기능은 동일하며 참조가 되는 피 연산자(lv_char)가 먼저 나와야한다.(case문과 동일)

lv_char은 'B'이기 때문에 lv_num3 변수의 값은 2가 된다.


궁금한 사항들은 댓글을 남겨주시면 친절히 답변드리겠습니다.^^

반응형

'SAP > ABAP New Syntax' 카테고리의 다른 글

ABAP new syntax line_exists  (0) 2021.11.12
Open SQL CASE문 사용법  (0) 2021.09.29
ABAP New syntax - filter  (0) 2020.11.15
ABAP New Syntax - Value  (3) 2020.03.25
ABAP New Syntax - Inline 선언  (5) 2020.03.24
댓글