SAP/ABAP 기초

(ABAP) INTERNAL TABLE 정리 - 1

haramang 2021. 6. 13. 12:27

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