SAP
sistemi, application server seviyesinde bir global kilit tablosu tutar. Bu
tablo kullanılarak yerel değişkenleri değiştiriken bu alanları kilitlemek
mümkün olur. Bir kaç ekran boyunca istnene alanları kilitli olarak
tutabilirsiniz. Ayrıca, Veritabanında henüz olmayan tabloları da local olarak
kilitleyebilirsiniz. Bu özelliği yeni tablo satırları eklerken kullanbilirsiniz.
Tablo
bağlantılı bir Kilit objesi active ttiğinizde otomatik olarak tabloya özgü bir
fonksiyon module yaratılır. Bu kilit modülü çağrıldığında, mantıksal kilitler
belitrilen tablo için setlenir.
Ancak,
birincil başka bir tablonun key anahtarına sahip bir tablo yarattığınızda, otomatik
olarak her bir tablo içinde kilit objesi yaratılır. Örneğin; SFLIGHTS (primary)
ve SBOOK (secondary) tablolarını içeren
bir kilit objesi FLIGHT’I kilitler.
Bir
kilit objesi yaratırken, herbir tablo için ayrı ayrı setlemek gerekir (E: Write
lock, S: Read lock, X: Extended write lock). Bu kilit mod fonksiyonları default seçilebileceği
gibi, tekrar tekrar da setlenebilir.
Kilit Modüllerinin Yaratılması
Bir
kilit objesi aktiveedildiğinde, system otomatik olarak tablodaki alanların set
edilmesi ve bırakılması (release) için birer fonksiyon modülü yaratır.
TVARVC
tablosu için kilit objesi 'ENQUEUE_ESVARVC'
- For setting locks.
'DEQUEUE_ESVARVC' - For releasing locks.
Kilit
Modüllerinin Çağrılması
Eğer system
kilit setlemede başarısız olursanız, ya giriş zaten kilitlenmiştir. (foreign_lock)veya
kilit yürütmede bir sorun(system_failure) vardır. Programın
sonunda, DEQUEUE fonksiyon modülü ile, kilit tablosundaki girişler silinir.
DEQUEUE
fonksiyonu herhangi bir exception üretmez. Çünkü kilitlenmeyen bir girişi release
ederseniz bir etki doğurmaz.
CALL FUNCTION 'ENQUEUE_ESVARVC'
EXPORTING
name = lv_w_name
type = lv_w_type
EXCEPTIONS
foreign_lock = 4
system_failure = 8.
IF sy-subrc = 0.
EXPORTING
name = lv_w_name
type = lv_w_type
EXCEPTIONS
foreign_lock = 4
system_failure = 8.
IF sy-subrc = 0.
tvarvc-sign = 'I'.
tvarvc-opti = 'EQ'.
tvarvc-low = lv_w_value1.
tvarvc-high = space.
tvarvc-opti = 'EQ'.
tvarvc-low = lv_w_value1.
tvarvc-high = space.
MODIFY tvarvc.
COMMIT WORK.
COMMIT WORK.
ENDIF
CALL FUNCTION 'DEQUEUE_ESVARVC'
EXPORTING
name = lv_w_name
type = lv_w_type.
ENDCASE.
Hiç yorum yok:
Yorum Gönder