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

SAP ABAP 기초 2-7 ) TYPE과 LIKE의 차이점

by 아기와나 SAP 2022. 11. 17.
728x90
반응형

안녕하세요 오늘은 TYPE과 LIKE의 차이점에 대해 한번 확인해보겠습니다.

 

현재 ECC버전에서는 TYPE과 LIKE의 기준이 명확하지 않은데요.

S/4 하나 버전으로 오면 차이가 명확해집니다. 이유는 서서히 알아가기로 하고 일단 TYPE과 LIKE의 차이점을 보시죠!

 

TYPETYPE문으로 선언된 것을 참조하는 것과 ABAP DICTIONARY에 있는 데이터, 스트럭처, 테이블을 참조하여 변수를 생성할 때 씁니다.

 

LIKE는 이미 나의 코딩으로 생성된 즉, DATA문을 사용하여 생성된 변수를 참조하여 또 다른 변수를 생성할 때 사용합니다.

 

즉, TYPE은 주로 공통으로 생성된, 즉 티코드 SE11(Abap Dictionary)에서 생성된 것들을 참조하여 변수를 선언할 때 사용하구요 

 

LIKE는 코딩내에서 선언된 스트럭처, 테이블 등을 다시 한번 활용하여 변수를 생성할 떄 사용합니다.

 

ABAP DICTIONARY에 올라와있는 것을 확인하려면 단순히 SE11가서 조회해보시면됩니다.

 

 

(ABAP DICTIONARY 확인 방법 예제)


 

그럼 SFLIGHT라는 테이블을 기준으로 스트럭처나 테이블을 생성하려면 'TYPE'을 써야겠죠??

 

예시를 보면서 확인해보겠습니다.

 

 

 

(코딩 예제)



 

위 코딩을 해석해보겠습니다.

빨간 네모 박스가 TYPE문이고 초록 네모박스가 초록색입니다.

 

처음에 TYPES: BEGIN OF ~~라고 선언된 것이 보이시죠??

 

저건 스트럭처나 인터널 테이블을 선언하는 문입니다. 외우시면 됩니다.

그냥 TYPES: BEGIN OF ~~를 활용하여  인터널 테이블을 생성한다고 생각하지마시고 스트럭처를 생성한다고만 기억해주세요.  그래야 S/4 HANA오면 뉴 신택스를 활용하여 코딩하기 훨씬 편해집니다.

 

저게 TYPE문을 모르시는 분들은 아래 링크를 참조해주세요.

 

그다음 LS_SFLIGHT는 LTS_SFLIGHT라는 타입 형태를 'TYPE'문으로 참조하여 스트럭처를 생성하였습니다.

또한 LT_SFLIGHT는 LTS_SFLIGHT의 TABLE TYPE 형태인 LTT_SFLIGHT를 참조하여 인터널 테이블을 만들었습니다.

 

또 SFLIGHT라는 Abap Dictionary에 올라와있는 테이블을 참조하여 변수를 선언하였습니다.

 

 

그럼 LIKE는 어떨까요??

저건 위에 LS_SFLIGHT나 LT_SFLIGHT 즉, 이미 생성된 변수를 참조하여 LS_SFLIGHT3, LT_SFLIGHT3라는 스트럭처와 인터널 테이블을 각각 만들어줬습니다.

 

즉, LIKE는 기존 코딩에서 생성되었던 스트럭처와 인터널 테이블의 형태를 따라하여(LIKE) 만든 변수입니다.

 

 

 

결론:

 

'TYPE'을 활용하여 변수를 생성할 땐 TYPES로 선언된 타입형태를 참조하여 변수를 선언하거나 Abap Dictionary에 있는 단일 변수, 스트럭처, 인터널 테이블을 생성 할 때 사용한다.

 

'LIKE'를 활용하여 변수를 생성 할 땐 기존에 한번 생성했던 변수를 활용하여 다른 변수를 추가적으로 생성할 때 사용한다.

 

 


 

728x90
반응형