본문 바로가기

SAP CO/깊숙한 개념

배부하지 않음(Not Distributed)과 배부되지 않음(Not Allocated) - 1

 

결산이 덜 된 건 아닌가요?

 

 

간혹 자재원장에 '배부하지 않음', '배부되지 않음'이란 항목이 보일 때가 있다. 이게 뭔지? 얼핏 보면 결산이 덜 된 건 아닌지 의심이 든다.

 

T-CODE: CKM3(자재원장 조회). 내가 사용하는 데모서버의 한국어 버전에서는 Not Distributed와 Not Allocated가 모두 '배부하지 않음'으로 번역되어 둘의 차이를 알 수 없다. 옛날에는 배부하지 않음, 배부되지 않음이었었는데...

 

이게 다 뭔가? 배부하지 않았다는 게 어디에 뭘 어쨌단 말일까? 이대로 두어도 괜찮은 걸까? 무슨 에러인 건 아닐까?

 

이번 포스팅에서는 우선 Not Distributed란 무엇인지부터 알아보자.

 

 


 

1. M/L 차이 정산

Not Distributed는 재고에 배부될 '차이금액의 수량(Price Limiter Quanatity)'보다 재고수량이 작을 때 발생한다.

 

 

이거 또 무슨 소린가? 우선 "차이금액이 재고에 배부된다"는 개념부터 이해해야 한다. 여기서 말하는 차이금액이란 '표준원가와 차이금액'을 뜻한다. SAP의 자재는 표준원가와 이동평균가 두 가지 방법으로 평가한다. 이 중 표준원가를 사용하는 자재는 사전에 미리 표준원가를 산출하고 자재 마스터에 업데이트해두면, 월중 물류는 모두 이 표준원가를 참조하여 흐르게 된다.

 

T-CODE: MM03(자재 마스터 조회) 표준원가는 회계1뷰와 원가계산2뷰에서 볼 수 있다.

 

예를 들어 이렇게 표준원가가 1,500인 자재를 물류 트랜잭션에 태우면

 

 

T-CODE: MIGO를 통해 타계정출고하고, 해당 내역을 FI 전표로 확인한 모습

 

위 그림처럼 수량에 표준원가를 곱한 금액만큼 전표가 생성되게 된다. 물류 트랜잭션을 발생시킬 때 금액 없이 수량만 입력했음에도, 시스템에서 알아서 표준원가를 참조하여 회계전표를 생성해준다.

 

이는 구매입고할 때도 마찬가지여서 실제로 지급한 금액이 얼마이든지 관계 없이 우선은 표준원가로 재고자산이 잡히게 된다. 그러다보니 표준원가와 실제 지급할 금액인 송장금액이 다르면 차이가 발생하게 된다. 이렇게 발생한 차이금액은 FI 전표에도 '차이'로 발생하고, M/L에도 '차이'라는 항목으로 표시된다. 이처럼 M/L에 '차이'로 표시되면서 FI 전표에 '차이' 거래키를 사용하는 계정을 나는 "M/L 차이 계정"이라고 부른다. (내가 이렇게 부른단 뜻이다. SAP 공식 용어는 아님)

 

T-CODE: ME21N으로 구매오더를 생성하고 입고한 후 FI 전표를 비교해본 화면

 

위 그림처럼 표준원가가 1,500인 자재를 구매오더 1,800으로 냈을 때에도 재고자산은 우선 표준원가인 150,000으로 잡힌다. 차이금액이 30,000으로 따로 빠질 뿐이다.

 

그럼 이 차이금액은 어떻게 되는가? 결산 시 자재에 배부된다. 그렇다. 기본적으로 배부되는 게 일반적인 프로세스라는 의미다. 그렇다면 Not Distributed(배부하지 않음)는 자재에 배부하지 않았다는 의미가 된다.

 

 

T-CODE: CKMLCP를 통해 정상적으로 배부됐을 때의 모습

 

위 그림이 정상적으로 배부되었을 때의 모습이다. 월중에 차이로 빠져있던 금액은 M/L 차이 정산이란 계정으로 상계되고 다시 재고로 반영된다. 

 

 


 

2. Not Distributed가 발생하는 상황

그런데 이렇게 되지 못하고 Not Distributed가 발생하는 상황은 어떤 상황일까? 위에서 언급했던 것처럼 재고에 배부될 '차이금액의 수량(Price Limiter Quanatity)'보다 재고수량이 작을 때 발생한다. 그런 상황을 만들어보기 위해 100 KG를 입고시키고 "송장은 처리하지 않은 채로" 기말재고는 40 KG만 남겨보자. 

 

입고송장이 처리되지 않은 채로 결산이 끝났고, 기말재고는 40KG이 남은 상황

 

위 그림과 같은 상황을 가정해보자. 이 경우에는 별다른 이상 없이 결산이 끝나는데 일단 이것부터 보자. T-CODE: CKMLCP를 통해 M/L 결산을 수행하면

 

