ABAP 내부 테이블 ① 테이블 종류와 키: STANDARD, SORTED, HASHED
3줄 요약
내부 테이블의 성질은 줄 타입, 테이블 종류, 키 세 가지로 정해져요.
STANDARD는 순차 처리와 인덱스 접근,SORTED는 정렬된 채 키로 읽기,HASHED는 유일 키로만 읽는 큰 테이블에 맞아요.키를 빼먹으면 "표준 키"(문자형·바이트형 필드 전부)가 붙어서 정렬과 읽기가 뜻밖으로 동작할 수 있어요.
어떤 상황에서 쓰나요
내부 테이블은 ABAP 프로그램의 거의 모든 곳에 나오지만, TYPE TABLE OF ... 한 줄로만 선언해 온 사람이 많아요. 이 연재는 SAP 가 공개한 ABAP 치트시트의 *Internal Tables* 편을 읽고, 성질 → 읽기 → 수정·삭제·정렬 → 반복·그룹핑 순서로 풀어 정리해요. 첫 회는 선언할 때 정해지는 것들, 곧 종류와 키를 다뤄요.
핵심 내용
내부 테이블의 세 가지 성질. 줄 타입(각 줄이 어떻게 생겼는지, 대개 구조체), 테이블 종류(저장과 접근 방식), 테이블 키예요. 데이터 타입이 정해지면 메모리 사용량 말고는 모두 정적으로 결정돼요.
접근 방식은 두 가지예요. 인덱스(줄 번호)로 읽는 것이 가장 빠르고, 키로 읽는 것은 특정 칼럼 값을 찾아요. 키 칼럼이 아닌 칼럼으로도 찾을 수는 있지만 최적화되지 않아요.
세 종류
STANDARD: 기본 인덱스로 관리되고, 인덱스와 키로 접근할 수 있어요. 기본 키는 항상 중복을 허용해요(non-unique). 키가 필요 없으면WITH EMPTY KEY로 비울 수 있어요. 순차 처리나 인덱스 접근이 주된 용도에 맞아요. 치트시트는 표준 테이블에서 기본 키로 읽는 최적화는 되지 않는다는 점을 짚어요(최적화는 정렬/해시 키에서만).SORTED: 줄을 넣거나 지울 때마다 자동으로 정렬해서 관리해요. 키(유일 또는 중복 허용)와 인덱스로 최적화된 접근이 가능해요. 키로 주로 읽는데 유일 키를 정의할 수 없을 때 맞아요. 인덱스를 다시 맞추는 비용이 있어요.HASHED: 해시 알고리즘으로 관리하고, 항상 유일 키만 가능해요. 큰 테이블을 키로 읽는 용도에 맞고, 키 접근 시간이 줄 개수와 관계없이 일정해요. 관리 비용이 가장 커요.
기본 키(primary key)와 보조 키(secondary key)
모든 내부 테이블에는 기본 키가 있고, 이름은
primary_key로 정해져 있어요. 정렬/해시 테이블의 기본 키 필드는 읽기 전용이라서 바꾸려 하면 실행 중 오류가 나요.기본 키를 생략할 수 있는 것은 표준 테이블뿐이고, 그러면 *표준 키*가 붙어요. 줄 타입이 구조체이면 문자형·바이트형 필드 전부가 키가 되고, 구조체가 아니면 줄 전체(
table_line)가 키예요.표준 키를 신경 써야 하는 이유는 세 가지예요. 정렬 결과가 예상과 다를 수 있고, 키 필드가 많으면 키 접근 성능에 영향을 주고, 정렬/해시 테이블에서 의도치 않게 키 필드를 수정하면 실행 중 오류가 나요. 키를 명시하면 코드가 읽기 쉽고 실수도 막아요.
키가 필요 없는 표준 테이블은
EMPTY KEY로 분명히 밝혀요. 참고로SELECT ... INTO TABLE @DATA(itab)로 만든 인라인 테이블은 표준 테이블이고 키가 비어 있어요.보조 키는 모든 종류에 선택적으로 붙일 수 있고(정렬 키는 중복 허용/불허, 해시 키는 유일), 이름을 직접 붙여요. 보조 키로 접근할 때는
USING KEY나WITH ... KEY ... COMPONENTS로 이름을 명시해야 하고 자동 선택되지 않아요. 큰 테이블을 한 번 채우고 자주 읽거나, 표준 테이블에서 유일성을 보장할 때 써요. 대신 메모리와 갱신 비용이 늘어요. 유일 보조 키는 즉시 갱신되고, 중복 허용 보조 키는 그 키로 접근할 때에야 갱신돼요. 아주 작은 테이블이나 자주 바뀌는 테이블에는 맞지 않아요.
TYPES: BEGIN OF s_demo,
comp1 TYPE i,
comp2 TYPE i,
comp3 TYPE i,
END OF s_demo,
tt_sorted TYPE SORTED TABLE OF s_demo
WITH UNIQUE KEY comp1
WITH NON-UNIQUE SORTED KEY sk COMPONENTS comp2 comp3.주의할 점
보조 키와 표 형식 문법은 7.40 이상이 전제예요. 더 낮은 릴리스에서는 일부를 쓸 수 없어요. (7.40 기준은 원문에 적힌 것이 아니라 일반적으로 알려진 정보예요.)
치트시트는 문법 설명 자료이지 성능 권고서가 아니에요. 종류 선택의 성능 차이는 데이터 크기에 따라 달라지므로 실제로 재 보세요. Clean ABAP 연재 ③회에도 같은 주제가 나와요.
치트시트는 계속 갱신되는 문서예요. 첫 공개는 2022년이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/01_Internal_Tables.md
출처와 이용 안내
원문: ABAP Cheat Sheets - Internal Tables · 작성자 SAP SE and contributors SAP-samples · 작성일 2022-12-05 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준 · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기