ABAP Dictionary를 이해하기 전에...
이 정리표는 사용자 Interface화면을 기준으로 작성되었기 때문에 그냥 읽기보다는 실제 화면을 펼쳐놓고 읽으시면 도움이 됩니다
Database Object : ABAP Dictionary의 5개의 큰 분류중 4번째 Lock Object, 말그대로 Table에 Lock을 설정하는 것입니다.
개념을 만든배경(역시 추정입니다..)
Oracle로 프로그램을 개발하다 보면(ABAP이 아니어도) 테이블을 잠가야 하는 경우가 발생할 수 있습니다.
잠그는 목적은 여러가지 있을수 있겠지만, 데이타의 일관성 유지가 가장 큰 목적일 것입니다
암튼, DB지식이 전무한 저로서는 Oracle의 Table의 Lock거는 방법을 모르겠더군요. 지금도 그러한 방법이 있는지 잘은 모릅니다.
어째거나, 그때 이를 해결하고자 했던 방법중에 하나가 임시 버퍼같은 테이블을 만들어 잠김유무 정보를 거기에 기록하고
기록내용에 따라 프로그램을 열람을 제한하는 것이었습니다. ( 마치 지금설명하려는 Lock Object처럼)
그러나 여기에도 헛점은 있더군요.
POP시스템의 경우 데이타 INSERT양이 많은 관계로 임시 테이블의 기록하는 시간에도 치고 들어오는 데이타가 있더군요..
그래도 결론은 해결은 했습니다.
다시 본론으로 들어와서,
ABAP Dictionary를 이용하여 프로그램을 개발하는 ABAP개발자들도 아마 이와 유사한 경험을 했을것입니다.
물론 이를 해결하고자 SAP사는 해결안을 만들었을것이구요.
바로 이게 Lock Object의 배경이자 사용목적입니다.
제가, 추론하여 이렇게 장황하게 설명하는 목적은
단순히 기술을 말하기 보다, 그 배경과 목적을 듣고보면 내용에 대한 이해와 감이 보다 잘올수 있다는 개인적 사견때문임입니다
Lock Object의 특징
Lock을 설정했다고 해서 ABAP의 Open SQL을 통한 DATA컨트롤이 막히는 것이 아닙니다.
단지 공통된 Lock개념의 Flag를 통해 제어하는것 뿐이죠.
Naming Rule : E+TableName ex) EZQMBT0070
|
개체설명 |
Attribute[탭] 역시나 Lock개체를 가져다 사용할 필요있음
Tables[탭] Lock를 설정한 메인 테이블을 지정한다. Primary Table외래키로 연결된 테이블을 지정 (ERD를 참고하여 Lock의 범위확인필요) Lock Parameter[탭] [사용자가 임의 변경 가능] |
Lock Mode 의 종류 오직 한명의 사용자에 대해서만 접근이 가능하다 한번만 Lock을 요청할 수 있음,이외 모든 요청을 수용하지않음 |
자동생성 Function 설명 |
Lock Object가 생성되면 자동으로 Function이 만들어지 진다. 두개의 함수가 만들어진다. Initial Value X_CARRID X_CONNID X_FLDATE
Passing Lock Parameter _WAIT
Controlling Lock Parameter _COLLECT TYPE DDENQCOLL |
좌측은 ENQUEUE_ABC 의 [Import]탭의 파라메타 정보이다. sflight의 mandt[공통키]를 제외한 모든키를 설정한다 Dialog Step의 발생하는[Dialog WP ->Update WP] Lock요청과 해지를 바로수행할지 Lock Container | |
Function 사용 |
자동생성으로 만들어진[enqueue_abc,dequeue_abc] 를 호출한다.[함수동일] |
프로그램 코딩시 [패턴]버튼을 활용하여 함수의 호출. Lock의 상태를 확인하도록 한다 | |
기타함수 함수 |
DEQUEUE_ALL ENQUEUE_E_TABLE [Table 단위로 Lock을 설정하는 경우] [Table 단위로 unLock을 설정하는 경우]
|
프로그램에 걸려있는 모든 Lock을 제거한다. 내가 원하는 테이블 자체에 대해서 Lock을 설정한다. 내가 원하는 테이블 자체에 대해서 unLock을 설정한다. DB직접편집불가능(T-CODE : N, SE11) | |
ENQUEUE_READ [LOCK의 상태를 확인할 때 사용]
지금 변경하려는 Key값에 Lock이 설정되어 있는지를 먼저 확인후 갱신을 시행해야함. |
파라미터 설명 |
댓글 10
-
버미!
2011.12.21 07:57
-
재곤
2011.12.21 12:32
테이블 단위로 lock 이 걸린다면 해당 row 가 아닌 table 전체가 lock 이 걸리는건가요?
-
문바이
2011.12.22 08:12
윗 내용을 보시면 아시겠지만,
키값을 넘긴다는 이야기는 Row단위 관리할수 잇다는 이야기가 되겠죠.
그리고 기타함수 부분에 Table 단위로 Lock을 설정하는 함수도 넣어놨으니 Table단위도 가능하겠죠.
-
디카초올~
2012.01.05 12:32
감사합니다.
-
알음알음
2012.01.06 16:29
감사합니다. 많은 도움이 되었습니다. ^^
-
s0205
2012.02.14 15:23
우와 감사합니다.
-
zambia21
2012.04.05 14:17
감사합니다.^^
-
토도리
2012.05.10 09:38
감사합니다.
-
이수현
2013.08.01 11:33
감사합니다.
-
카프카
2015.08.12 08:07
감사합니다.^-^
잘 안쓰는 부분이지만 꼭 쓸때는 자료를 찾아봐야 하는 부분..수고하셨습니다.