1. INTERNAL TABLE 이란
- 프로그램 내에서 정의되어 사용되는 가상의 TABLE이다.
- HEADER LINE 없이 사용하는 것을 지향한다고 함.
2. INTERNAL TABLE에 들어가기 앞서 KEY에 대하여....
- 모든 INTERNAL TABLE은 ROW들을 구분 짓기 위하여 KEY가 필요하다.
- KEY의 종류
> WITH NON-UNIQUE KEY: KEY로 선언된 필드들의 값이 중복되어도 TABLE에 저장 가능
> WITH NON-UNIQUE DEFAULT KEY: KEY로 선언된 필드들의 값이 중복되어도 TABLE에 저장 가능
*DEFAULT KEY: CHARACTER TYPE을 가지는 모든 필드들을 묶어 키로 사용한다. STANDARD KEY라고 함.
> WITH UNIQUE KEY: KEY로 선언된 필드들의 값은 중복될 수 없음
- 위의 정의된 KEY를 제외하고 USER가 직접 KEY를 정의할 수 있다. USER DEFINE KEY라고도 한다.
예)
TYPES: BEGIN OF TEST,
C_1 TYPE C LENGTH 10,
C_2 TYPE C LENGTH 10,
C_3 TYPE I,
END OF TEST.
DATA: ITAB_01 TYPE TABLE OF TEST WITH KEY C_1.
3. INTERNAL TABLE의 종류
- STANDARD TABLE
> 순차적인 INDEX를 가짐
> INDEX를 사용하여 READ, MODIFY, DELETE 사용 가능
> KEY는 NON-UNIQUE로 선언
STANDARD TABLE 선언 및 사용 코드
TYPES: BEGIN OF EMPLOYEE,
SURNAME LIKE ZEMPLOYEES-SURNAME,
DOB LIKE ZEMPLOYEES-DOB,
END OF EMPLOYEE.
DATA: WA_EM TYPE EMPLOYEE,
ITAB01 TYPE TABLE OF EMPLOYEE WITH DEFAULT KEY.
*ITAB01 TYPE TABLE OF EMPLOYEE WITH KEY SURNAME.
* DEFAULT KEY 생략가능.
* INDEX와 KEY를 사용하여 데이터를 읽어서 WORK AREA에 넣는 방법.
* INDEX 사용
READ TABLE ITAB01 INTO WA_EM INDEX 1.
* KEY 사용
* WITH TABLE KEY는 TABLE에 정의된 KEY로 찾을 때 사용한다. BINARY SEARCH 불가능.
* BINARY SEARCH는 이진검색 알고리즘이며 PERFORMANCE 향상을 위해 사용하도록 하자.
READ TABLE ITAB01 INTO WA_EM WITH TABLE KEY SURNAME = 'HONGSIK'.
READ TABLE ITAB01 INTO WA_EM WITH KEY SURNAME = 'HONGSIK' BINARY SEARCH.
READ TABLE ITAB01 ASSIGNING FIELD-SYMBOL(<WA_EM>) WITH KEY SURNAME = 'HONGSIK'.
- SORTED TABLE
> KEY 필드 기준으로 정렬된 TABLE.
> WITH UNIQUE KEY 혹은 WITH NON-UNIQUE KEY 둘 다 사용 가능하며 반드시 둘 중 하나가 명시되어야 함
> BINARY SEARCH(이진검색 알고리즘)을 사용함
> TABLE에 새로운 데이터 입력 시 INSERT를 사용 (APPEND 사용 시 에러)
SORTED TABLE 선언 코드
DATA LT_SFLIGHT3 LIKE SORTED TABLE OF SFLIGHT WITH UNIQUE DEFAULT KEY.
DATA LT_SFLIGHT4 LIKE SORTED TABLE OF SFLIGHT WITH UNIQUE KEY CARRID CONNID.
DATA LT_SFLIGHT4 LIKE SORTED TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID CONNID.
- HASHED TABLE
> INDEX가 없으며, KEY로 정의된 필드의 값들의 HASH 값으로 탐색이 가능
> WITH UNIQUE 만 사용 가능하며 반드시 지정되어야 함
> KEY 값으로 데이터를 찾음
HASHED TABLE 선언 코드
DATA LT_SFLIGHT5 LIKE HASHED TABLE OF SFLIGHT WITH UNIQUE KEY CARRID.
DATA LT_SFLIGHT6 LIKE HASHED TABLE OF SFLIGHT WITH UNIQUE DEFAULT KEY.
4. TABLE 성능비교 표
구분 | STANDARD TABLE | SORTED TABLE | HASHED TABLE |
INDEX | O | O | X |
KEY | NON-UNIQUE | UNIQUE or NON-UNIQUE | UNIQUE |
ACCESS | INDEX 권장 | KEY 권장 | KEY만 사용 |
APPEND(순위) | 1 | 3 | 2 |
READ(순위) | 3 | 2 | 1 |
'SAP > ABAP 기초' 카테고리의 다른 글
(ABAP) REFRESH, CLEAR, FREE에 대하여 (0) | 2021.06.14 |
---|---|
(ABAP) INTERNAL TABLE 정리 - 2 (0) | 2021.06.14 |
(ABAP) Wildcard 사용하기 (0) | 2021.06.13 |
(ABAP) AT FIRST, AT NEW, AT END OF, AT LAST 정리 (0) | 2021.06.13 |
(ABAP) Data Type과 Data Object (0) | 2021.06.13 |