Ⅰ. ERP/1. ABAP

[SAP ABAP] 신문법 VALUE()

초록활명수 2022. 11. 28. 17:47
728x90

구 신택스 같은 경우 일일히 한 줄씩 적으면서 할당해줘야 했다.

ls_struct-col1 = 1.
ls_struct-col2 = 2.

신 문법에서는 VALUE를 통해 한 줄로 기존 값을 할당해주고 추가 해줄 수 있게 되었다.

TYPES : BEGIN OF ls_struct,
  col1 TYPE i,
  col2 TYPE i,
  END OF ls_struct.
*lt_table TYPE TABLE OF ls_struct WITH EMPTY KEY.
types l_t_type type table of ls_struct WITH NON-UNIQUE key col1.

**********************************************************************
* 값을 할당하겠다. ( 초기값 설정 )
* # : 피 연산자 type ( itab )
* itab 에 itab의 type으로 데이터 넣겠다.
**********************************************************************
DATA itab TYPE l_t_type.
itab = VALUE #( ( col1 = 2 col2 = 4 )
                ( col1 = 3 col2 = 4 ) ).
                * base1 를 자동으로 선언하고 레코드 입력.(VALUE하고 type형)
DATA(base1) = VALUE l_t_type( ( col1 = 5    col2 = 5 ) ).


*BASE를 사용하면 BASE 뒤의 table 에 값을 추가로 삽입
DATA(itab2) = VALUE #( BASE base1
( col1 = 2 col2 = 20 )
).

DATA(itab4) = VALUE l_t_type( BASE base1
( col1 = 10 col2 = 20  )
).
itab = VALUE #( col1 = 4   ( col2 = 4 ) ( col2 = 5 )  ).

VALUE#() :  초기값을 할당하겠다.

#               : 피 연산자 type ( 변수가 기존에 선언이 되어 있어야 사용가능)

itab = value # (  ... )  : itab에 itab의 type으로 ,,,데이터를 할당하겠다.

초기 값을 (2,4) (3,4) 로 할당하였다.

그리고 다음 라인에 itab = value # (  ... )  인 초기값 할당하는 구문을 넣었을 때, 

데이터 삽입이 아닌 초기값이 새로 할당되는 것을 볼 수 있다.

 

base1은 기존에 선언되어 있지 않으므로

처음에 선언해준 type을 지정해주고 BASE1을 선언 후, 값을 할당한다.

BASE 구문을 이용하여 BASE1 의 값에 기초하여 값을 추가하고 itab4에 할당해주는 구문이다.

DATA(itab4) : itab 선언

Value l_t_type : l_t_type 의 type으로 만들거임

BASE base1 : 값은 base1 의 값을 기존값으로 쓸거임

( col1 = 10.... ) : 추가로 ,,, 값을 넣을 거임

BASE1의 기본값 (5,5)에서 (10,20)이 추가되어 ITAB4 가 생성되었다.

728x90