본문 바로가기
ABAP/Syntax

[Syntax] CORRESPONDING - Structure 및 Internal Table 값 복사

by name_text 2023. 7. 20.

CORRESPONDING

Structure 및 Internal Table 값 복사

 

ABAP New syntax 인 CORRESPONDING은 MOVE-CORRESPONDING과 같이 같은 필드명의 값을 복사한다는 부분에서는 같지만, CORRESPONDING은 받는쪽 변수에서 매칭되지 않는 필드는 값이 초기화된다는 부분이 다릅니다.

 

또한, CORRESPONDING은 Internal Table끼리도 필드 매칭을 해서 값을 복사할 수 있습니다.

Internal Table에 사용시에는 "BASE" 구문을 이용하여 기존 Internal Table에 APPEND 형태로 값을 추가할 수 있습니다.

 

# 사용예시

TYPES: BEGIN OF T_TMP,
  BUKRS    TYPE T001-BUKRS,
  VAL1(10) TYPE C,
  END OF T_TMP.

DATA: LT_TMP TYPE STANDARD TABLE OF T_TMP.
DATA: LS_ORG  TYPE T_TMP,
      LS_T001 TYPE T001.

SELECT
  *
FROM T001
  UP TO 5 ROWS
INTO TABLE @DATA(LT_T001).
READ TABLE LT_T001 INTO LS_T001 INDEX 1.

* MOVE-CORRESPONDING 과 CORRESPONDING 의 차이
LS_ORG = VALUE #( BUKRS = '1000'  VAL1 = 'TEST' ).
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(20)'Original', LS_ORG.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

MOVE-CORRESPONDING LS_T001 TO LS_ORG.
WRITE:/(20)'MOVE-CORRESPONDING', LS_ORG.

LS_ORG = CORRESPONDING #( LS_T001 ).
WRITE:/(20)'CORRESPONDING #', LS_ORG.


SKIP.

* Internal Table에 CORRESPONDING
LT_TMP = VALUE #( ( BUKRS = '1000' VAL1 = 'TEST' )
                  ( BUKRS = '2000' VAL1 = 'TES2' ) ).
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(20)'CORRESPONDING 전', CONV STRING( LINES( LT_TMP ) ) && '건'.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

"1. Internal Table 초기화 후 INSERT
LT_TMP = CORRESPONDING #( LT_T001 ).
WRITE:/(20)'CORRESPONDING 후', CONV STRING( LINES( LT_TMP ) ) && '건'.

"2. Internal Table에 APPEND
LT_TMP = CORRESPONDING #( BASE ( LT_TMP )  LT_T001 ).
WRITE:/(20)'CORRESPONDING 후', CONV STRING( LINES( LT_TMP ) ) && '건'.
ABAP

 

댓글