메뉴 건너뛰기

SAP 한국 커뮤니티

<img src=d.gif>테이블 Lock & UnLock function[추천:e-abap]

양키 2011.01.18 10:01 조회 수 : 8269 추천:2

실무에 적용된 소스이며, 재밌는 예제인것같습니다. 
( 자재 실사처리시 MARD테이블 Lock처리해서 이중실사처리하지 못하도록 할경우 사용)


 


===================================================================


MARD 테이블 Lock


===================================================================


 

FUNCTION ENQUEUE_EZ_MARD.

DATA: __seqta_tab TYPE SEQTA OCCURS 01 WITH HEADER LINE,
      __scope TYPE DDENQSCOPE,
      __wait TYPE DDENQWAIT.
__wait = _wait.
__scope = _scope.


DATA: BEGIN OF %a_MARD,
*       테이블 MARD 에 대한 잠금인수
            MANDT TYPE MARD-MANDT,
            MATNR TYPE MARD-MATNR,
            WERKS TYPE MARD-WERKS,
            LGORT TYPE MARD-LGORT,
      END OF %a_MARD.
* 잠금인수 초기화:
CALL 'C_ENQ_WILDCARD' ID 'HEX0' FIELD %a_MARD.


* 잠금필드에 잠금매개변수 지정:

IF NOT MANDT IS INITIAL.
   MOVE MANDT TO:
        %a_MARD-MANDT.
ENDIF.

IF NOT MATNR IS INITIAL OR
   NOT x_MATNR IS INITIAL.
   MOVE MATNR TO:
        %a_MARD-MATNR.
ENDIF.

IF NOT WERKS IS INITIAL OR
   NOT x_WERKS IS INITIAL.
   MOVE WERKS TO:
        %a_MARD-WERKS.
ENDIF.

IF NOT LGORT IS INITIAL OR
   NOT x_LGORT IS INITIAL.
   MOVE LGORT TO:
        %a_MARD-LGORT.
ENDIF.


* 잠금테이블채우기:
__seqta_tab-gname = 'MARD'.
__seqta_tab-gmode = MODE_MARD.
__seqta_tab-garg = %a_MARD.
APPEND __seqta_tab.


* 잠금 지정:
PERFORM send_enqueue(saplsena)
        TABLES __seqta_tab
        USING '1' __scope __wait ' ' 'EZ_MARD' _collect.

ENDFUNCTION.


===================================================================


MARD 테이블 UnLock


===================================================================


 

FUNCTION DEQUEUE_EZ_MARD.

DATA: __seqta_tab TYPE SEQTA OCCURS 01 WITH HEADER LINE,
      __scope TYPE DDENQSCOPE,
      __synchron TYPE DDENQSYNC.
__synchron = _synchron.
__scope = _scope.


DATA: BEGIN OF %a_MARD,
*       테이블 MARD 에 대한 잠금인수
            MANDT TYPE MARD-MANDT,
            MATNR TYPE MARD-MATNR,
            WERKS TYPE MARD-WERKS,
            LGORT TYPE MARD-LGORT,
      END OF %a_MARD.
* 잠금인수 초기화:
CALL 'C_ENQ_WILDCARD' ID 'HEX0' FIELD %a_MARD.


* 잠금필드에 잠금매개변수 지정:
IF NOT MANDT IS INITIAL.
   MOVE MANDT TO:
        %a_MARD-MANDT.
ENDIF.

IF NOT MATNR IS INITIAL OR
   NOT x_MATNR IS INITIAL.
   MOVE MATNR TO:
        %a_MARD-MATNR.
ENDIF.

IF NOT WERKS IS INITIAL OR
   NOT x_WERKS IS INITIAL.
   MOVE WERKS TO:
        %a_MARD-WERKS.
ENDIF.

IF NOT LGORT IS INITIAL OR
   NOT x_LGORT IS INITIAL.
   MOVE LGORT TO:
        %a_MARD-LGORT.
ENDIF.


* 잠금테이블채우기:
__seqta_tab-gname = 'MARD'.
__seqta_tab-gmode = MODE_MARD.
__seqta_tab-garg = %a_MARD.
APPEND __seqta_tab.


* 잠금 지정:
PERFORM send_enqueue(saplsena)
        TABLES __seqta_tab
        USING '2' __scope ' ' __synchron 'EZ_MARD' _collect.

ENDFUNCTION.


번호 제목 글쓴이 날짜 조회 수
367 READ_TEXT 관련 [14] file 노름마치 2007.11.15 5177
366 Background Processing sapjoy 2007.11.20 3436
365 SUBQUERY 사용예 입니다. [1] 노름마치 2007.11.20 9556
364 SAP Tips. [7] file 박성민 2007.11.22 5484
363 스크린에서 리스트 박스의 값을 동적으로 생성하는 tip [1] sapjoy 2007.11.30 4801
362 문자열 자를 때 자르는 위치에 2BYTE문자가 있는지를 체크하는 방법입니다. [8] 꿈하루 2007.12.01 7065
361 abap refresh 함수 [2] 꿈하루 2007.12.03 6130
360 BAPI LIST 입니다. 참고하세요. [24] file 노름마치 2007.12.10 4964
359 BAPI_GOODSMVT_CREATE 입고/출고/재고이동시에 사용하세요. [5] 노름마치 2007.12.10 15100
358 BAPI_INCOMINGINVOICE_CREAE 송장처리시에 사용하세요. [1] 노름마치 2007.12.10 4535
357 BAPI_MATERIAL_AVAILABILITY 가용성체크시에 사용하세요. [1] 노름마치 2007.12.10 6302
356 BAPI_MATERIAL_SAVEDATA 자재마스터 생성시에 사용하세요. [1] 노름마치 2007.12.10 9249
355 BAPI_MESSAGE_GETDETAIL 작업결과에 대한 메세지는 이렇게도 보여줄수 있겠군요 [1] 노름마치 2007.12.10 4819
354 BAPI_PO_CHANGE 구매오더 변경시에 사용하세요 [7] 노름마치 2007.12.10 5557
353 BAPI_PO_CREATE1 구매오더 생성시에 사용하세요 [8] 노름마치 2007.12.10 9701
352 BAPI_PR_CREATE 구매요청 생성시에 사용하세요 [2] 노름마치 2007.12.10 23702
351 BAPI_PR_CREATE 구매요청 생성시에 사용하세요. 이렇게도 쓸 수 있군요. [1] 노름마치 2007.12.10 6679
350 BAPI_RESERVATION_CREATE1 MB21의 예약생성시 사용하세요. [2] 노름마치 2007.12.10 7605
349 BAPI_SALESDOCU_CREATEFROMDATA1 판매오더를 이렇게 생성해도 되는군요. [4] 노름마치 2007.12.10 5504
348 ABAP TIP 정리(영문 60페이지) [31] file sapjoy 2008.01.04 4478