바로투입이력카드
SAP 게시판

정보·팁

SAP LUW와 COMMIT WORK 이해하기: 데이터베이스 LUW, 업데이트 태스크, RAP

에이든ABAP 개발자운영자모듈 MMSD기타수정됨조회 17

3줄 요약

  • 데이터베이스 LUW는 DB의 커밋 단위이고, SAP LUW는 여러 처리 단계를 하나의 업무 트랜잭션으로 묶는 단위예요.

  • 클래식 ABAP에서는 업데이트 태스크 등으로 변경을 모으고 COMMIT WORK 또는 ROLLBACK WORK로 마무리해요.

  • ABAP Cloud와 RAP은 지원하는 저장 방식이 달라요. RAP에서는 정해진 저장 절차에 따라 변경을 반영해요.

어떤 상황에서 쓰나요

송금처럼 여러 변경이 모두 성공하거나 모두 취소되어야 하는 작업이 있어요. 이번 글에서는 이런 작업을 묶는 SAP LUW와 데이터베이스 LUW의 차이를 알아봐요. COMMIT WORK·업데이트 태스크의 동작을 살펴본 뒤 RAP의 저장 과정과 비교해 볼게요.

하나의 업무로 묶인 변경은 일부만 반영되면 안 되는 경우가 있습니다. 아래 그림처럼 모두 반영하거나 모두 취소해야 하는 경계를 먼저 정하면 LUW의 의미를 이해하기 쉽습니다.

AI 설명 그림: 모두 반영하거나 모두 취소하기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.
AI 설명 그림: 모두 반영하거나 모두 취소하기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.

핵심 내용

왜 필요한가. 계좌 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 변경은 늦은 저장 단계에서만 일어나요.

RAP 트랜잭션 단계: 상호작용 단계, 이른 저장, 되돌릴 수 없는 지점, 늦은 저장 순서
RAP 트랜잭션 단계: 상호작용 단계, 이른 저장, 되돌릴 수 없는 지점, 늦은 저장 순서
  • 통제된 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

아직 댓글이 없어요.

정보·팁 목록전체 목록