개요
SYNC 아카데미 수업을 들으면서 ABAP Program에서 Data Object 선언 시 사용하는 TYPE과 LIKE에 대해 배웠다.
TYPE과 LIKE의 차이에 대해서 JAVA와 다른 생소한 부분이기 때문에 확실히 정리해야겠다.
TYPE과 LIKE는 간단하게 비교하면 Data Object와 Data Type중 어느 것을 참조하는가 이다.
Data Object vs Data Type
특징 | Data Object | Data Type |
정의 | 실제 데이터 저장 변수 내부 테이블, 상수 등 |
데이터 속성 정의를 위한 설계도 |
역할 | 데이터 저장 or 처리 | 데이터 구조(타입, 길이, 소수점 등) 정의 |
메모리 사용 | 프로그램 실행 시 메모리 할당 | 메모리 사용x (데이터 구조만 정의) |
예제 | DATA gv_int TYPE i LENGHT 10 | TYPE tv_int TYPE i LENGHT 10 |
사용 위치 | 실제 프로그램에서 데이터 저장 or 처리 | 변수 선언, 구조 설계 or 인터페이스 정의 |
생성 시점 | 프로그램 실행 시 메모리 | 컴파일 시 정의만 존재 |
즉, 간단하게 말하면 실제로 Data를 가질 수 있는가 없는가로 갈린다.
데이터를 가질 수 없다면 메모리를 할당할 필요가 없기 때문이다.
LIKE vs TYPE
주요 차이점
특징 | LIKE | TYPE |
참조 대상 | 이미 선언된 데이터 객체(변수, 필드 등) | ABAP Dictionary의 데이터 요소, 구조 or 로컬 타입(Data Type) |
의존성 | 참조된 데이터 객체 | 참조된 데이터 타입과 독립적 |
사용 목적 | 기존 변수 or 필드와 동일 속성 유지 | 독립적, 명시적 타입 정의 |
사용 가능 대상 | 프로그램 내 선언된 변수, 필드 등 | ABAP Dictionary의 글로벌 타입, Local Type |
주요 사용 상황 | 테이블 필드 or 기존 변수 속성 | Global Type or Local Type 참 |
예제 | scarr-carrid gv_int |
burks tv_int |
LIKE
특징
- 이미 선언된 객체나 테이블 필드 참조
- 참조 객체가 변경되면 함께 변경
예시
DATA: lv_base TYPE c LENGTH 10.
DATA: lv_copy LIKE lv_base. " lv_base와 동일한 속성으로 선언
DATA: lv_carrid LIKE scarr-carrid. " SCARR 테이블의 필드를 참조
제한사항
- 글로벌 타입 직접 참조 불가능
- 참조 데이터 객체 필수
TYPE
특징
- ABAP Dictionary (글로벌 타입) or Local Type (TYPES로 선언) 참조 변수 선언
- 참조 타입과 독립적 작동
예시
DATA: lv_bukrs TYPE bukrs. " BUKRS는 Data Element
TYPES: ty_name TYPE c LENGTH 10.
DATA: lv_name TYPE ty_name. " 로컬 타입 참조
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
END OF ty_employee.
DATA: wa_employee TYPE ty_employee. " 구조 타입 참조
제한사항
- 기존 선언된 Data Object 참조 불가능
- Local Type을 사용할 때 Local Type을 따로 선언해야 함!
결론
Spring Boot로 백엔드 개발을 준비하다 ABAP로 넘어오니 생소한 개념이 있다.
이를 확실하게 이해하고 넘어가야 앞으로 배울 다른 개념도 쉽게 이해하고 사용할 수 있을 것이기 때문에
앞으로 하나씩 확실하게 이해해봐야겠다!!!
참조
https://abapta0903.tistory.com/105
'ABAP' 카테고리의 다른 글
[ABAP] Do_sum & Hotpspot (0) | 2025.04.12 |
---|
개요
SYNC 아카데미 수업을 들으면서 ABAP Program에서 Data Object 선언 시 사용하는 TYPE과 LIKE에 대해 배웠다.
TYPE과 LIKE의 차이에 대해서 JAVA와 다른 생소한 부분이기 때문에 확실히 정리해야겠다.
TYPE과 LIKE는 간단하게 비교하면 Data Object와 Data Type중 어느 것을 참조하는가 이다.
Data Object vs Data Type
특징 | Data Object | Data Type |
정의 | 실제 데이터 저장 변수 내부 테이블, 상수 등 |
데이터 속성 정의를 위한 설계도 |
역할 | 데이터 저장 or 처리 | 데이터 구조(타입, 길이, 소수점 등) 정의 |
메모리 사용 | 프로그램 실행 시 메모리 할당 | 메모리 사용x (데이터 구조만 정의) |
예제 | DATA gv_int TYPE i LENGHT 10 | TYPE tv_int TYPE i LENGHT 10 |
사용 위치 | 실제 프로그램에서 데이터 저장 or 처리 | 변수 선언, 구조 설계 or 인터페이스 정의 |
생성 시점 | 프로그램 실행 시 메모리 | 컴파일 시 정의만 존재 |
즉, 간단하게 말하면 실제로 Data를 가질 수 있는가 없는가로 갈린다.
데이터를 가질 수 없다면 메모리를 할당할 필요가 없기 때문이다.
LIKE vs TYPE
주요 차이점
특징 | LIKE | TYPE |
참조 대상 | 이미 선언된 데이터 객체(변수, 필드 등) | ABAP Dictionary의 데이터 요소, 구조 or 로컬 타입(Data Type) |
의존성 | 참조된 데이터 객체 | 참조된 데이터 타입과 독립적 |
사용 목적 | 기존 변수 or 필드와 동일 속성 유지 | 독립적, 명시적 타입 정의 |
사용 가능 대상 | 프로그램 내 선언된 변수, 필드 등 | ABAP Dictionary의 글로벌 타입, Local Type |
주요 사용 상황 | 테이블 필드 or 기존 변수 속성 | Global Type or Local Type 참 |
예제 | scarr-carrid gv_int |
burks tv_int |
LIKE
특징
- 이미 선언된 객체나 테이블 필드 참조
- 참조 객체가 변경되면 함께 변경
예시
DATA: lv_base TYPE c LENGTH 10.
DATA: lv_copy LIKE lv_base. " lv_base와 동일한 속성으로 선언
DATA: lv_carrid LIKE scarr-carrid. " SCARR 테이블의 필드를 참조
제한사항
- 글로벌 타입 직접 참조 불가능
- 참조 데이터 객체 필수
TYPE
특징
- ABAP Dictionary (글로벌 타입) or Local Type (TYPES로 선언) 참조 변수 선언
- 참조 타입과 독립적 작동
예시
DATA: lv_bukrs TYPE bukrs. " BUKRS는 Data Element
TYPES: ty_name TYPE c LENGTH 10.
DATA: lv_name TYPE ty_name. " 로컬 타입 참조
TYPES: BEGIN OF ty_employee,
id TYPE i,
name TYPE string,
END OF ty_employee.
DATA: wa_employee TYPE ty_employee. " 구조 타입 참조
제한사항
- 기존 선언된 Data Object 참조 불가능
- Local Type을 사용할 때 Local Type을 따로 선언해야 함!
결론
Spring Boot로 백엔드 개발을 준비하다 ABAP로 넘어오니 생소한 개념이 있다.
이를 확실하게 이해하고 넘어가야 앞으로 배울 다른 개념도 쉽게 이해하고 사용할 수 있을 것이기 때문에
앞으로 하나씩 확실하게 이해해봐야겠다!!!
참조
https://abapta0903.tistory.com/105
'ABAP' 카테고리의 다른 글
[ABAP] Do_sum & Hotpspot (0) | 2025.04.12 |
---|