Professional Documents
Culture Documents
Lock Object
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.
Đây là những dòng lệnh TRONG 2 FUNCTION MODULE được bắt đầu bởi hai từ khoá ENQUEUE
và DEQUEUE
Để 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