안녕하세요 오늘은 TYPE과 LIKE의 차이점에 대해 한번 확인해보겠습니다.
현재 ECC버전에서는 TYPE과 LIKE의 기준이 명확하지 않은데요.
S/4 하나 버전으로 오면 차이가 명확해집니다. 이유는 서서히 알아가기로 하고 일단 TYPE과 LIKE의 차이점을 보시죠!
TYPE은 TYPE문으로 선언된 것을 참조하는 것과 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'를 활용하여 변수를 생성 할 땐 기존에 한번 생성했던 변수를 활용하여 다른 변수를 추가적으로 생성할 때 사용한다.
'- SAP ABAP 기초부터 시작하기' 카테고리의 다른 글
SAP ABAP 기초 3-2 ) 쿼리 2 - WHERE절 추가하기 (0) | 2022.11.17 |
---|---|
SAP ABAP 기초 3-1 ) 쿼리 1 (2) | 2022.11.17 |
SAP ABAP 기초 2-6 ) 변수 선언 시 TYPES를 활용하기 (0) | 2022.11.13 |
SAP ABAP 기초 2-5 ) 날짜 계산하기 (1) | 2022.11.10 |
SAP ABAP 기초 2-4 ) 날짜, 시간 타입 변수 선언하기 (0) | 2022.11.09 |