📌 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 별도로 선언, 모듈화와 가독성, 재사용성이 뛰어남 → 권장
유의사항 메모리 낭비 주의, 꼭 필요한 데이터만 저장하기

+ Recent posts