SAP LUW와 COMMIT WORK 이해하기: 데이터베이스 LUW, 업데이트 태스크, RAP
3줄 요약
데이터베이스 LUW 는 DB 가 보장하는 한 번의 커밋 단위이고, SAP LUW 는 여러 작업 프로세스와 화면에 걸친 하나의 논리적 트랜잭션이에요. 데이터 일관성을 위해 DB 변경을 마지막에 한 번에 모아 반영해요.
모으는 기법은 업데이트 함수 모듈(
CALL FUNCTION ... IN UPDATE TASK), 서브루틴(PERFORM ... ON COMMIT, 폐기 예정) 등이 있고,COMMIT WORK [AND WAIT]이나ROLLBACK WORK로 끝나요.ABAP Cloud 에서는 위 기법이 없고 RAP 의
COMMIT ENTITIES가 저장 순서를 일으켜요.
어떤 상황에서 쓰나요
"왜 COMMIT WORK 를 한 곳에서만 해야 하나?", "화면 한 단계마다 DB 에 저장되면 안 되는 이유가?"처럼 트랜잭션 처리에 대해 설명해야 할 때 개념 정리가 필요해요. 치트시트의 *SAP LUW* 편은 용어부터 코드 문장, ABAP Cloud 와 RAP 에서의 차이까지 요약해요.
핵심 내용
왜 필요한가. 계좌 A 에서 B 로 이체하는 예를 들어요. 한 작업 프로세스에서 A 의 금액을 줄이고 다른 프로세스에서 B 의 금액을 올리면, 중간에 오류가 났을 때 되돌리기 어려워요. 그래서 트랜잭션 도중에는 버퍼에 임시로 두고, 끝에서 한 번에 DB 에 반영해야 해요(모두 반영하거나 모두 취소하는 all-or-nothing).
용어
트랜잭션: 일관된 상태로 끝나야 하는 관련 작업의 연속.
LUW(Logical Unit of Work): 일관된 상태에서 일관된 상태로 넘어가는 구간으로, 최종 커밋 또는 롤백으로 끝나요. AS ABAP 에는 데이터베이스 LUW 와 SAP LUW 두 종류가 있어요.
데이터베이스 LUW: SAP 와 무관한 DB 의 일관성 장치로, 데이터베이스 커밋으로 끝나요.
암묵적 데이터베이스 커밋: 대화 단계(dialog step)가 끝나 작업 프로세스가 바뀔 때, 동기/비동기 RFC 함수 호출, ICF 를 통한 HTTP/SMTP 통신, 작업 프로세스를 멈추는
WAIT, 일부 메시지 전송 등에서 일어나요.명시적 커밋: 네이티브 SQL,
COMMIT CONNECTION, 함수 모듈DB_COMMIT,COMMIT WORK. 롤백도ROLLBACK CONNECTION,DB_ROLLBACK,ROLLBACK WORK등이 있고 런타임 오류나 종료 메시지로 암묵적 롤백이 일어나요.작업 프로세스: 하나가 하나의 데이터베이스 LUW 만 실행하고 다른 프로세스의 LUW 에 간섭하지 않아요.
SAP LUW 와 모으기(bundling) 기법 — 서로 다른 작업 프로세스에서 등록한 작업을 하나의 작업 프로세스에서 한 번에 실행해요.
업데이트 함수 모듈:
update module속성이 있고 보통 DB 변경 문장이 들어 있어요.CALL FUNCTION 'ZSOME_UPDATE_FU_MOD' IN UPDATE TASK EXPORTING ...로 등록해 두고 실제 실행은COMMIT WORK가 일으켜요.
- 동기 업데이트: COMMIT WORK AND WAIT. 호출 프로그램이 업데이트가 끝나길 기다려요. - 비동기 업데이트: COMMIT WORK. 기다리지 않아요. - 로컬 업데이트: 별도 업데이트 작업 프로세스 대신 현재 작업 프로세스의 별도 내부 세션에서 즉시 실행해요.
서브루틴(
PERFORM ... ON COMMIT,ON ROLLBACK): 폐기 예정이라고 치트시트가 분명히 밝혀요. 매개변수 인터페이스가 없어서 ABAP 메모리 같은 외부 수단으로 데이터를 넘겨야 해요.
CALL FUNCTION 'ZSOME_UPDATE_FU_MOD' IN UPDATE TASK
EXPORTING values = st_a.
COMMIT WORK AND WAIT. " 동기 업데이트끝내는 문장
COMMIT WORK [AND WAIT]: 현재 SAP LUW 를 닫고 새로 열어요. 등록된 업데이트 함수 모듈을 처리하고, 열린 모든 DB 연결에서 커밋하며 현재 DB LUW 를 끝내요.ROLLBACK WORK: 현재 SAP LUW 를 닫고 등록된 것들을 모두 지우며, 열린 모든 연결에서 롤백해요.
ABAP Cloud 와 RAP
클라우드용 ABAP 에는 위 기법이 없고, 로컬 업데이트가 기본이에요. 그래서
COMMIT WORK와COMMIT WORK AND WAIT의 차이가 의미 없고 둘이 같게 동작해요.RAP 는 SAP LUW 의 규칙을 따라요. 일관된 데이터를 RAP 늦은 저장 단계에서 트랜잭션 버퍼에서 DB 로 반영해요. EML 의
COMMIT ENTITIES는COMMIT WORK를 암묵적으로 일으키고ROLLBACK ENTITIES는 버퍼를 비우고ROLLBACK WORK를 일으켜요(RAP 연재 2회).RAP 트랜잭션의 단계(상호작용 단계, 이른 저장, 되돌릴 수 없는 지점, 늦은 저장)는 아래 그림과 같아요. DB 변경은 늦은 저장 단계에서만 일어나요.
통제된 SAP LUW(controlled SAP LUW): 트랜잭션 계약 위반을 감지해서 런타임 오류나 로그로 알려 주는 확장이에요. 주요 단계는 *modify* 와 *save* 두 개이고, RAP 에서는 암묵적으로 켜져요.
주의할 점
이 편은 클래식 ABAP 중심이라 업데이트 함수 모듈, 서브루틴, 딘프로 같은 문장은 클라우드용 ABAP 에서는 쓸 수 없어요. 내 환경에서 되는 구문인지 확인하세요.
서브루틴 기법은 폐기 예정이고, 업데이트 함수 모듈은 기존 코드 이해용 지식에 가까워요. 새 개발은 RAP 같은 새 프로그래밍 모델을 쓰는 것이 방향이라고 읽을 수 있어요(이 문장은 치트시트의 구성을 바탕으로 한 제 해석이에요).
저는 실제 시스템에서 업데이트 태스크를 실행해 보지 않았어요.
치트시트는 계속 갱신되는 문서예요. 이 편의 첫 공개는 2023년 8월이고, 제가 읽은 판은 2026년 10월 기준이에요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/17_SAP_LUW.md
출처와 이용 안내
원문: ABAP Cheat Sheets - SAP LUW · 작성자 SAP SE and contributors SAP-samples · 작성일 2023-08-25 · 기준 릴리스에 따라 다름 클래식 ABAP 중심, 일부는 클라우드 ABAP · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기