INSERT vs MODIFY FROM TABLE — ABAP upsert 정답 #shorts #SAP #ABAP
Moderator
· 조회 3
ABAP에서 MODIFY FROM TABLE이란?
MODIFY dbtab FROM TABLE itab은 내부 테이블의 레코드를 DB에 한 번에 upsert(있으면 UPDATE, 없으면 INSERT)하는 ABAP SQL 구문입니다. INSERT나 UPDATE를 따로 쓸 때보다 코드도 짧고 성능도 뛰어납니다.
INSERT vs MODIFY — 코드 비교
* ❌ 기존 방식 — INSERT + UPDATE 분리
LOOP AT lt_data INTO ls_data.
SELECT SINGLE * FROM ztable
INTO @DATA(ls_exist) WHERE id = @ls_data-id.
IF sy-subrc = 0.
UPDATE ztable FROM @ls_data.
ELSE.
INSERT ztable FROM @ls_data.
ENDIF.
ENDLOOP.
* ✅ MODIFY FROM TABLE — 한 줄로 upsert
MODIFY ztable FROM TABLE lt_data.
MODIFY가 더 나은 이유
코드량 감소 — 존재 여부를 SELECT로 확인할 필요 없음. LOOP 없이 내부 테이블 통째로 처리합니다.
성능 향상 — Array operation으로 DB 왕복 횟수를 줄입니다. LOOP 방식 대비 대량 데이터에서 확연한 차이가 납니다.
트랜잭션 안전 — 단일 DB 작업으로 부분 실패 없이 전체가 성공하거나 실패합니다.
* 주의: PRIMARY KEY 기준으로 EXISTS 체크
* sy-subrc 은 MODIFY 성공 시 0
MODIFY ztable FROM TABLE lt_data.
IF sy-subrc <> 0.
ROLLBACK WORK.
ENDIF.
핵심 한 줄
INSERT + UPDATE 따로 쓰지 말고, MODIFY FROM TABLE로 한 번에 upsert 처리하세요.