[ABAP] OPEN SQL 데이터 변경 - INSERT, MODIFY
16 Mar 2022 -
1 minute read
🌝 OPEN SQL : 데이터 변경 - INSERT
🌜 Single line
-
테이블에 하나의 line을 삽입하기 위한 문장
-
INSERT INTO <target> VALUES <wa>. INSERT <target> FROM <wa>. INSERT <dbtab>.
-
<wa>
는 테이블과 같은 구조로 선언되어야 함 -
INSERT <dbtab>
구문을 쓰기 위해서는TABLES : <dbtab>
이 선언되어야 함 -
위 두 내용은 UPDATE, DELETE, MODIFY에도 동일하게 적용
-
🌜 Several line
-
인터널 테이블의 모든 값을 테이블에 한 번에 삽입
-
같은 KEY 값을 INSERT 하면 dump error가 발생하기 때문에, 이를 방지하기 위해
ACCEPTING DUPLICATE KEYS
구문 사용 -
INSERT 구문 실패 시 SY-SUBRC 값 4 반환
-
ex)
REPORT ZTEST. DATA : gt_spfli TYPE TABLE OF spfli, gs_spfli TYPE spfli. gs_spfli-carrid = 'KO'. gs_spfli-connid = '0001'. gs_spfli-cityfrom = 'SEOUL'. gs_spfli-cityto = 'PARIS'. APPEND gs_spfli TO gt_spfli. gs_spfli-carrid = 'KO'. gs_spfli-connid = '0002'. gs_spfli-cityfrom = 'SEOUL'. gs_spfli-cityto = 'NICE'. APPEND gs_spfli TO gt_spfli. INSERT spfli FROM TABLE gt_spfli ACCEPTING DUPLICATE KEYS.
-
💡
APPEND
보다는INSERT INTO TABLE
을 사용하자!-
APPEND
-
인터널 테이블의 마지막 위치에 추가
-
Index만 이용해 추가하기 때문에 Hashed Type에서는 사용 불가
-
-
INSERT INTO
-
Standard Table, Sorted Table, Hashed Table에서 모두 사용 가능
-
Key와 Index를 이용해 원하는 위치에 추가 가능
-
-
🌝 OPEN SQL : 데이터 변경 - MODIFY
-
MODIFY는 UPDATE와 INSERT를 합한 기능을 수행
-
-
킷값을 가지는 데이터가 테이블에 존재한다면 UPDATE
-
존재하지 않는다면 INSERT
-
-
ex)
REPORT ZTEST. DATA : gt_spfli TYPE TABLE OF spfli, gs_spfli TYPE spfli. * spfli 테이블의 킷값은 carrid, connid gs_spfli-carrid = 'KO'. gs_spfli-connid = '0001'. gs_spfli-cityfrom = 'KOREA'. MODIFY spfli FROM gs_spfli. gs_spfli-carrid = 'KO'. gs_spfli-connid = '0001'. gs_spfli-cityfrom = 'SEOUL'. APPEND gs_spfli TO gt_spfli. gs_spfli-carrid = 'KO'. gs_spfli-connid = '0003'. gs_spfli-cityfrom = 'BUSAN'. APPEND gs_spfli TO gt_spfli. MODIFY spfli FROM gt_spfli.