개발을 하다 보면 CBO 프로그램 개발을 통해 구매오더를 변경하는 경우가 있는데,
이때 누가 구매오더를 잡고 있다면 개발 프로그램에서는 해당 구매오더에 접근할 수 없어 데이터 변경이 불가하다.
내가 이 함수를 찾게 된 계기는 하나의 구매오더에 대해 BAPI를 두 번 돌려야 하는 상황에서
첫 번째 BAPI가 돌아가 고난 후 두 번째 BAPI가 돌아갈 때 그 잠깐 사이에 혹시나 누가 구매오더를 조작하게 될지 몰라
(그런 경우는 거의 없겠지만... 만일의 상황에 대비하기 위해..... )
이리저리 검색하다 알게 된 함수이다.
구매오더 잠금을 설정하는 함수는 'ENQUEUE_EMEKKOE'
구매오더 잠금을 해제하는 함수는 'DEQUEUE_EMEKKOE'
아래와 같이 사용할 수 있다.
테스트하기 위해 두 개의 함수 사이에 디버깅을 걸어 테스트해 보니
디버깅이 걸린 상태에서 ME22N으로 해당 구매오더로 들어가 보면
이렇게 프로그램 하단의 STATUS BAR에 이미 처리 중이어서 해당 구매오더 처리가 불가하다는 메시지를 확인할 수 있다.
그렇다면 반대로 해보면 어떨까?
구매오더를 수정하기 위해 열어놓은 상태에서 프로그램을 실행해 보면
SUBRC 가 1로 떨어져 오브젝트를 이미 잠갔다는 EXCEPTION을 확인할 수 있고,
시스템 메시지는 오른쪽과 같이 나타난다.
T-CODE : SE91 메시지 클래스에서 해당 메시지를 조회해 보면
이러한 시스템 메시지가 나타난다는 것을 확인할 수 있다.
이렇게 나타나는 시스템 메시지는 ' MESSAGE_TEXT_BUILD' 함수를 통해 텍스트로 전환할 수 있다.
참고로, 함수를 사용할 때 EBELP는 없어도 상관없다.
두 번 다 테스트해 본 결과 EBELP를 넣어도 넣지 않아도 동일하게 잠금이 걸리는 것을 확인할 수 있었다.
'Language > ABAP' 카테고리의 다른 글
[SAP/ABAP] TABLE MAX KEY FIELD (0) | 2024.10.03 |
---|---|
[ABAP/FUNCTION] 오늘 날짜 기준 주차 구하기 DATE_GET_WEEK (0) | 2024.05.13 |
[ABAP] Dynamic Selection Screen Function Key (0) | 2024.02.18 |
[ABAP/Error Log] CX_SY_READ_SRC_LINE_TOO_LONG (0) | 2024.02.01 |
[ABAP] CHECK 구문 (1) | 2023.10.10 |