많은 분들이 아실 만한 BADI인데 간단하게 정리하고 가려고 한다.
자재원장은 기본적으로 "카테고리"라는 대분류와 "프로세스 카테고리"라는 중분류가 있다. 그 아래에는 "조달대체"라는 소분류가 있고 그 아래에 다시 개별 항목이 있는 식으로 구성되어 있다.
무슨 말이냐면
위 그림처럼 기초재고, 입고, 누적재고, 소비, 기말재고 같은 항목들이 바로 대분류인 "카테고리"다. 위 화면에서는 안 보이지만 "기타입고/소비"나 "재평가"도 대분류에 포함된다.
카테고리는 도메인 'CKML_CATEG'에서 값들을 확인할 수 있다.
카테고리 하위는 "프로세스 카테고리"라는 게 있다.
프로세스 카테고리는 입고와 소비 부분의 항목 범주를 보다 상세하기 구분하기 위해서 만든 것이다. 같은 입고라고 해도 이게 구매입고인지 생산입고인지는 이 프로세스 카테고리를 통해 구분한다.
즉 이런 관계가 있는 것이고 이걸 시스템 세팅에서 보자면 뷰 'V_CKMLMV01'를 통해서 보면 된다.
위 뷰에서 보면 B로 시작하는 항목과 V로 시작하는 항목이 있는데 각각 입고와 출고라고 보면 된다. 기술적으로는 "R"이라는 체크박스가 찍혀 있는 게 입고이고 안 찍혀 있는 것은 출고라고 봐주면 되겠다.
그 옆에 "M"은 멀티 레벨이라는 뜻이고 이게 바로 자재원장 멀티 레벨 차이 롤업의 대상이 된다. 멀티 레벨을 찍었으면 항상 파트너 프로세스 카테고리도 입력해야 한다. 위 그림에서 생산입고인 BF에는 "M"이 찍혀 있고 파트너로 VF가 입력되어 있다. 이렇게 되어 있어야 생산출고로 투입된 원자재의 차이 금액이 생산입고로 들어온 상위 제품/반제품으로 롤업 전달된다.
"D"는 디폴트란 뜻이다. 특정한 세팅이 없는 경우 입고일 때는 이게 찍혀 있는 프로세스 카테고리인 B+, 출고일 때는 V+로 값이 들어온다.
디폴트인 B+와 V+는 IMG 세팅에서 카테고리 지정을 해줘야 한다.
이 IMG에서는 이외에도 프로세스 카테고리와 이동유형 그룹이란 걸로 카테고리 지정을 변경할 때도 사용하지만, 그에 대한 설명은 넘어가자.
그렇다면 이 프로세스 카테고리를 사용자가 추가하고,
자재원장이 업데이트될 때마다 값을 지정해주려면 어떻게 해야할까?
이게 이번 글의 주제다. 우선 프로세스 카테고리 추가는 아까 봤던 뷰 'V_CKMLMV01'에서 추가할 수 있다.
위 뷰에서 BZ01과 VZ01을 추가했다. 그리고 BADI를 사용하면 되는데
CKML_UPDATE라는 BADI를 구현하면 된다. BADI 구현에 대한 글을 지난 글인 『T-CODE: KSPP 결과 리스트 저장하기(BADI 활용)』을 참고해주시길.
그리고 이 BADI의 메소드를 보면 'MODIFY_CATEGORY'라는 게 있다.
바로 여기에 소스 코드를 개발하면 된다. 우리는 디버깅을 통해 그냥 살펴보자.
무상납품 처리를 해보고, 이런 경우 프로세스 카테고리를 변경해보자. 이대로 저장하면 우리가 설정한 BREAK-POINT에 디버깅이 걸릴 것이다.
여기서 프로세스 카테고리를 B+에서 ZB01로 변경한다. 원래대로라면 ABAP 로직에 의해 바뀌어야 한다. 파라메터 중에 CS_ACCIT라는 게 있는데 여기에 관련 정보들이 들어온다. 그 중에는 이동유형도 있고, 보통 그 이동유형에 따라 프로세스 카테고리를 변경하는 방식으로 로직을 짜는 편이다. 위 그림처럼 C_PTYP_ORG를 변경해주면 된다.
그리고 처리를 해보면...
위 그림처럼 에러가 난다. 이 부분에서 한참 헤맸었는데 MODIFY_CATEGORY를 통한 변경에서는 뷰 'V_CKMLMV01'에서 "R" 체크가 되지 않은 것들만 가능하다.
그러니 입고임에도 불구하고 우리가 만든 프로세스 카테고리에 'R'을 해제하자. 그러고 나면 정상적으로 처리가 되고 CKM3에서 확인해보면 아래와 같이 나온다.
"CBO구매(BZ)"라는 프로세스 카테고리 내에 값이 들어온 모습이다.
[결론]
그런데 이상하다. 분명 입고임에도 "R" 체크가 되지 않은 것에만 처리가 가능하다니? 테스트를 해보니 스탠다드 프로세스 카테고리인 BBV, BF 등에도 BADI를 통한 지정이 안 먹혔다. 오로지 "R" 체크가 되지 않은 출고쪽 프로세스 카테고리만 이 BADI가 먹혔다.
이것때문에 주변 지인들에게도 물어보고 타사 사례도 확인해봤는데 정확한 사유를 알 수 없었다. 어쨌든 알아낸 내용을 공유해본다.
1. S/4HANA 1610 버전인 어떤 회사는 "R" 체크를 해둔 채로도 처리가 된다고 한다.
2. 2020년쯤 구축했던 모 회사는 "R" 체크 시 에러가 나길래 파라메터와 인핸스먼트를 이용해서 에러를 회피하는 방법을 사용했다고 한다. 그런데 이것때문인지 해당 항목의 원가구성요소 분할이 틀어지는 문제가 생겼고 그것도 따로 보정을 해줘야 했다고 한다.
3. 2022년에 오픈한 모 회사는 입고임에도 그냥 "R" 체크를 해제하고 처리했다고 한다. 별 문제는 없었다고 한다.
이번에 내가 구축하는 프로젝트에서는 3번 방법으로 해보려고 한다. 진행 중에 이슈 사항이 있다면 추가 공유하도록 하겠습니다. 방문자분들께서도 이 설정과 관련된 경험이 있으면 공유해주시면 감사하겠습니다.
[2024.11.26 추가]
이 BADI에서 프로세스 카테고리만 수정할 수 있는 건 아니다. 그보다 상위분류인 카테고리도 수정이 가능하다. 이 때는 "C_KATEGORIE" 필드를 사용하면 된다.
[2025.03.19 추가]
1. 2023 버전을 사용하는 프로젝트에서는 입고에 "R"을 체크해도 잘 된다고 한다.
2. 역시 2023 버전을 사용하는 모 프로젝트에서는 프로세스 카테고리를 숫자로만 만들었더니 자재원장 정산 시점에 소비재평가가 해당 카테고리로 가지 않고 모두 배부하지 않음으로 뜨는 현상이 발생했다고 한다. 테스트는 안 해봤지만 아마 문자코드로 만들면 문제 없으리라 예상한다.
'SAP CO > 깊숙한 개념' 카테고리의 다른 글
Combined CO-PA - (1) 소개 (11) | 2023.01.17 |
---|---|
표준원가계산 시 구매정보레코드의 가격 선택 규칙 (4) | 2022.08.05 |
법인 간 거래와 Group Valuation - (4) 결산 (6) | 2022.05.04 |
법인 간 거래와 Group Valuation - (3) 월중 물류 흐름 (9) | 2022.04.26 |
법인 간 거래와 Group Valuation - (2) 세팅 (0) | 2022.04.12 |