lock object 를 생성하고
enqueue_<lock object>
dequeue_<lock object> 펑션을 이용해서 lock을 걸고 푸는 거는 알겠습니다.
lock object 에 어떤 데이터가 잠겨 있는지(담겨있는지)
프로그램에서 알 수 있는 방법이 있는지 궁급합니다.
(어떤 프로그램에서 enqueue를 이용해서 테이블의 특정레코드를 잠겄으면
다른 프로그램에서 lock object에 어떤 레코드가 잠겼는지 여부를 알 수 있는 방법이 궁급합니다. )
답변주시면 큰 도움이 될거 같습니다. ^^
댓글 8
-
SAP폐인
2008.02.21 17:30
Transaction code : SM12 에서 확인하시면 됩니다 -
icarus
2008.02.21 17:34
만일 특정 유저에 의해 Lock이 걸려 있는데 이 유저의 Lock을 풀려면
SM04에서 해당 유저의 세션을 끊으시면 됩니다.
-
크리스~
2008.02.21 18:52
저는 SM12 사용합니다...
-
하이원
2008.02.21 19:08
답변 감사합니다.
t-code: sm12 말고 프로그램 안에서 확인 할 수 있는 방법은 없을까여?
예를 들면
데이터를 삭제 및 세부정보 화면에서 데이터를 수정 할 수 있는 A라는 CBO프로그램이 있을때
어떤 유저가 A프로그램에서 데이터를 세부정보 화면에서 수정중이고
다른 유저는 A프로그램에서 데이터를 삭제하려고 할때
수정할려는 데이터와 삭제할려는 데이터가 같은 데이터인지
삭제 전에 A프로그램에서 비교(캐치) 하고 싶습니다. -> 프로그램에서 수정중이면 삭제가 안돼게
이러기 위해서 프로그램에서 수정중일때 lock object에 수정중인 데이터를 담고
삭제하려고 할때는 프로그램에서 lock object를 확인해서
삭제할려는 데이터와 같은 데이터가 담겨있는지 확인을
해야 하는데 확인할수 있는 방법이 궁금합니다.
-
Mike
2008.02.21 19:57
SM12에서 확인 하는것은 맡읍니다.
하지만 대부분의 작업은 짧은 시간이라고 생각됩니다.
lock Object의 lock단위를 너무 크게 주시지는 않았는지 모르겠읍니다.
예를들어 CBO Order를 관린 한다면 Order#까지 Lock Object의
잠금 매개변수를 좀더 세분해서 주심이 어떨런지요.
-
SkyDream
2008.02.21 23:42
function 'ENQUEUE_READ'를 사용하시면 lock 걸린 object를 읽어 올 수 있습니다.
간단한 사용예입니다. parameter들은 optional이니 조정하시면 될듯합니다.
예시) client 700 에서 material 2005010002를 변경중일때 lock entry 읽기
CALL FUNCTION 'ENQUEUE_READ'
EXPORTING
GCLIENT = SY-MANDT
GNAME = 'MARA ' <---- lock을 건 테이블
GARG = '7002005010002' <---- lock 걸린 테이블의 key들을 concatenate 시킨 argument
GUNAME = SY-UNAME
LOCAL = ' '
IMPORTING
NUMBER =
SUBRC =
TABLES
enq = gt_enq <---- lock entry list
EXCEPTIONS
COMMUNICATION_FAILURE = 1
SYSTEM_FAILURE = 2
OTHERS = 3
참고로, lock table은 object lock이 걸린 상태에서 t-code SM12에서 확인하시면 됩니다. -
하이원
2008.02.22 02:04
답변 감사합니다 ^^ enqueue_read 함수를 호출해서 해결했습니다.
또 다른 방법이 완벽하다고는 할수 없지만 enqueue_<lock object> 함수를 호출 했을때
sy-subrc 를 보고 판단 할 수 도 있네여 ( 0 이 아니면 기존에 lock object에 담겨 있는 것이므로)
-
초보bsp/abap
2008.02.22 20:28
ENQUEUE_READ 를 사용하는게 낳을듯 하네요 (개인적인 생각에)