메뉴 건너뛰기

SAP 한국 커뮤니티



ABAP [Dictionary] Lock Object

문바이 2011.12.20 10:41 조회 수 : 24847 추천:3

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[탭]
  RFC허용 : 외부에서 데이타를 갱신해야 하는경우

     역시나 Lock개체를 가져다 사용할 필요있음 

                                                               

Tables[탭]
   Primary Table :

     Lock를 설정한 메인 테이블을 지정한다.
   Secondary Tables :

     Primary Table외래키로 연결된 테이블을 지정
    연관테이블이되면 두 Lock이 자동으로 설정됨

    (ERD를 참고하여 Lock의 범위확인필요)

Lock Parameter[탭]
   Tables에 지정한 테이블 Key값들이 올라옴것이
   Lock으로 지정될 고유키값들을 설정한다.

   [사용자가 임의 변경 가능]

Lock Mode 의 종류
Exclusive lock :

  오직 한명의 사용자에 대해서만 접근이 가능하다
   하나이상의 동일한 Transaction내에서 Lock을 요청할수있음
Shared lock : 여러명의 사용자가 데이타를 읽을 수 있으나, 
   특정사용자에 의해서 변경이 시작되면 모두 잠긴다.
eXclusive but not cumulative lock : 작업 Transaction내에서 단

 한번만 Lock을 요청할 수 있음,이외 모든 요청을 수용하지않음

자동생성

Function

설명

Lock Object가 생성되면 자동으로

Function이 만들어지 진다.
  예를 들어 Lock Object명이 [ABC]인 경우.
  ENQUEUE_ABC , DEQUEUE_ABC 의

  두개의 함수가 만들어진다.

Initial Value

  X_CARRID 

  X_CONNID

  X_FLDATE

 

Passing Lock Parameter

  _WAIT

 

Controlling Lock Parameter

  _COLLECT TYPE DDENQCOLL

좌측은 ENQUEUE_ABC 의 [Import]탭의 파라메타 정보이다.
[실제 테이블 : sflight]
Inital Value 파라메타 :

   sflight의 mandt[공통키]를 제외한 모든키를 설정한다
Passing Lock 파라메타:

   Dialog Step의 발생하는[Dialog WP ->Update WP]
  Update WP Lock의 옵션을 지정하는 것이다.(bunding기술참고)
    값 [1] : Dialog WP의 트랙잰션 종료시 Lock도 종료됨
    값 [2] : Update WP가 Lock를 책임짐
    값 [3] : Dialgo WP,Update WP의상호통신을 통해Lock을 해지
Controlling Lock 파라메타 :

     Lock요청과 해지를 바로수행할지 Lock Container
    를 통해 수행할지를 결정한다.
    기본값 : Lock요청가 해지가 Lock서버에 바로 보내진다.
    [X] : Lock 요청과 해지가 먼저 Local Lock Container에 저장됨

Function

사용

자동생성으로 만들어진[enqueue_abc,dequeue_abc]

를 호출한다.[함수동일]

프로그램 코딩시 [패턴]버튼을 활용하여 함수의 호출.
  KEY값으로 설정된 데이타를 넘겨준다.
  T-CODE : SM12 를 통해서 코딩중간에 발생한

                   Lock의 상태를 확인하도록 한다

기타함수
PreDefined

함수

DEQUEUE_ALL

ENQUEUE_E_TABLE 

    [Table 단위로 Lock을 설정하는 경우]
DEQUEUE_E_TABLE

    [Table 단위로 unLock을 설정하는 경우]

 

 

프로그램에 걸려있는 모든 Lock을 제거한다.

내가 원하는 테이블 자체에 대해서 Lock을 설정한다.

내가 원하는 테이블 자체에 대해서 unLock을 설정한다.
 -> T-CODE : SM12에서 확인불가능
 -> Lock설정시 데이타브라우저에서

    DB직접편집불가능(T-CODE : N, SE11)

ENQUEUE_READ [LOCK의 상태를 확인할 때 사용]
결국 이 함수를 써먹기 위해 이부분을 공부한것이다.


Lock의 설정과 해제를 반복하는 상황에서
내가 속한 프로그램이 Update를 하기전

지금 변경하려는 Key값에 Lock이 설정되어

있는지를 먼저 확인후 갱신을 시행해야함.

파라미터 설명
 GCLINET[IN] : 클라이언트 명
 GNAME[IN] : Object Name[Table,Program Name]
 GARG[OUT] : 표준테이블[Client(3) + Key Value]
                         CBO테이블[테이블명 + Key Value]
 GUNAME[OUT] : SY-UNAME
 LOCAL[OUT] : 사용하지 않음.
 NUMBER[OUT] : Lock의 수량
 SUBRC[OUT] : sy-subrc반환
 ENG[OUT] : Locked된 오브젝트의 상세한 정보를 반환

번호 제목 글쓴이 날짜 조회 수
44 클러스터뷰 만들기 [13] file 둥맘 2011.03.25 22866
43 ABAP [Function] 기본정보 정리표 [45] 문바이 2011.09.20 22875
42 sap table 업로드, 양식다운로드, 데이터다운로드(EXCEL전용) [31] file 미스터비인 2010.08.19 23885
41 ABAP 프로그래밍 교재입니다 [101] file 아용 2012.05.17 24108
40 ABAP Proxy Implement Guide - XI 자료 입니다. [26] file Giant 2011.04.04 24238
» ABAP [Dictionary] Lock Object [10] 문바이 2011.12.20 24847
38 Screen에서의 ListBox생성방법 [14] file 양키 2012.12.05 24852
37 SAP - ABAP Programming-Total.htm 영문버전 [14] file 서륜파파 2011.04.28 26302
36 abap_query_교육자료입니다. [55] file 닭가슴살_샐러드 2013.08.26 28402
35 간단한 리포트 사용자 매뉴얼입니다. [58] file 뽀로롱뽕구 2013.08.29 28731
34 ABAP [Dictionary] Search Help [9] 문바이 2012.03.29 31427
33 SAP Cording Style Guide(ABAP 기초수준급) [42] file swithom 2011.08.09 31595
32 Email 첨부파일 송부방법 [28] file 양키 2012.12.05 34845
31 Abap OO 자료 잘되있네요 ^^ [39] file 양키 2011.05.31 35471
30 cl_gui_fronted_service에서 많이 쓰인는 method 올려봅니다. [30] file 버미! 2011.04.11 35717
29 General SAP Tips [12] D.Y.Kim 2009.05.29 36110
28 Adobe Form 개발 메뉴얼 [16] file sapjoy 2011.04.27 37476
27 기초abap [24] file 데니스 2013.05.09 38441
26 대량데이타 빠르게 편집하기 - Clipboard 로 다운받아 편집하기 [16] file 통하라 2011.07.20 39085
25 SAP 용어정리 [55] file 시골아빠 2013.07.29 39375