본문 바로가기

SAP CO/깊숙한 개념

표준원가계산 시 구매정보레코드의 가격 선택 규칙




표준원가 계산 시 구매정보레코드로 자재가격을 결정할 경우
어떤 방식으로 가격을 선택해올까?





표준원가 계산 시 가격 선택 방법은 기본적으로 "평가변형"이라는 데에서 지정한다.

 

T-CODE: OKKN(원가계산변형 → 평가변형)


위 그림에서 전략 2번으로 설정된 게 바로 구매정보레코드다. 전략 1번이 User exit이므로 만약 여기서 값을 찾지 못하면 2번인 구매정보레코드를 읽는다. 이 전략 순서는 사용자가 원하는 대로 지정할 수 있다.

하단에 보면 구매정보레코드 내에서도 어떤 가격을 우선적으로 가져올지 설정할 수 있다.

그런데 MM의 구매정보레코드에는 자재 하나에 대해서 단일한 값만 있는 게 아니다. 하나의 자재/플랜트에 대해서도 여러 공급업체에 따라 다르게 생성할 수 있다.

그렇다면 이런 여러 구매정보레코드 중에서 SAP CO의 표준원가 계산은 어떤 값을 가져오는 걸까? 어떤 기준으로 하나의 값을 추출해서 재료비 단가로 적용하는 걸까?

이에 대한 설명은 아래 SAP HELP 문서에 설명되어 있다.


https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/5e23dc8fe9be4fd496f8ab556667ea05/1194d7531a4d414de10000000a174cb4.html?locale=en-US&version=1809.001

 

SAP Help Portal

 

help.sap.com


이번 글에서는 이 문서의 내용을 바탕으로 보다 상세하게 살펴보고자 한다.


공급업체 선택 방법


위 도표가 바로 표준원가 추정 시의 공급업체 선택 방법이다. 구매정보레코드를 바로 검색하기 전에 먼저 위와 같은 방식으로 공급업체부터 정한다. 공급업체가 정해지면 구매정보레코드는 따라서 끌려오는 방식이다. 하나씩 살펴보자.

 

 

(1) 소스리스트가 필수인가?


먼저 현재 환경이 소스리스트가 필수인 환경인지부터 살펴본다. 소스 리스트란 특정 자재에 대한 공급업체 리스트를 말하며 T-CODE: ME01로 입력/관리할 수 있다.

 

IMG: 자재 관리 > 구매 > 공급처 리스트 > 플랜트 레벨에서 공급처 리스트 요청 정의


위 IMG에서 플랜트별로 소스 리스트가 필수인지 여부를 설정한다. 우리 예시에서는 설정하지 않았다. 그렇다면 소스리스트가 없이도 원가추정은 문제없이 된단 얘기가 된다.

소스 리스트가 필수인 상황에서 해당 자재에 소스 리스트가 없다면 에러가 나서 블락된다. 소스 리스트가 필수인지 아닌지는 회사의 비즈니스 상황에 맞게 설정하면 된다.

 

 

(2) 쿼타가 있는가?


쿼타 조정(Quota Arrangement)이란 전체 계획소요량을 여러 공급업체로 나눠주는 걸 의미한다. 구매를 위한 외부 공급업체 뿐만 아니라 내부 생산 시에도 여러 생산지별로 나눠줄 때 쓴다.

쿼타 설정을 위해서는 T-CODE: MEQ1으로 간다.

 

T-CODE: MEQ1(쿼타 조정 유지보수)


위 그림처럼 설정하면 공급업체 1000001과 1000011이 각각 70, 30만큼의 가중치로 쿼타를 가져가는 셈이 된다.

이때 계획이라면 쿼타 값이 높은 것, 실적이라면 기준수량에 따라 설정된 Quata Rating이 낮은 값을 대상으로 추출한다.

우리는 그냥 가장 우선 순위가 높은 공급업체를 선택한다고만 이해해도 된다.

참고로 S/4HANA 이전에는 자재 마스터에서도 "쿼타 사용"이란 필드에 값을 넣어줘야 했는데, S/4HANA부터는 그냥 사용할 수 있게 됐다. S/4HANA의 MRP는 항상 쿼타를 기본으로 고려해주기 때문이다.

 

 

 

(3) 소스 리스트가 있는가?


쿼터가 없는 경우라면 그 다음으로는 소스 리스트를 찾는다. 소스 리스트에서는 고정 공급업체 → 정규 공급업체 순으로 찾고, 둘다 지정된 게 없으면 가장 싼 걸 찾는게 기본 로직이다.

 

T-CODE: ME01(소스 리스트 유지보수)


고정 공급업체란 위 그림처럼 소스 리스트에서 "Fix"에 체크한 공급업체이다. 이게 없으면 구매정보레코드에서 "정규 공급업체"로 체크된 항목을 찾는다.

 

 

T-CODE: ME13(구매정보레코드 조회)


그마저도 없으면 소스 리스트에 있는 공급업체 중 구매정보레코드 가격이 가장 낮을 걸 추출하게 되어 있다.

 

 

T-CODE: ME1M(자재에 대한 구매정보레코드)

 

위 화면에서 상단의 "가격 시뮬레이션"을 클릭하고, 원가계산로트크기를 시뮬레이션 수량으로 입력하고 가격을 비교해보면 된다. 위 그림에 따르자면 공급업체 1000001(샘 코코아)가 더 저렴하므로 이걸 선택하게 된다.

 

 

 

