✅ SAP에서의 Locking(잠금) 개념이란?

SAP 시스템은 동시에 여러 사용자가 동일한 데이터를 접근할 수 있기 때문에,
데이터 무결성과 일관성을 지키기 위해 잠금(Lock)이 필요함!


🔒 1. 데이터 잠금의 종류

구분설명
구분 설명
Database Lock (DB Lock) DB 자체의 잠금 기능 (단일 SQL 단계에서만 사용됨)
SAP Lock (Logical Lock, ENQUEUE/DEQUEUE) SAP 자체적인 잠금 개념. 여러 화면/단계 걸친 트랜잭션에 사용됨

 


🔷 2. 왜 DB Lock만으로는 부족할까?

SAP에서는 한 건의 입력이 여러 화면(SCREEN) 을 통해 이루어짐! 예를 들어:

  1. 첫 화면: 이름, 주소
  2. 두 번째 화면: 직급, 부서
  3. 세 번째 화면: 급여, 통화

그런데 사용자가 2화면까지만 입력하고 취소하면?
→ 일부 데이터만 DB에 저장되어 불완전한 상태가 될 수 있음 ❌

그래서 SAP는 단순한 DB Lock 대신,
트랜잭션 전체를 묶어서 잠그는 SAP Lock(논리적 잠금) 을 사용한다.


🧩 3. SAP Lock의 특징


특징 설명
✔ SAP 자체 Lock 테이블에 저장 ENQUEUE라는 함수로 설정됨
✔ 트랜잭션이 끝날 때까지 잠금 유지 모든 화면이 완료되기 전까지 DB에 저장하지 않음
✔ 여러 테이블 잠금 가능 전제: 외래키(Foreign Key)로 테이블이 연결되어 있어야 함
✔ ABAP Dictionary에서 Lock Object 생성 개발자가 생성하고 사용하는 구조체 개념

 


🛠️ 4. SAP Lock Object 구성

  1. ABAP Dictionary(SE11)에서 Lock Object 생성
  2. Lock Object는 자동으로 2개의 Function Module 을 생성:
    • ENQUEUE_객체명: 잠금 설정
    • DEQUEUE_객체명: 잠금 해제
  3. 개발자가 ABAP 코드에서 이 함수들을 직접 호출

예시:

CALL FUNCTION 'ENQUEUE_EZEMPLOYEES2' EXPORTING employee_id = '10001'. 

" ... 작업 수행 후 

CALL FUNCTION 'DEQUEUE_EZEMPLOYEES2' EXPORTING employee_id = '10001'.
 

💡 핵심 요약

항목설명
🔐 SAP Lock이 필요한 이유 여러 사용자의 동시 접근으로부터 데이터 보호
🧱 DB Lock 한계 단일 단계만 처리 가능, 다중 화면/다단계엔 부적합
🧰 SAP Lock Object ABAP Dictionary에서 생성, Function Module 자동 생성
📦 잠금 저장 위치 중앙 Lock 테이블 에 기록됨
👨‍💻 개발자 역할 ENQUEUE / DEQUEUE 함수 직접 호출해서 잠금 설정 및 해제

+ Recent posts