본문 바로가기
- SAP ABAP 기초부터 시작하기

SAP ABAP 기초 4-4) MOVE-CORRESPONDING 이해하기

by 아기와나 SAP 2022. 12. 9.
728x90
반응형

안녕하세요 오늘은 MOVE-CORRESPONDING에 대해 알아보겠습니다.

 

MOVE-CORRESPONDING은 컬럼명이 같다면 그 필드가 가진 데이터를 그대로 옮겨주는 구문입니다.

 


예를 하나 들어보겠습니다.

 

구조체 1 값을 구조체 2로 복사를 해보겠습니다.

구조체 1과 구조체 2의 컬럼과 데이터를 한번 확인해보겠습니다.

 

 

(구조체 1)

구조체 1의 컬럼명은 각각 사번, 사원이름이며 각 컬럼의 데이터는 'S1234', '아밥기초'가 들어있습니다.

사번 사원이름
S1234 아밥기초

 

 

(구조체 2)

구조체 2의 컬럼명은 각각 사원번호, 사원이름이며 구조체 1의 값을 MOVE-CORRESPONDING구문으로 받아 올 

예정입니다.

사원번호 사원이름
   

 

(코딩)

MOVE-CORRESPONDING    구조체 1     TO      구조체 2.

 

 

 

(결과 - 구조체 2)

사원번호 사원이름
  아밥기초

 

구조체 1의 데이터를 구조체 2로 MOVE-CORRESPONDING을 통해 데이터를 넘겨줘보니,

(사원번호)는 들어와있지 않고    (사원이름) 컬럼의 데이터만 들어와있습니다.

 

왜그럴까요??

구조체1의 '사번'이라는 컬럼명과 구조체2의 '사원번호'라는 컬럼명서로 일치하지 않기 때문에

값 복사가 안되었던 것입니다.

 

 

구조체 1과 2의 사원번호의 값을 MOVE-CORRESPONDING을 통해 서로 복사 가능한 상태로 만들려면,

구조체 1의 컬럼명을 구조체 2에 맞게 '사원번호'로 변경하던지 아니면 

구조체 2의 컬럼명을 구조체 1에 맞게 '사번'으로 변경해야 합니다.

 

 


(소스예제)

 

 

 


(소스 해석)

 

1. 스트럭처 간 MOVE-CORRESPONDING

 

ECC 버전 즉, 뉴 신택스 구문이 되지 않는 아밥 버전이라면 MOVE-CORRESPONDING이라는 구문은

(구조체 TO 구조체) 밖에 되지 않습니다. (STRUCTURE TO STRUCTURE)

 

따라서 주로 LOOP를 돌면서 구조체에 담아주는 로직에 많이 사용합니다.

 


 

위 로직을 풀어보겠습니다.

 

1번 로직의 예시는 LOOP를 돌며 LT_SFLIGHT의 라인 1개의 값을 LS_SFLIGHT 구조체(스트럭처)에

담아주고, 그 데이터를 LS_SFLIGHT2, LS_SFLIGHT3에 값을 복사하는 테스트입니다.

 


(LS_SFLIGHT 구조체)

 


(LS_SFLIGHT2 구조체)

 

MOVE-CORRESPONDING LS_SFLIGHT TO LS_SFLIGHT2 구문은 값이 정상적으로 잘 복사가 되었습니다.

 

왜그럴까요?

 

MANDT부터 SEARSOCC_F 컬럼명 까지 전부 동일하기 때문에 컬럼명에 맞는 데이터를 전부 정상적으로 가져왔습니다.

 


그럼 MOVE-CORRESPONDING LS_SFLIGHT TO LS_SFLIGHT3 구문도  확인해볼까요?

 

(LS_SFLIGHT3 구조체)

 

 

결론적으로 LS_SFLIGHT3 구조체의 CARRID3, CONNID3 컬럼에 아무런 값이 복사되지 않았습니다.

 

LS_SFLIGHT 구조체의 컬럼명에 CARRID3, CONNID3이 없어 LS_SFLIGHT3 구조체에 가져올 값이 없어

못 가져오게 된 것입니다.

 

즉, 두 구조체 서로 컬럼명이 같은 값만 복사됩니다.

 

 

 

 

 

2. 테이블 간 MOVE-CORRESPONDING

 

테이블간 값 복사는 MOVE-CORRESPONDING이 아닌 MOVE문을 사용하시면 테이블 컬럼명이

같은 데이터끼리 값 복사가 됩니다.

 

위 예제코드로 실습해보세요.

 

감사합니다.

 

 

 

 

 

728x90
반응형