(4) 플랜트 레벨에서 정규 공급업체가 있는가?


소스 리스트가 없는 경우는 전체 구매정보레코드에서 "정규 공급업체"로 체크된 항목을 우선으로 추출한다. 그런 항목이 없다면 역시 구매정보레코드 전체 중에서 가장 가격이 낮을 걸 선택한다. 위에서 살펴본 것과 같다.



(5) Split Valuation을 쓸 때는?


Split Valuation이란 하나의 자재코드를 각각 별개의 자재처럼 따로 관리하는 기능이다. 물성이 동일한 자재라도 조달 방식에 따라 따로 수불을 관리하고자 할 때 쓴다. 이때 각각의 자재는 "평가유형"이라는 코드로 구분되며, 각각은 별개의 수불부가 구성된다. 평가클래스도 다르므로 회계상 자산계정도 별도로 처리할 수 있다.

암튼 이 Split Valuation을 사용하는 경우라면 조달대체(Procurement Alternatuve)와 혼합률(Mixed Ratio)을 정의해서 표준원가를 계산하는데, 이때 조달대체는 구매조직과 공급업체를 지정해서 생성할 수 있다(또는 구매조직과 공급업체를 공란으로 만들 수도 있다).

 

T-CODE: CK91N(조달대체)



만약 이런 식으로 조달대체에 구매조직과 공급업체를 지정해서 생성했다면, 원가계산 시에는 해당 구매조직과 공급업체에 일치하는 구매정보레코드 데이터를 추출하게 된다.

 

 

(6) MPN 자재의 경우에는?

 

MPN(Manufacturer Product Number)이란 특정 공급업체에서 별도로 분류하는 자재코드를 말한다.

예를 들어 우리가 구매하는 자재코드 BC10010(코코아)는 동일한 물성을 지닌 코코아지만, 이게 해당 공급업체 내에서는 조달유형에 따라 퀄리티가 달라지는 경우라고 생각해보자. 동일한 코코아라도 공급업체 내에서는 A등급과 B등급이 따로 있고 각각을 다른 자재코드로 관리한다면?

우리 입장에서는 A등급과 B등급을 각각 다른 자재코드로 관리하는 방법도 있지만, 그럴 필요 없이 MPN 코드로 별도 관리하는 방법도 있다.

이 경우 자재 마스터 구매 탭에서 생산자 프로파일을 설정하고, 소스 리스트에서는 해당 MPN 코드를 입력한다. 그러면 각각의 MPN 코드별로 구매정보레코드를 관리할 수 있고, 우리 원가계산 시에도 MPN 코드의 구매정보레코드 데이터를 가져다 사용하게 된다.

 

 

T-CODE: SE11(테이블 조회)

 

우리 예시 시스템에서는 MPN에 대한 세팅을 안 해놨기 때문에 일반 화면에서는 보여줄 수가 없었다. 대신 소스 리스트 테이블을 보면 필드 EMATN이 있는데 이게 바로 MPN 자재 코드다. 이렇게 MPN이 지정된 경우에는 구매정보레코드도 MPN을 기준으로 가져다가 쓰게 된다.

 

 

 


 

# 펑션 ME_SEARCH_SOURCE_OF_SUPPLY


지금까지 설명한 추출 규칙을 CBO로 구현하려면 어떻게 해야할까? 저 복잡한 로직대로 테이블을 추출해서 하나하나 코딩해야 할까? 다행히도 그럴 필요는 없다.

 

 

T-CODE: SE37(펑션 모듈 조회), 펑션: ME_SEARCH_SOURCE_OF_SUPPLY

 


SAP의 펑션 "ME_SEARCH_SOURCE_OF_SUPPLY"를 사용하면 된다. 다만 이 펑션은 사용자에게 공개하는 표준 BAPI는 아니므로 주의해서 사용할 필요는 있다.

 

 

T-CODE: SE38(ABAP 편집기), LCK21ROH

 

이 펑션은 T-CODE: CK11N이나 CK40N으로 표준원가 추정 시 호출되게 되어 있다. 해당 소스에 가서 스탠다드가 어떤 식으로 코딩했는지 참고해보고, CBO로 구성하자.

 

위 소스의 상단부를 살펴보면, 펑션 모듈의 파라메터를 어떤 식으로 구성하는지도 알 수 있다. 그걸 참고해서 개발하면 된다. 만약에 개발한 프로그램에서 결과가 잘못 나오면, 이 위치에 디버깅 포인트를 걸고 T-CODE: CK11N 등을 실행해서 뭐가 다른지 살펴보자.

 

이 펑션을 사용하면 현재 시스템이 어떤 환경이든, 해당 자재가 MPN이든 아니든 알아서 추출해주므로 굉장히 편하다. MPN 자재인 경우는 해당 MPN 자재코드도 리턴해준다.

다만 이 펑션은 이미 공급업체가 지정된 경우에는 쓸 수 없다. 예를 들어 Split Valuation 환경에서 공급업체가 특정된 조달대체에 대해서 원가계산을 할 경우에는, 이미 공급업체가 지정되어 있으므로 이 펑션을 타지 않는다. 그런 경우라면 해당 공급업체와 구매조직 정보를 갖고서 테이블 EINA, EINE에 있는 구매정보레코드를 직접 읽거나, "BAPI_INFORECORD_GETLIST" 등을 활용하면 된다.