ABAP 개발을 하다보니, Internal Table을 선언하는 문법(구문, 방식)을 다양하게 접하며 헷갈리기 시작했다.
그래서 크게 2가지의 경우로 정리해보았다.
- 실제 DB 기반 Internal Table 선언
- 개발자가 필요한 컬럼들로 구성한 Internal Table 선언
먼저 Internal Table의 기본 정의와 종류에 대해서 설명한 후 선언 방식을 정리하였다.
- Internal Table 이란?
DB의 데이터에 접근 및 조작할 때, Local 메모리 영역에 담아두어 사용하는 것
매번 DB에 직접적으로 접근하지 않아도 되어 부하를 줄일 수 있다.
- Internal Table 종류
- Standard Table
: 순차적으로 Index를 가지는 테이블로 Index로 조작할 수 있다.
Key는 항상 non-unique - Sorted Table
: Key로 자동 정렬되며 Index와 Key로 조작할 수 있다.
Key에 WITH UNIQUE 사용 가능
SORT 명령어 사용 불가능
INSERT는 사용 가능하나 APPEND는 불가능 - Hashed Table
: Index가 없어서 READ TABLE ~ INDEX 구문 사용 불가능
Hash로 계산된 Key값으로 조회할 수 있어, READ TABLE ~ WITH [TABLE] KEY 구문 사용 가능
반드시 Unique하게 선언되어야 한다.
- 실제 DB 기반 Internal Table 선언
#1 (internal) LIKE TABLE OF (DB) WITH HEADER LINE. |
#2 (internal) LIKE (DB) OCCURS 0 WITH HEADER LINE. |
- LIKE TABLE OF 과 OCCURS 0 동시 사용 불가능
: OCCURS 0 -> 메모리 제한을 두지 않겠다는 것(무한대) - WITH HEADER LINE
: Header(Work Area)를 생성할 때 사용하며, 대부분 사용하는 것이 더 편하다.
# WITH HEADER LINE 사용하는 경우(가공 필요X)
LOOP AT (internal) ~ ENDLOOP.
# LOOP를 돌면서 Header가 자동으로 올라와서 반복문 바로 수행
# WITH HEADER LINE 사용하지 않는 경우(가공 필요O)
LOOP AT (internal) INTO (struct) ~ ENDLOOP.
# LOOP를 돌면서 한 line씩 structure에 넣어서 반복문 수행
- 개발자가 필요한 컬럼들로 구성한 Internal Table 선언
#1 DATA : BEGIN OF (struct), (val1) LIKE (table1-val1), (val2) LIKE (table2-val2), ENDOF (struct), (internal) LIKE TABLE OF (struct) [WITH HEADER LINE]. |
#2 DATA : BEGIN OF (struct), (val1) LIKE (table1-val1), (val2) LIKE (table2-val2), ENDOF (struct), (internal) LIKE (struct) OCCURS 0 [WITH HEADER LINE]. |
- #1, #2 : structure를 생성 후 위의 <실제 DB 기반 Internal Table 선언>과 같이 internal table 선언
#3 DATA : BEGIN OF (internal) OCCURS 0, (val1) LIKE (table1-val1), (val2) LIKE (table2-val2), ENDOF (internal), |
- structure와 internal table 구분하지 않고 선언하는 방식으로, 테이블 구조 선언 부에 OCCURS 0 을 사용한다.
'SAP > ABAP' 카테고리의 다른 글
[ABAP] EVENT 구문 (0) | 2021.12.27 |
---|