T-CODE: CKM3(자재원장 조회) 차이금액이 수량 비율에 따라 배부된 모습

 

기초재고와 입고에 누적된 총 차이금액 30,000이 수량 비율에 따라 소비와 기말재고로 배부된다. 소비는 160KG이므로 총 200KG 중 80%이다. 30,000 x 80% = 24,000이므로 소비에 배부될 차이금액은 24,000이다. 남은 6,000은 재고로 배부된다. 위 내역을 자재원장 뿐만 아니라 FI 회계전표에서 살펴보면

 

T-CODE: FB03(전표 조회)

 

재고에 배부된 금액 6,000은 원재료 계정으로, 소비에 배부된 금액 24,000은 소비재평가 집계 계정(COC)으로 배부된다. (원본 계정으로 배부하는 게 더 직관적으로 이해하긴 좋을 텐데 예시를 잘못 잡았다 ㅜㅜ 자세한 내용은 Not Allocated를 설명하면서 하겠음)

 

아무튼 이런 상황에서 차월로 넘어가서 송장 처리를 해보자.

 

T-CODE: MIRO(구매송장처리)

 

이렇게 송장금액이 100개에 대해서 총액 200,000으로 처리했다. 아까 했던 구매오더 금액을 기억하는가? 180,000이었다. 이렇게 하면 아까 구매오더 금액이었던 180,000과 20,000만큼 차이가 생긴다. 송장처리에 따라 또다시 M/L 차이금액으로 20,000이 생기게 되는 것이다.

 

다시 말하자면 전월에는 ① 구매오더와 표준원가의 가격차이가 발생했고 당월에는 ② 구매송장과 구매오더의 가격차이가 발생한 셈이다. 이런 상황에서 결산을 한다고 생각해보자.

 

 

100 KG에 대한 차이금액인 20,000을 배부해야 하는데 남아있는 수량은 그에 못 미치는 40 KG다. 그럼 이 금액을 다 배부하는 게 타당한가? 위 그림에서 보면 전월부터 받아온 차이금액 6,000은 수량으로 배부된 40 KG에 대한 차이금액인 반면, 새로 생긴 차이금액인 20,000은 100 KG에 대한 차이금액이다. 이 금액이 다 배부가 되면 실제값은 86,000원이 되며 단가는 2,150으로, 전월 실제 단가인 1,650에 비해 크게 튀게 된다.

 

어찌보면 단가 왜곡이라고 볼 수도 있다. 왜냐하면 실제로 구매한 금액은 100 KG에 200,000원이었으므로 1 KG당 2,000원이었고, 전월재고인 100 KG에 150,000과 평균하면 실제 단가는 1 KG당 1,750에 평가되어야 타당하기 때문이다.

 

SAP도 그걸 알고 있기 때문에 그냥 두지 않았는데, 이 상태에서 T-CODE: CKMLCP로 M/L 결산을 하면

 

 

이렇게 된다. 실제로 남은 수량인 40 KG만큼만 재고금액에 배부되고 60 KG만큼은 Not Distributed로 남는다. 100 KG에 대한 전체 차이금액을 다 배부하는 걸 피하는 것이다.

 

이대로 결산까지 하면 어떻게 될까?

 

40 KG에 대한 차이금액만 M/L차이정산으로 상계 후 기말재고에 반영된다. 나머지 60 KG에 대한 차이금액은 잔액이 남는다.

 

이렇게 된다. 구매가격차이 계정에 잔액이 남게 된다. 그러면 이 구매가격차이라는 계정은 재무제표에서 어떻게 봐야 할까? 기본적으로는 매출원가로 당기 비용 처리한 것으로 본다. 이 60 KG에 대한 차이금액은 전월에 다 소비된 것으로 보는 게 타당하다고 보기 때문이다. 손익계산서 상에서 구매가격차이의 잔액을 모두 매출원가라는 카테고리로 묶어서 표시하거나, 아예 잔액을 다 '기타 매출원가'라는 계정으로 대체해주기도 한다.

 

그런데 어떤가? 이렇게들 하고 계신가? 그냥 재고에 다 반영하고 싶다는 생각은 안 드시는지? 그래서 회사 정책상 문제가 없다면 해당 차이금액을 당기 비용으로 하기보다는 재고에 반영해서 비용효과를 이연하기도 한다. (이 방법이 더 좋다는 얘기는 아니다. 다만 회계기준 상 둘 중 어느 한 방법을 꼭 사용해야 한다고 구체적으로 정해진 요건은 없으므로, 기업 스스로 방법을 정하여 일관성 있게 사용하면 된다)

 

