구조체, 내부테이블 선언이 너무 헷갈린다.
정리해보자.
ABAP에서의 구조체_Structure
1. TYPE vs LIKE 차이
구분 | type | like |
기능 | 데이터 타입 참조 | 기존 필드(변수 or 테이블 필드)의 속성 참조 |
사용 대상 | 도메인 / 데이터 요소 / 구조 / 테이블 | 구체적인 변수 또는 테이블의 실제 필드 |
독립성 | 독립적인 선언 | 종속적 (참조하는 대상이 바뀌면 영향 받음) |
추천 용도 | 표준화된 구조나 도메인 기반 | 기존 필드를 그대로 따라야 할 때 |
예시 1 : TYPE 사용 (데이터 요소 기반)
TYPES: BEGIN OF ty_emp,
name TYPE zemployees-surname,
birth TYPE zemployees-dob,
END OF ty_emp.
- 데이터 요소를 직접 참조함
예시 2 : LIKE 사용 (테이블 필드 참조)
TYPES: BEGIN OF ty_emp,
name LIKE zemployees-surname,
birth LIKE zemployees-dob,
END OF ty_emp.
- zemployees 테이블 안의 필드속성(길이, 타입)을 그대로 따라감
이렇게 해도 조금 덜 이해가 가는 거 같다.
그래서 타입은 뭐고, like는 뭐란 말인가..🥲
Field Name | Type |
Length |
emp_id | CHAR | 6 |
name | CHAR | 20 |
age | INT | 3 |
예를 들어 zemployee라는 테이블이 위와 같이 있다고 쳐보자.
예제 1: TYPE 을 사용하는 경우
TYPES: BEGIN OF ty_emp_type,
emp_id TYPE char6,
name TYPE char20,
age TYPE i,
END OF ty_emp_type.
DATA: wa_emp TYPE ty_emp_type.
-TYPE으로 하면 직접 형식 명시가 가능하다.
-테이블이 없어도 구조는 동작한다.
- 독립적
예제 2: LIKE를 사용하는 경우
TABLES: zemployee.
TYPES: BEGIN OF ty_emp_like,
emp_id LIKE zemployee-emp_id,
name LIKE zemployee-name,
age LIKE zemployee-age,
END OF ty_emp_like.
DATA: wa_emp TYPE ty_emp_like.
- LIKE를 사용하면 테이블 필드를 그대로 참조한다.
- zemployee 테이블이 변경되면 구조도 자동 반영된다.
- 의존적
비교 | type | like |
참조 대상 | 형식(Type) | 실제 변수나 테이블 필드 |
독립성 | 독립적 | 의존적 |
유지보수 | 명시적, 명확 | 편하지만 위험 (의존성 큼) |
주의할 점 | 테이블 필드 변경 시 반영 안 됨 | 테이블 없으면 오류남 |
그니까 결론적으로
surname이 char10이라고 할 때,
TYPE zemployees-surname이라고 쓰는건 자동으로 길이와 타입을 가져오겠다는 의미다.
TYPE char10. " <- 이걸 몰라도 자동으로 따라오게 해주는 것
이거랑 그냥 똑같다고 보면됨
DATA: name1 TYPE char10. " 수동 지정
DATA: name2 TYPE zemployees-surname. " 참조 (추천)
WRITE: name1, name2.
즉, type으로하면 zemployees-surname을 참조하는 것이고,
zemployees-surname의 타입이 바뀌면 그대로 쓸 수 있으므로 편하기 때문에 쓰는 것
근데 여기서 또 궁금한 점이 생겼다.
zemployees타입이 변경되면 name1도 자동변경이 되는 것이라면, like처럼 똑같이 테이블 의존적인 것 아닌가?
항목 | TYPE | LIKE |
구조 참조 기준 | 데이터 타입 (Domain/Element 기준) | 필드 전체 (기술 속성까지) |
쓰임 | 보통 TYPES에서 많이 사용 | 보통 DATA 선언 시 많이 사용 |
유연성 | 더 유연함 (필드 속성 말고 타입 중심) | 더 엄격함 (정확히 같은 속성 사용) |
정답은 그렇다! 다.
그대신 TYPE은 데이터타입만 참조해오고, LIKE는 기술 속성까지 참조해온다.
'SAP' 카테고리의 다른 글
SAP ABAP INTERNAL TABLE에서 MODIFY쓰기 (0) | 2025.04.24 |
---|---|
SAP ABAP PACKAGE SIZE 5 & ULINE 출력 버퍼 (0) | 2025.04.24 |
SAP ABAP Programming for Beginners - 69 Internal Table 동작방식 (0) | 2025.04.24 |
SAP ABAP 코드 정리하기 - 구조체 정의, Internal Table (0) | 2025.04.24 |
SAP ABAP Selection screen Lines & underline & comments/ 프레임만들기 (0) | 2025.04.24 |