SAP/ABAP

Program 중복 실행 금지를 위한 Lock Object 처리

Buggie 2023. 7. 17. 17:13

[Case]

단순 조회성 레포트는 해당없음.

뭔가 Transaction 을 일으키거나, 데이터를 I/F 하는 프로그램에서 동일 Key 값으로 중복 처리하는 경우가 발생.

 

[Solution]

  1) START-OF-SELECTION 부분에 Lock 여부를 체크하는 로직을 넣어

 

Event Block : START-OF-SELECTION

  2) Locked 일때는, 실행이 되지 않도록 제어하면 된다.

 

Lock Flag 체크

 

Lock Object 설정

 

  3) 100 번 Screen 에서 빠져나올 때, Lock 을 해제

 

Screen 100

 

PAI : MODULE EXIT AT EXIT-COMMAND

 

Lock 해제

 

[Result]

동일한 Tcode 를 순차적으로 실행하여 Test

 

1) 첫번째 실행

Result Screen

2) 두번째 실행 (여기까진 문제 없이 실행됨)

Selection Screen

3) F8 (Execution) 실행시

Locked 되어 실행이 안되는 걸 확인

 

(동일한 ID 로 하든 or 다른 ID 로 하든 동일하게 Lock Object 설정되어 막을 수 있다.)

 

※ INITIALIZATION 부분에 위 로직을 건다면 Tcode 실행 자체를 막을 수도 있지만,

    위의 테스트는 Tcode 실행 후 F8 실행할 때 Lock 여부를 체크하도록 처리했다.

 

※ 좀 더 세부적인 제어를 원한다면,

    SE11 에서 Table 의 Key 값으로 Lock Object 를 미리 생성해 둔 후,

    Lock Object Handling 할 수도 있다.

    이 경우는 Program 실행 Level 에서의 러프한 처리를 위한 것임을 참고하시면 되겠슴다.