INSERT명령어는 Internal Table에 데이터를 생성하는 명령어입니다. APPEND와 다른 점은 APPEND는 제일 마지막의 위치에 데이터를 생성하는 반면 INSERT명령어는 특정한 위치를 지정하여 그 위치에 데이터를 생성합니다.
■ 사용 형식
standard 와 sorted tables에서만 사용 가능합니다. Wa INTO를 사용하면 wa의 내용이 하나의 레코드로 생성됩니다. INITIAL LINE INTO를 사용하면 공백의 값을 가진 레코드가 하나 생성됩니다. 만약 [wa INTO | INITIAL LINE INTO] 을 생략하면 Header Line의 내용이 새로운 레코드로 추가됩니다. Loop문장에서 레코드를 하나 생성하면 다음 번의 Loop시에 영향을 미치게 됩니다.
모든 형태의 Table에 사용할 수 있습니다. itab이 Unique key를 가지는 테이블인 경우, 키가 중복이면 레코드는 추가되지 않습니다
테이블 형태일 때 자료가 추가되는 방법
STANDARD TABLE: : 테이블의 마지막에 레코드가 추가, APPEND와 동일한 결과
SORTED TABLE:: 테이블 내의 적절한 위치에 자료가 추가 테이블의 Key에 의해 결정
HASHED TABLE: 내부의 Hash정보에 의해 테이블 키에 따라 레코드가 위치
Internal table itab1의 내용을 itab2에 추가하게 됩니다. FROM, TO가 포함되면 idx1에서 idx2까지의 레코드를 idx3에서부터 추가하게 됩니다. 단 앞서의 설명과 동일하게 itab2는 Hashed나 any 형식의 Table은 안됩니다. 만약 Loop문장에서 idx3를 생략하면 현재 Loop line앞에 레코드가 추가됩니다.
여러 라인을 삽입 할수 있습니다. 단 itab1과 itab2 테이블은 같은 line type이어야 합니다.
REPORT z00test_26.
DATA : BEGIN OF gs_line,
col1 TYPE c ,
col2 TYPE i,
END OF gs_line.
DATA gt_itab1 LIKE STANDARD TABLE OF gs_line WITH NON-UNIQUE KEY col1.
DATA gt_itab2 LIKE SORTED TABLE OF gs_line WITH NON-UNIQUE KEY col1.
gs_line-col1 = 'C'.
gs_line-col2 = 1.
INSERT gs_line INTO TABLE gt_itab1.
gs_line-col1 = 'A'.
gs_line-col2 = 2.
INSERT gs_line INTO TABLE gt_itab1.
gs_line-col1 = 'B'.
gs_line-col2 = 3.
INSERT gs_line INTO TABLE gt_itab1.
gs_line-col1 = 'D'.
gs_line-col2 = 4.
INSERT gs_line INTO TABLE gt_itab1.
INSERT LINES OF gt_itab1 INTO TABLE gt_itab2.
LOOP AT gt_itab2 INTO gs_line.
WRITE : / gs_line-col1, gs_line-col2.
ENDLOOP.