ITPub博客

首页 > 应用开发 > IT综合 > ABAP對記錄進行加鎖及解鎖

ABAP對記錄進行加鎖及解鎖

原创 IT综合 作者:tolyhuang 时间:2007-12-06 15:00:19 0 删除 编辑
具體操作步驟:[@more@]

1. 使用TCODE: SE11,選擇最後一項[加鎖物件],輸入物件名稱(注意一定要以字母‘E’開頭,這是SAP內部規定的,如EZTESTING)

2. 輸入名稱後,按新增,進入界面後輸入要加鎖的Table名,及加鎖類型(E:專用,累計;S:共享;X:專用,不累計)。保存後,系統會自動產生兩個函數: ENQUEUE_EZTESTING(加鎖)和 DEQUEUE_EZTESTING(解鎖)。

3.然後在更改記錄前調用加鎖函數對記錄進行鎖定,在修改完成或退出修改後一定要對記錄進行解鎖。


 具體加鎖及解鎖的使用可參考以下代碼:(Table:ZTESTING,key: fieldKey)

加鎖:
form lock_record using p_key.
data: it_seqg3 type seqg3 occurs 01 with header line.
data: gname like seqg3-gname, garg like seqg3-garg.
data: begin of %ZTESTING,
mandt type ZTESTING-mandt,
fieldkey type ZTESTING-fieldkey,
end of %ZTESTING.

call 'C_ENQ_WILDCARD' id 'HEX0' field %ZTESTING.

move sy-mandt to: %ZTESTING-mandt.

if not p_key is initial.
move p_key to: %ZTESTING-fieldkey.
endif.

gname = 'ZTESTING'.
garg = %ZTESTING.

call function 'ENQUEUE_READ'
exporting
gclient = sy-mandt
gname = gname
garg = garg
tables
enq = it_seqg3.

if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

if it_seqg3 is not initial.
data:cmessage(100) type c.
concatenate p_key '正由' it_seqg3-guname '處理!' into cmessage.
condense cmessage.
message cmessage type 'E'.

else.

call function 'ENQUEUE_EZTESTING'
exporting
mode_ztesting = 'E'
mandt = sy-mandt
zfieldkey = p_key
x_zfieldkey = ' '
_scope = '2'
_wait = ' '
_collect = ' '
exceptions
foreign_lock = 1
system_failure = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

endif.
endform.

解鎖:
form unlock_record using p_key.
call function 'DEQUEUE_EZTESTING'
exporting
mode_ztesting = 'E'
mandt = sy-mandt
zfieldkey = p_key
x_zfieldkey = ' '
_scope = '3'
_synchron = ' '
_collect = ' '.

endform.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9437124/viewspace-989030/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ABAP字符串操作
请登录后发表评论 登录
全部评论

注册时间:2010-07-22

  • 博文量
    268
  • 访问量
    1410802