그렇게 하려면 두 가지 방법이 있다.

 

  1. M/L 결산 시 '재고 범위 점검 안 함'에 체크 (전체 자재에 대해 적용하는 방법) 
  2. T-CODE: CKMVFM(값흐름 모니터)에서 Price Limiter 수량을 0으로 수정 (특정 자재에 한정하여 적용하는 방법) (단, S/4HANA 1610 이후 버전부터는 사용 불가능)

 

T-CODE: CKMLCP(M/L 결산)

 

1번 방식은 M/L 결산 시 재고 범위를 점검하지 않도록 옵션 세팅을 하는 방법이다. 위 그림처럼 M/L 결산의 '정산' 매개변수에 들어가서 '재고범위 점검 안 함'에 체크하면 된다. S/4HANA 이전 ECC 버전에서는 '선택'의 매개변수에서 동일한 체크 표시를 하면 된다.

 

이 방식은 전체 자재에 대해서 동일하게 적용하는 방식이기 때문에, 특정 자재만 점검하지 않게 할 수는 없다.

 

T-CODE: CKMVFM(값흐름 모니터)

 

두 번째 방식은 특정 자재에 대해서 Price Limiter 수량을 0으로 만들어주는 방법이다. 갑자기 Price Limiter 수량이란 용어가 나와서 당황스러울 수도 있는데, 아까까지 얘기했던 "차이금액에 대한 수량"을 뜻한다고 보면 된다.

 

위 그림처럼 T-CODE: CKMVFM이란 곳에 들어가서 해당 자재의 "PL 수량 삭제" 버튼을 눌러주면 된다. Not Distributed는 차이금액의 수량보다 재고수량이 작을 때 발생하는데, 차이금액의 수량을 0으로 만들어주면 발생하지 않게 된다.

 

다만 이 방식은 S/4HANA 1610 버전부터 M/L 테이블이 바뀌면서 현재로서는 사용할 수 없는 방법이 됐다(※ SAP NOTE: 2207543: Not distributed price differences in CKM3 due to price limiter logic: deleting price limiter quantity or using the flag 'No stock coverage check'? 참고)

 

아무튼 두 방법 중 하나로 처리하고 실행하면 아래와 같은 결과가 나온다.

 

T-CODE: CKM3(자재원장 조회)

 

기간 상태가 '정산이 완료됨'이지만 그럼에도 발생한 차이금액 전체가 누적재고에 반영된 모습이다. 이제 이대로 결산전표까지 분개하면, 기존 Not Distributed로 빠져 있었던 금액도 다 재고에 반영된다.

 

 


 

3. 결론

 

Not Distributed가 반드시 시스템 오류인 건 아니다

 

 

 

위 그림은 Not Distributed를 남겼을 때와 제거했을 때의 회계처리를 비교한 것이다. Not Distributed는 당월 이전에 발생한 트랜잭션에 반영될 차이금액이 뒤늦게 들어왔을 때 발생하고, 이를 전액 당기 비용화할 것인지 또는 재고에 반영할 것인지는 회사의 선택사항이다. 전액 당기 비용화를 선택했을 경우 Not Distributed는 늘 자재원장에 표시되며 이게 어떤 오류가 있거나 한 것은 아니다. 그냥 개념대로 이해하면 된다.

 

다음으로 살펴볼 Not Allocated는 이와 달리 약간은 오류라고 볼만한 소지가 있는데 그건 다음 포스팅에서 살펴보도록 하자.

 

 


 

#. 추가(2021.10.31)

 

여기서는 가장 기본적인 Price Limter Quantity 부족에 따른 Not Distributed에 대해 포스팅했다. 이외에도 SAP NOTE: 908776 - Not included/not allocated and not distributed에 따르면 Not Distributed가 발생할 수 있는 상황이 더 있다.

 

 

  • 자재원장 결산 시 마이너스 가격이 발생하여, T-CODE: CKMLCP에서 이를 방지하기 위한 대체가격전략(Fallback Strategy)을 설정한 경우
  • T-CODE: CKMM을 통해 해당 자재의 가격결정이 변경된 경우(이 부분은 과거 버전에서 그랬고 SAP NOTE 838989를 적용하면 사라진다고 한다)
  • 자재원장 결산 시 순환투입이 발생했을 때 T-CODE: CKMLCP에서 후속 연결 해제(Cycle: Successively cut all connections)했을 경우 발생(이 부분도 과거 버전에서 그랬고 SAP NOTE 1951592를 적용하면 사라진다고 한다)
  • T-CODE: MR21에서 LTPC(Late Price Change)라는 기능으로 후속 가격변경을 수행한 경우, 앞서 발생한 소비 부분에 대해서는 Not Distributed가 발생(S/4HANA에서는 LTPC 자체가 사라지고, 이 문제도 해소됐다)

그리고 NOTE에는 안 나와있지만 WIP at Target을 쓰는 경우 당월에 발생한 PCC의 Variance가 반영될 재고가 없을 때도 발생한다. 이건 결국 Price Limiter Quantitiy의 문제지만.