-
[ABAP] Lock ObjectSAP/ABAP 2025. 3. 25. 11:13
Naming Convention
E_[Lock Obeject] : E_로 시작해야 합니다.
생성
SE11에서 Lock Object 생성 및 관리를 할 수 있으며, 생성 후에는 자동으로 ENQUEUE와 DEQUEUE 함수가 생성됩니다.
Lock을 걸을 Table 이름과 Mode를 설정 Lock을 걸을 단위를 선택, 모든 Key를 다 선택하면 1행씩 Lock을 걸 수 있습니다. Mode
- S Lock : Shared / Read Lock
읽는 도중 자료가 변경되는 것을 막기 위한 Lock. 실제로 S 모드 락이 걸린 경우 수정이 불가능합니다. - O Lock : Optimistic
O Mode로 여러 수정이 접근 가능 하지만 실제 수정될 수 있는 접근은 선착순 하나뿐입니다. - E Lock : Exclusive cumulative / Write Lock(Default Lock)
한 개의 Program에서 같은 Data에 대해 중복적으로 누적 Lock이 가능, 다른 Program에서는 접근 불가능하게 합니다. - X Lock : eXclusive noncumulative
동일한 프로그램에서도 같은 Data에 대해 중복 Lock이 불가능하게 합니다.
접근 가능한 Lock : 적용된 Lock
Code 안에서 Lock을 실행하고 해제하는 방법
1. ENQUEUE_<LOCK NAME> : Lock 활성화 함수
* ENQUEUE CALL FUNCTION 'ENQUEUE_ESTAD_LOCK' EXPORTING * MODE_SPFLI = 'E' mandt = p_mandt werks = p_werks matnr = p_matnr * X_CARRID = ' ' * X_CONNID = ' ' * _SCOPE = '2' * _WAIT = ' ' * _COLLECT = ' ' EXCEPTIONS foreign_lock = 1 system_failure = 2 OTHERS = 3. CASE sy-subrc. WHEN 0. sy-subrc = 1. "Lock 성공 WHEN 1. sy-subrc = 2. "다른 사람이 Lock을 잡음 WHEN OTHERS. sy-subrc = 3. "시스템 장애 ENDCASE.
- _WAIT : Lock 실패 시 기다렸다가 재시도(얼마나 기다릴지는 모름)
- COLLECT : 함수를 호출할 때마다 Lock을 잡는 것이 아닌, 함수를 여러 번 사용한 경우 FLUSH_ENQUEUE를 사용할 때, Lock을 한번에 수행하려고 함.
- X_<Parameter> : Initial 값을 무시하지 않고 조건에 넣음
- _SCOPE
- 1 : 1 0 → 유저가 Lock을 설정하고 UPD w/p에게 Unlock 권한을 념겨주지 않음.
- 2 : 0 1 → 유저가 Lock을 설정하고 UPD w/p에게 Lock과 Unlock 권한을 넘겨, DB update가 완료된 후 자동으로 Unlock을 진행함.
- 3 : 1 1 → 유저가 Lock을 하고 UPD w/p도 별도의 Lock과 Unlock을 진행. update 도중에 유저나 UPD w/p의 Lock이 해제되어도 안전하며, UPD 동작 이후에도 Lock을 해제하지 않고 다음 업무를 이어갈 수 있음.
2. DEQUEUE_<LOCK NAME> : Unlock 함수
* DEQUEUE CALL FUNCTION 'DEQUEUE_ESTAD_LOCK' EXPORTING * MODE_SPFLI = 'E' mandt = p_mandt werks = p_werks matnr = p_matnr * X_CARRID = ' ' * X_CONNID = ' ' * _SCOPE = '3' * _SYNCHRON = ' ' * _COLLECT = ' ' .
- Lock 해제
참고로 DEQUEUE를 하지 않으면, LUW(SAP에서의 작업 단위)가 끝나면 자동으로 LOCK이 해제 되며, Lock을 강제로 종료하고 싶은 경우에는 SM12에서 검색을 통해 실행중인 Lock을 찾고 해제할 수 있다. 이때, 다른 사람의 작업을 끊지않게 조심해야한다.
'SAP > ABAP' 카테고리의 다른 글
[ABAP] 인라인 데이터와 동적 검색의 충돌(with. Field-symbol) (0) 2025.03.26 [ABAP] 메일 보내기(by. naver) (1) 2025.03.25 [ABAP] Search Help 종류와 우선순위 (0) 2025.03.25 [ABAP] 나만의 Unit Type 만들기 (0) 2025.03.25 [ABAP] Element Domain 수정 시 에러 해결 (0) 2025.03.25 - S Lock : Shared / Read Lock