인터널 테이블 추가하는 방법:

  • insert
  • append
  • collect

1. TABLE KEY를 이용한 한 라인 추가 (WITH KEY)

 

  • SORTED TABLE 또는 HASHED TABLE일 것
  • WITH UNIQUE KEY로 선언되어 있어야 함
  • `INSERT line into table itab`

-> insert가 성공하면, 시스템 변수 sy-subrc에 0이 저장됨

 

2. 여러 라인을 한 번에 추가

INSERT lines OF itab1 FROM n1 To n2 INTO TABLE itab2.

 

- with non-unique key col1의 의미

: col1필드가 정렬 키는 되지만 중복된 값을 가질 수 있다는 의미

선언중복 허용 조건

선언  중복 허용 조건
WITH UNIQUE KEY col1 col1만 유일하면 나머지 필드는 중복 OK
WITH UNIQUE KEY col1 col2 col1, col2 조합이 유일해야 

 

 

LIKE STANDARD TABLE OF vs TYPE STANDARD TABLE OF

 

1.  TYPE STANDARD TABLE OF

TYPES: ty_fruit_tab TYPE STANDARD TABLE OF ty_fruit.
DATA:  gt_fruit TYPE ty_fruit_tab.

 

  • TYPES:는 **“타입을 정의”**하는 키워드
  • 여러 변수에 재사용 가능 (복잡한 구조도 정의 가능)
  • 유지보수에 좋음!
  • 📌 주로 모듈화, 재사용, 선언 분리할 때 사용

 

2. LIKE STANDARD TABLE OF

DATA: gt_copy LIKE STANDARD TABLE OF gt_fruit.
이미 선언된 변수나 구조체를 기준으로 데이터 선언할 때 
  • LIKE기존 변수(gt_fruit)의 구조를 참고해서 선언
  • 즉, 이미 선언된 gt_fruit을 기반으로 테이블을 하나 더 만듦
  • 📌 간편 복사, 임시 테이블 만들 때 사용

 

구분 목적 용도 예시
TYPE STANDARD TABLE OF 타입 정의용 (TYPES) 재사용 가능한 구조 만들기
LIKE STANDARD TABLE OF 기존 변수 구조 참조용 기존 내부 테이블 구조 복제

 

TYPES: BEGIN OF ty_fruit,
         name TYPE string,
         price TYPE i,
       END OF ty_fruit.

" ✅ 타입 정의
TYPES: ty_fruit_tab TYPE STANDARD TABLE OF ty_fruit.
DATA:  gt_fruit TYPE ty_fruit_tab.

" ✅ 기존 테이블 기반 새 테이블 만들기
DATA:  gt_copy LIKE STANDARD TABLE OF gt_fruit.

 

 

3. Index를 이용해 한 라인 추가

- index 구문을 이용하면 index 값 위치에 라인을 삽입할 수 있다.

- 이때는, Hashed TYPE의 인터널 테이블에는 사용이 불가하다.

- 성공 시, sy-subrc 변수는 0을, 그리고  sy-tablx변수는 index값을 반환함

INSERT line INTO itab [Index idx].

인덱스를 이용해 여러 라인도 추가할 수 있다.

INSERT lines OF itab1 INTO itab2 [Index idx].

 

4. 인터널 테이블 타입에 따른 INSERT

타입 효과
STANDARD TABLE - 데이터는 인터널 테이블의 마지막 위치에 추가된다.
- APPEND 구문과 같은 효과를 가진다.
SORTED TABLE - 데이터는 인터널 테이블의 순서에 따라 추가된다.
- NON-UNIQUE KEY타입이라면, Duplicate Line은 같은 Key위에 추가됨
HASHED TABLE 데이터는 Table Key의 Hash index순서에 따라 추가됨

 

 

- 각각의 테이블에 insert한 후 결과다.

+ Recent posts