Client remote copy 후 DUPLICATE_KEY_ERROR 발생시
SCMP, SCC9, SCCL, NRIV
클라이언트 Copy 시 소스 클라이언트가 사용중인 상태에서 복사를 하면,
복사가 진행되는 동안에도 소스 클라이언트에서는 SAP을 접속중인 사용자 또는 백그라운드 작업 등에서 각종 문서(회계전표,ML,자재문서 등)를 평상시와 같이 만들게 됩니다.
이러다 보니 클라이언트 카피 후에 소스 클라이언트와 대상 클라이언트간에 번호범위가 일치하지 않아,
대상 클라이언트에서 무언갈 하려고 하면 Duplicate Key error가 빵빵 터지게 되죠.
위의 상황은 주로 테스트를 위해 소스클라이언트 잠금 없이 운영 클라이언트에서 QA 클라이언트로 복사한 후 거의 100%의 확률로 발생합니다.
이럴때는 당황하지 않고 3가지 T-Code만 이용하면 번호범위 불일치를 쉽게 해결 할 수 있습니다.
#1. SM13 - 갱신 레코드 관리
Duplicate key error 가 발생하면 갱신 요청에 오류 로그가 남게 됩니다.
생각보다 상세한 내용을 볼수 있으며, 디버깅도 바로 해볼수 있죠.
지금 필요한 정보는 "어떤 테이블"에 "어떤 값"을 Insert 하려다 오류가 발생했는지가 필요합니다.
1) 사용자 ID와 오류가 발생한 T-Code를 확인하고 항목을 더블클릭
2) 오류 항목을 더블클릭하여 소스보기(ABAP 편집기)를 누르면 오류가 발생한 Table의 확인이 가능합니다.
3) 테이블을 확인했으니, 이제는 값을 확인해야 합니다. "갱신 데이터 조회"를 눌러주세요.
4) 갱신 데이터의 값을 보면, 위에서 찾은 테이블에 어떤 값을 Insert 하려하는지 나오게 됩니다.
#2. SCMP - 오브젝트 비교
이제 테이블과 키값을 찾았으면, 해당 정보로 어떤 번호범위 오브젝트를 사용하는지 유추해야 합니다.
가장 좋은 방법은 비지니스 프로세스를 이해하고 SAP IMG에서 적절하게 찾는 것입니다.
하지만 BC 입장에서 전체 모듈의 IMG를 모두 파악하긴 힘든게 현실이니 좀더 쉬운 방법으로 번호범위를 찾는 방법을 알려드리려 합니다.
1) 서버/클라이언트간 오브젝트 비교 기능을 통해 "NRIV" 테이블의 값을 비교
-. 뷰/테이블 : NRIV
-. R/3 연결 : 카피한 소스 클라이언트의 RFC 목적지
2) 오류가 발생한 키값으로 필터를 걸어 서, 어떤 오브젝트인지 확인을 합니다.
3) 오브젝트까지 확인이 되었으면, 오브젝트만 필터를 걸어서 값이 어떻게 차이나는지 확인합니다.
-. FLAG의 ML 이 현재 클라이언트, MR이 비교대상 클라이언트 입니다.
#3. SNRO - 번호 범위 오브젝트
번호범위 오브젝트와 값이 확인되었으면 이제 번호범위의 NR상태(현재값)을 변경하는 일만 남았습니다.
1) 번호범위 오브젝트를 입력하고 "간견 편집"을 실행
2) SCMP에서 확인한 MR(비교 시스템)의 번호를 넣고 저장합니다.
이렇게 표준으로 제공되는 기능으로 번호범위를 하나씩 조정해도 좋지만,
Client copy를 자주 한다면 일괄 조정 프로그램을 만들어서 사용하는것도 좋습니다
2023.05.24 - [SAP/Number range] - [Report] Client copy 후 번호범위 자동 조정 프로그램
[Report] Client copy 후 번호범위 자동 조정 프로그램
Client copy 후 번호범위 자동 조정 프로그램 RFC_READ_TABLE, NUMBER_GET_NEXT SCC9를 통해 운영에서 QA로 Remote Copy 시 운영 클라이언트를 잠그지 않고 복사를 하면, 복사 후에 QA클라이언트의 번호범위 테이블
playabap.tistory.com
'SAP > Number range' 카테고리의 다른 글
[번호범위] SAP 번호범위(Number range object) 찾는 방법 (0) | 2023.05.21 |
---|
댓글