📌 Internal Table이란?
🔸 정의
Internal Table은 ABAP 프로그램 내에서 데이터를 일시적으로 저장하기 위한 메모리 내의 테이블.
➡ 프로그램이 실행 중일 때만 존재하며, 종료되면 사라짐.
🔸 왜 쓰는가?
- DB를 매번 조회하지 않고 한번 불러온 데이터를 반복 사용하기 위해
- 계산 결과, 조회 결과, 가공 데이터 등을 메모리에 저장해 빠르게 처리하기 위해
- 데이터를 반복 처리(loop) 하거나 조건 검색하기 쉽게 하기 위해
🧱 Internal Table의 구조
📎 두 가지 방식이 있음
✅ 구식 방식 (Header Line 포함) |
내부 테이블에 헤더 라인 포함 |
구형 프로그램에서 많이 사용됨 |
✅ 신식 방식 (Work Area 분리) |
테이블은 테이블대로, Work Area는 따로 |
권장 방식, 최신 방식 |
✍️ 사용 방식 비교
1. 구식 방식 (Header Line 사용)
DATA: it_employees TYPE STANDARD TABLE OF zemployees WITH HEADER LINE.
it_employees-ename = 'John'.
APPEND it_employees. " 헤더 라인의 데이터를 테이블에 추가
2. 신식 방식 (Separate Work Area 사용) ✅ 추천!
DATA: it_employees TYPE STANDARD TABLE OF zemployees,
wa_employee TYPE zemployees.
wa_employee-ename = 'John'.
APPEND wa_employee TO it_employees.
👉 신식 방식에서는 APPEND, READ, MODIFY 등 모두 work area를 통해 수행!
🔁 Internal Table은 어떻게 쓰이나?
- DB에서 SELECT한 데이터를 저장해서 반복 처리 (LOOP) 가능
- 조건 검색, 필터링, 정렬 등 다양한 내부 처리
- 결과 데이터를 모아서 출력하거나 다른 프로그램/모듈로 전달
🛠 내부적으로 사용하는 용어
Header Line |
테이블 자체에 포함된 1개의 레코드 공간 (구식 방식에서만 사용) |
Work Area |
테이블 구조와 동일한 개별 데이터 단위. 데이터를 담아서 처리함 (신식) |
Table Body |
내부 테이블에 저장된 전체 레코드 집합 |
📏 용량 제한 및 성능 팁
- SAP 내부 구조상 내부 테이블은 최대 약 2GB까지 허용
- 하지만 가능한 작게 유지하는 것이 성능상 좋음!
- 여러 프로그램이 큰 테이블을 사용하면 메모리 부족 또는 속도 저하 발생 가능
👉 시스템 운영자(BASIS 담당자)에게 혼날 수 있음 😅
✅ 요약 정리
내부 테이블 |
실행 중인 프로그램에서 데이터를 메모리에 저장하기 위한 구조 |
용도 |
DB 조회 결과 저장, 반복 처리, 계산 값 저장, 화면 출력 등 |
구식 방식 |
Header line 사용, 구버전 코드에서 자주 등장 |
신식 방식 |
Work area 별도로 선언, 모듈화와 가독성, 재사용성이 뛰어남 → 권장 |
유의사항 |
메모리 낭비 주의, 꼭 필요한 데이터만 저장하기 |