✅ SAP에서의 Locking(잠금) 개념이란?
SAP 시스템은 동시에 여러 사용자가 동일한 데이터를 접근할 수 있기 때문에,
데이터 무결성과 일관성을 지키기 위해 잠금(Lock)이 필요함!
🔒 1. 데이터 잠금의 종류
구분설명
구분 | 설명 |
Database Lock (DB Lock) | DB 자체의 잠금 기능 (단일 SQL 단계에서만 사용됨) |
SAP Lock (Logical Lock, ENQUEUE/DEQUEUE) | SAP 자체적인 잠금 개념. 여러 화면/단계 걸친 트랜잭션에 사용됨 |
🔷 2. 왜 DB Lock만으로는 부족할까?
SAP에서는 한 건의 입력이 여러 화면(SCREEN) 을 통해 이루어짐! 예를 들어:
- 첫 화면: 이름, 주소
- 두 번째 화면: 직급, 부서
- 세 번째 화면: 급여, 통화
그런데 사용자가 2화면까지만 입력하고 취소하면?
→ 일부 데이터만 DB에 저장되어 불완전한 상태가 될 수 있음 ❌
그래서 SAP는 단순한 DB Lock 대신,
트랜잭션 전체를 묶어서 잠그는 SAP Lock(논리적 잠금) 을 사용한다.
🧩 3. SAP Lock의 특징
특징 | 설명 |
✔ SAP 자체 Lock 테이블에 저장 | ENQUEUE라는 함수로 설정됨 |
✔ 트랜잭션이 끝날 때까지 잠금 유지 | 모든 화면이 완료되기 전까지 DB에 저장하지 않음 |
✔ 여러 테이블 잠금 가능 | 전제: 외래키(Foreign Key)로 테이블이 연결되어 있어야 함 |
✔ ABAP Dictionary에서 Lock Object 생성 | 개발자가 생성하고 사용하는 구조체 개념 |
🛠️ 4. SAP Lock Object 구성
- ABAP Dictionary(SE11)에서 Lock Object 생성
- Lock Object는 자동으로 2개의 Function Module 을 생성:
- ENQUEUE_객체명: 잠금 설정
- DEQUEUE_객체명: 잠금 해제
- 개발자가 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 함수 직접 호출해서 잠금 설정 및 해제 |
'SAP' 카테고리의 다른 글
SAP ABAP Programming for Beginners - 33 SQL Statements (0) | 2025.04.09 |
---|---|
SAPSAP ABAP Programming for Beginners - 32 OPEN SQL의 장점 (0) | 2025.04.09 |
SAP ABAP Programming for Beginners - 30 OPEN SQL (0) | 2025.04.09 |
SAP ABAP Programming for Beginners - 29 Include Structure (0) | 2025.04.09 |
SAP ABAP Programming for Beginners - 28 append structure (0) | 2025.04.06 |