You are on page 1of 3

1.

What is Lock object

Có 3 chương trình A,B,C access vào một số bảng trong Database (6 bảng)
Trong đó, chương trình A,B dùng chung bảng 1,2,3;
3 chương trình dùng chung bảng 3.
Để tránh việc data bị hỏng do nhiều người cố truy cập vào thì trong SAP chúng ta có khái niệm
Lock Object.

 Lock Object được tạo bởi Tcode SE11 và nó là một phần của DATA DICTIONARY, dùng để
đồng bộ hoá các công việc chủ yếu xoay quanh chỉnh sửa bảng.

Purpose
Truyền đạt tới người dùng hoặc chương trình khác rằng họ hiện đang truy cập vào một số data
hoặc đối tượng và để ngăn việc sửa đổi dữ liệu đó cùng một lúc.

TYPES:
Có 3 loại lock object phổ biến trước thời ABAP 750:
 Read/Shared Lock : KEY S => khi chúng ta muốn đọc dữ liệu thì dùng mode S, các user
khác sẽ đọc được nhưng không thể thao tác lên nó
 Write/Exclusive  /ɪkˈskluː.sɪv/: KEY E => dùng khoá này khi chúng ta muốn chỉnh sửa
dữ liệu mà không muốn người khác truy cập ( user sẽ không thể đọc và chỉnh sửa)
 Enhanced/Exclusive without Cumulating /ˈkjuː.mjʊ.leɪt/ : KEY X => tương tự như khoá
Write/exclusive nhưng nó không đếm số lần Lock
[ chỉ được lock bởi 1 người, nếu người khác vào lock nữa thì sẽ báo lỗi => không cho lock
chồng => ngược lại với lock E ] [có thể coi tình trạng, số lần lock trên tcode SM12]
2. Cách tạo một LOCK OBJECT
Step 1: Sử dụng Tcode SE11 (Data Dictionary)
⇒ chọn nút Lock Object
⇒ Nhập tên bắt đầu bằng EZ* or EY* và tạo một Lock Object mới
Step 2: Nhập Short Description
Step 3: ở field Table, chúng ta nhập tên và chọn lock mode
Step 4: Cuối cùng, chúng ta save và active Lock object đó
Để kiểm tra thì chúng ta có thể vào field Lock parameter để xem lại lock object chúng ta vừa tạo

 Result: sau khi tạo và active LOCK OBJECT xong, nhấn f7 thì ta có thể thấy 2 functions
module đã được tạo. Chúng được gọi là Lock Modules.

3. QUÁ TRÌNH TỰ ĐỘNG TẠO LOCK MODULES


Như mình đã giới thiệu về cách tạo Lock object ở trên thì sau khi tạo và active xong thì trong
chuơng trình sẽ tự xuất hiện 2 function module: một module bắt đầu với từ khoá ENQUEUE :
dùng để lock và module còn lại là DEQUEUE dùng để unlock.

Đây là những dòng lệnh TRONG 2 FUNCTION MODULE được bắt đầu bởi hai từ khoá ENQUEUE
và DEQUEUE

4. TỔNG QUAN LẠI VỀ CÁCH SỬ DỤNG LOCK OBJECT TRONG CHƯƠNG


TRÌNH

1. Dùng tcode SE38


Gọi function module bằng cách click vào pattern, điền tên function vào call function
Mình muốn lock nên mình dùng từ khoá ENQUEUE
2. Sau khi điền xong sẽ hiện ra những dòng code => uncomment những phần mà ta muốn
chỉnh sửa
Ở đây chúng ta sử dụng mode S ; nhập tham số Purchase Order là Parameter P_PUR;
scope 2
3. Dùng tcode SM12 để kiểm tra lock => chúng ta thấy dòng lock table với table name là
YTPHUONG_PURORDER

Để unlock thì thao tác tương tự LOCK => pattern => call funtion với từ khoá DEQUEUE
Uncomment để hiện ra những dòng lệnh mà chúng ta muốn thao tác:
- Chọn lock mode, nhập parameter, chọn scope

Dùng tcode SM12 để kiểm tra XEM LOCK THÀNH CÔNG hay chưa?

Q&A:
 Nếu 1 lock ob đã được lock thì khi nào nó tự động unlock?
Tuỳ theo scope trong dòng lệnh mà chúng ta thao tác , thông thường giá trị mặc định
của scope là 2
=> Scope = 1: gọi dequeue hoặc thoát chương trình thì mới unlock
=> Scope = 2: khi gọi commit work, rollback work và thoát chương trình thì unlock
=> Scope = 3 thì có cả 2 chức năng trên

You might also like