0v0__DEV

[14] ABAP CORRESPONDING , Mapping 본문

SAP BASIC

[14] ABAP CORRESPONDING , Mapping

0v0_삐약 2025. 2. 28. 10:28
728x90

 

코딩을 하다 보면 데이터를 다른 인터널 테이블이나 스트럭쳐로 옮겨 담아야 할 때가 많다! 

CORRESPONDING 의 유용한 쓰임, 자주 사용하는 옵션, 주의점 등 에 대해 알아보자! 

 

1. CORRESPONDING은 기존 데이터를 무시한다! 
LT_1 의 데이터를 데이터가 존재하는 LT_2에 옮기려, MOVE CORRESPONDING을 아무 옵션 없이 사용하면 

LT_AA에는 2건의 데이터가, LT_UA에는 1건의 데이터가 존재한다

 

 

MOVE-CORRESPONDIG LT_UA TO LT_AA 하면 옮긴 데이터 1건만 들어온다 

( NEW SYNTAX인 CORRESPONDING #도 동일) 

 

MOVE-CORRESPONDING LT_UA TO LT_AA KEEPING TARGET LINES. 하면

옮긴 데이터 1건 + 기존 데이터 = 3건 들어옴

( NEW SYNTAX 인 CORRESPONDING BASE도 동일 ) 

  결과
LT_AA = CORRESPONDING #( LT_UA ) .

MOVE-CORRESPONDING LT_UA TO LT_AA .
LT_AA의 기존 데이터 무시,
MOVE 한 데이터만 존재 
MOVE-CORRESPONDING LT_UA TO LT_AA KEEPING TARGET LINES.

LT_AA CORRESPONDING #BASE LT_AA LT_UA .
LT_AA의 기존 데이터와
MOVE한 데이터 모두 존재 



ITAB: 필드 명이 다를 경우

LT_DATA와 LT_MOVE는 'TEXT1'만 필드명이 동일함

이 경우 결과는 

 

필드명이 동일한 'TEXT1' 에 대해서만 값이 들어가고, 나머지 필드들은 없어짐!

 

만약, TEXT1,2,3 필드의 데이터를 각각 TEXT1, CHAR2, CHAR3 필드로 옮기고 싶다면 

CORRESPONDING / MAPPING 옵션을 사용! 

동일한 필드명에 대해서는 안써줘도 무방

 

 

+ 번외1 ) 

LT_MOVE VALUE #( FOR LS_DATA1 IN LT_DATA TEXT1 LS_DATA1-TEXT1

                                                                                       CHAR2 'VALUE' ).

 

LT_DATA의 데이터를 LT_MOVE에 넣는데, 

LT_DATA에 저장된 데이터와, 하드코딩하는 값을 동시에 넣을 수 있음 

 

+ 번외 2) 

corresponding mapping default : 값을 copy 하면서 default 값을 지정해줄 수 있음

결과 ::

728x90