APPEND와 INSERT 차이점

J._NA 개발일지·2025년 4월 7일

SAP ABAP 개발을 할 때, 인터널 테이블에 추가로 레코드를 입력하고 싶을 때, 어떤기능을
사용할까?

아마도, INSERT구문 또는 APPEND를 사용한다는 것을 알고 계실듯합니다.
실무에서INSERT냐, APPEND냐에 대해 고민한다면, "인터널테이블"이 INDEX TABLE형태로 선언이 되었는가, 아니면 NON INDEX TABLE인가에 따라 달라질 것으로 보입니다.

=> 무슨말일까

INSERT

  • 1건의 레코드 또는 N건의 레코드를 인터널 테이블이나 DB테이블에 삽입 할 수 있음.
  • INDEX를 사용하는 형태로 사용가능
    결과적으로, INDEX를 수동으로 명시를 해줘야 DUMP가 발생하지 않음.
  • INSERT GS_DATA INTO GT_DATA
    INSERT GS_DATA INTO GT_DATA INDEX 1 두개의 차이점
" INSERT GS_DATA INTO GT_DATA

GT_DATA = VALUE #( ( 'A' ) ( 'B' ) ).
GS_DATA = 'C'.
INSERT GS_DATA INTO GT_DATA.
" 결과: GT_DATA = ( 'A' 'B' 'C' )

"  INSERT GS_DATA INTO GT_DATA INDEX 1 OR N
GT_DATA = VALUE #( ( 'A' ) ( 'B' ) ).
GS_DATA = 'C'.
INSERT GS_DATA INTO GT_DATA INDEX 1.
" 결과: GT_DATA = ( 'C' 'A' 'B' )

INDEX는 내부 테이블의 "삽입 위치"를 지정하는 역할을 함
INDEX 1 → 제일 앞에 삽입 / INDEX n → n번째 위치에 삽입

INSERT 사용시 주의점

1. DB저장. Single line 
   -> DB테이블과 인터널 테이블의 FIELD 구조는 동일해야함
INSERT SFLIGHT FROM GS_LIST . COMMIT WORK.

2. DB에 값을 저장시, 중복키 값이 발생하면 덤프
INSERT SFLIGHT FROM TABLE GT_LIST.

3. DB저장. MULTI LINE
   -> INSERT시, KEY가 중복된 필드는 삽입하지 않고, 중복없는 KEY데이터만 삽입한다.
INSERT SFLIGHT FROM TABLE GT_LIST ACCEPTING DUPLICATE KEYS. COMMIT WORK.

중복키 값이존재할 경우 SY-SUBRC가 4로 발생한다는 특징을 갖고 있음.
DB테이블에 입력할때는 DB테이블에 명시된 KEY필드를 기준으로 인터널 테이블의 데이터를 중복체크할 것이다.

APPEND

  1. 1건또는 N건의 레코드를 인터널 테이블에 삽입할 수 있음.
  2. 무조건 인터널 테이블 맨 마지막 레코드 다음에 삽입한다는 특징을 갖고 잇음.
  3. INDEX를 사용하지 않는 삽입방식으로 SORTED TABLE 사용시 UNIQUE KEY라면 덤프가 발생.
1. 1건 삽입 할 때. APPEND <STRUCTURE> TO <INTERNAL TABLE>

GS_LIST-MANDT = SY-MANDT
GS_LIST-CARRID = 'Z123'
GS_LIST-CARRNAME = '에어프레미아'
GS_LIST-CURRCODE = 'EUR'
GS_LIST-URL = 'BLOG.NAVER.COM'

APPEND GS_LIST TO GT_LIST.

2. N건을 삽입할 떄.
APPEND LINES OF <인터널테이블1> FROM 1 TO 2 TO <인터널테이블2>

* 인터널 테이블 1~2행만 삽입.
APPEND LINES OF GT_LIST FROM 1 TO 2 TO GT_TAB.

INSERT, APPEND를 볼 때, ALV레포트 프로그램 개발 할때, 특히 DEEP STRUCTURE로 CELLTAB를 구성할 떄는 보통 INSERT를 사용하여 필드의 수정여부를 제어함.

profile
아밥 & 프론트엔드 개발자

0개의 댓글