VALUE
ABAP New syntax 인 VALUE는 move-corresponding 및 append와 유사한 기능을 수행합니다.
Structure에 사용시 초기화 후 move-corresponding 형태로 값을 할당합니다.
Internal Table에 사용시 초기화 후 append 형태로 값을 추가 합니다.
* BASE 문을 이용하여 Internal Table을 초기화하지 않고 append가 가능합니다
workarea를 이용한 append를 완전히 대체하긴 어렵지만 간단히 사용하기에는 아주 편리합니다.
# 사용예시
TYPES: BEGIN OF T_TMP,
BUKRS TYPE T001-BUKRS,
BUTXT TYPE T001-BUTXT,
END OF T_TMP.
TYPES TT_TMP TYPE TABLE OF T_TMP WITH NON-UNIQUE KEY BUKRS.
DATA: LT_T001 TYPE STANDARD TABLE OF T001,
LS_T001 LIKE LINE OF LT_T001.
* Structure 에 값 할당(move-corresponding)
" value # --> 값을 받은 변수의 형식으로 변환
LS_T001 = VALUE #( BUKRS = '1000' BUTXT = '회사명' ).
WRITE:/ LS_T001.
" value {type} --> {type} 형식으로 move
DATA(LS_TMP1) = VALUE T001( BUKRS = '1000' BUTXT = '회사명' ).
WRITE:/ LS_TMP1.
DATA(LS_TMP2) = VALUE T_TMP( BUKRS = '1000' BUTXT = '회사명' ).
WRITE:/ LS_TMP2.
* Internal Table 에 값 할당 (append)
LT_T001 = VALUE #( ( BUKRS = '1000' BUTXT = '회사명' )
( BUKRS = '2000' BUTXT = '회사2' )
( BUKRS = '3000' BUTXT = '회사3' )
BUTXT = '회사이름 고정' "다음 레코드 부터 고정값으로 설정할 수 있다
( BUKRS = '4000' )
( BUKRS = '5000' ) ).
" BASE를 이용하여 기존 Internal Table에 append 할수 있다
LT_T001 = VALUE #( BASE LT_T001
( BUKRS = '9000' BUTXT = '회사9' ) ).
ZCL_SALV_TEST=>DISPLAY( LT_T001 ).
"value {type} 을 이용하여 지정된 형식으로 Internal Table을 생성하면서 append 할수 있다
DATA(LT_TMP) = VALUE TT_TMP( ( BUKRS = '1000' BUTXT = '회사명' )
( BUKRS = '2000' BUTXT = '회사2' )
( BUKRS = '3000' BUTXT = '회사3' )
BUTXT = '회사이름 고정'
( BUKRS = '4000' )
( BUKRS = '5000' ) ).
LT_TMP = VALUE TT_TMP( BASE LT_TMP
( BUKRS = '9000' BUTXT = '회사9' ) ).
ZCL_SALV_TEST=>DISPLAY( LT_TMP ).
'ABAP > Syntax' 카테고리의 다른 글
[OpenSQL] OpenSQL Expressions (0) | 2023.07.19 |
---|---|
[OpenSQL] Internal Table을 이용한 JOIN (FOR ALL ENTRIES 대체) (0) | 2023.07.18 |
[Syntax] COND, SWITCH 문 (SQL의 case문과 유사) (0) | 2023.07.18 |
[Syntax] Internal Table 레코드 수 및 Read table 구문 (0) | 2023.07.18 |
[Syntax] REDUCE - 축소 연산자 (0) | 2023.07.12 |
댓글