본문 바로가기
workflow/erp2

트랜잭션(Transaction)과 Commit

by 죄니안죄니 2026. 1. 20.

SAP에서 Commit에 대한 설명으로 옳은 것을 모두 고르시오

A. Commit은 화면 저장 버튼을 누르는 행위이다
B. Commit 이후에만 문서 번호가 확정된다
C. Commit 이전에는 데이터가 영구 저장되지 않는다
D. Commit은 일부 데이터만 확정할 수도 있다
더보기

정답: B, C

❌ A: 화면 저장 ≠ Commit
❌ D: 부분 Commit 불가

트랜잭션(Transaction)과 Commit

SAP에서 숫자가 ‘사건’으로 고정되는 정확한 순간

SAP를 쓰다 보면 이런 경험을 한 적이 있을 거다.

  • 화면에서는 처리가 된 것 같은데
  • 뒤로 가보니 아무 일도 없었던 것 같고
  • 에러가 나면 전부 사라져 있다

이때 사람들이 흔히 이렇게 말한다.

“SAP가 버그인가?”
“저장 버튼 눌렀는데요?”

하지만 이건 버그가 아니라
SAP가 아주 정확하게 일을 하고 있는 상태다.

트랜잭션(Transaction)과 Commit트랜잭션(Transaction)과 Commit트랜잭션(Transaction)과 Commit


1. SAP에서 말하는 트랜잭션은 뭘까

일반적으로 트랜잭션이라고 하면 이렇게 생각한다.

“DB에 INSERT / UPDATE 하는 한 번의 작업”

SAP에서는 다르다.
SAP 트랜잭션의 정확한 의미는 이거다.

“여러 단계의 작업을
하나의 사건으로 묶은 단위”

이 단위를 SAP에서는 보통
LUW(Logical Unit of Work) 라고 부른다.


2. LUW가 왜 중요한가

예를 들어 입고(GR)를 생각해 보자.

입고 한 번에 내부적으로 일어나는 일은:

  • 재고 수량 증가
  • 재고 금액 반영
  • 회계 전표 생성
  • 문서 흐름 연결

이 중 하나라도 실패하면 어떻게 해야 할까?

SAP의 대답은 명확하다.

“그럼 전부 없었던 일로 한다.”

그래서 SAP는:

  • 중간 성공 ❌
  • 부분 반영 ❌
  • 애매한 상태 ❌

를 허용하지 않는다.


3. Commit의 정확한 의미

Commit은 단순히 “저장” 버튼이 아니다.

SAP에서 Commit이란:

“이제 이 사건을
공식 기록으로 인정한다”

라는 선언이다.

Commit이 실행되는 순간:

  • 메모리/버퍼에 있던 변경 사항이
  • DB에 영구 반영되고
  • 전표 번호가 확정되고
  • 문서가 생성된다

Commit 전까지는
아무 일도 일어나지 않은 상태다.


4. 그래서 중간에 에러 나면 전부 사라진다

이게 많은 사람들이 당황하는 지점이다.

  • 화면에서 값 입력
  • 다음 화면까지 진행
  • 마지막 단계에서 에러 발생

→ 다시 들어가 보면 아무 것도 없다

이건 SAP가 잔인해서가 아니다.

Commit이 없었기 때문이다.

SAP는 이렇게 말한다.

“끝까지 성공하지 못한 사건은
사건으로 인정하지 않는다.”


5. Rollback은 실패가 아니다

Rollback이라는 말 때문에
사람들이 실패처럼 느끼지만, SAP에서는 다르다.

Rollback은:

“사건으로 인정하지 않기로 한 결정”

이다.

  • 데이터 무결성 유지
  • 회계 정합성 유지
  • 감사 추적 가능성 유지

를 위한 정상적인 선택이다.


6. 왜 SAP는 이렇게까지 엄격할까

여기서 다시 SAP의 철학으로 돌아온다.

**SAP**는
이걸 절대 허용하지 않는다.

  • 재고는 늘었는데 회계는 안 늘어난 상태
  • 전표는 생겼는데 수량은 안 맞는 상태
  • 숫자는 바뀌었는데 이유가 없는 상태

그래서 SAP는 차라리:

“아예 안 만들고 말지”

를 선택한다.


7. 실무에서 이 개념이 터지는 대표적인 순간들

🔹 입고 처리 중 에러

  • 마지막 단계에서 실패 → 입고 없음
  • “아까 했는데요?” → Commit 없음

🔹 배치 프로그램

  • 중간 에러 발생 → 전체 Rollback
  • 일부만 들어간 데이터 ❌

🔹 인터페이스(IF)

  • 성공 응답 전에 Commit 안 되면
    → 외부 시스템 기준 실패

8. 개발자 관점에서 꼭 바뀌어야 할 사고

웹 개발자 출신이 가장 많이 하는 착각이 이거다.

“이 정도는 먼저 반영해도 되지 않나?”

SAP에서는 절대 아니다.

SAP 개발의 기본 원칙은 이거다.

Commit은
‘다 끝났을 때 한 번만’

그래서:

  • 중간 Commit ❌
  • 부분 Commit ❌
  • 화면 이동 시 자동 Commit ❌

이런 걸 굉장히 경계한다.


9. 시험에서 이걸 어떻게 묻느냐

SAP 시험에서는 이렇게 묻는다.

“Commit이 발생하는 시점의 의미로 가장 적절한 것은?”

정답 방향은 항상 이쪽이다.

  • 데이터 영구 반영
  • 사건의 공식 확정
  • 트랜잭션 종료

오답 패턴:

  • 화면 저장
  • 임시 반영
  • 중간 상태 유지

👉 Commit = 사건 인정


🔑 이 글의 핵심 문장

이 파트에서 반드시 가져가야 할 문장은 이거다.

SAP에서 Commit이 없으면
아무 일도 일어나지 않은 것이다.

그래서 SAP는:

  • 느려 보이고
  • 까다로워 보이고
  • 중간 결과를 안 보여준다

하지만 그 대가로
숫자가 거짓말하지 않는다.


다음 글 예고

이제 이 질문으로 자연스럽게 이어진다.

“그럼 SAP는
이 사건들을 왜 전부 ‘문서(Document)’로 남길까?”

다음 글

SAP에서 ‘문서(Document)’란 무엇인가
– 데이터와 기록을 가르는 결정적 기준

여기서:

  • 문서 번호
  • 전표
  • 수정 불가 원칙

이 전부가 하나로 정리된다.

댓글