SAP 재고자산 평가조정 현황 — 단가를 바꾸면 재고가 얼마나 움직이나
표준원가 가격변경에 따른 재고 평가차액을 자재별로 계산하고, 재고자산과 평가손익 계정 반영을 확인하는 화면입니다.
표준원가를 쓰면 재고 금액은 단가 × 수량으로 정해집니다. 그래서 단가를 바꾸는 순간 창고에 있는 물건은 그대로인데 장부 금액이 달라집니다.
그 차액은 평가이익이나 평가손실로 손익에 바로 들어갑니다. 단가 변경 한 번이 수억 원의 손익을 만들 수 있어 사전 확인이 필요합니다. 표준 가격변경 구조를 그대로 이어받아 자재별 차액을 계산해 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 자재 마스터 — 자재코드(
Matnr) · 명칭 · 자재유형(Mtart) · 평가클래스(Vklas) - 가격 관리 — 가격통제(
PriceControl) S 표준원가 / V 이동평균 - 단가 — 현재 단가(
CurrentPrice)와 가격단위(PriceUnit) - 플랜트 —
Werk단위 재고 평가 - 재고 수량 — 평가 대상 재고량
| 항목 | 내용 |
|---|---|
| 대응 T-code | MR21 (가격변경) · CKM3 · MB5B |
| 업무 영역 | 재무회계(FI) · 관리회계(CO) · 재고 평가 |
| Namespace | zui5.stockreval |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 평가조정 목록, 행 선택 시 전표 상세 |
| 화면 수 | 조회 화면 1개 + 전표 상세 |
| 데이터 | 자재 14건 · 평가조정 65건 |
| 성격 | 조회형(Read-Only) — 가격변경 전기는 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·플랜트·자재유형으로 조회하면 가격변경 내역이 나옵니다 → 변경 전후 단가와 평가차액을 확인하고 → 행을 눌러 재고자산·평가손익 계정 반영을 검증합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 플랜트를 고릅니다. 플랜트마다 단가가 다를 수 있습니다.
- 자재유형과 평가클래스로 원재료·제품 등을 나눕니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 평가차액이 큰 자재부터 봅니다. 손익 영향이 큰 건입니다.
- 재고 수량이 0인 자재는 단가를 바꿔도 차액이 없습니다.
- 행을 선택하면 계정 반영 내역이 열립니다.
- 결과는 CSV 다운로드로 내려받아 원가 검토 자료로 씁니다.
평가차액 산식
단가 차이에 수량을 곱하면 손익이 나옵니다.
평가차액 = (변경 후 단가 − 변경 전 단가) × 재고 수량 ÷ 가격단위
평가차액 > 0 → 평가이익 — 재고자산 증가
평가차액 < 0 → 평가손실 — 재고자산 감소
회계처리
평가이익 차변: 재고자산 대변: 재고평가이익
평가손실 차변: 재고평가손실 대변: 재고자산
가격통제 S(표준원가)만 대상 — V(이동평균)는 입고 시 자동 조정
수량을 함께 봐야 하는 이유
단가가 20% 올라도 재고가 없으면 차액은 0입니다. 반대로 단가는 조금 올랐는데 재고가 많으면 금액이 커집니다. 단가 변동률만 보고 영향을 짐작하면 틀리므로, 수량과 차액을 같은 줄에 두어야 실제 손익 영향이 보입니다.
가격변경이 일어나는 네 가지 경우
| 경우 | 상황 | 영향 범위 |
|---|---|---|
| 연간 표준원가 재산정 | 새 회계연도 표준원가 확정 | 전 자재 일괄 변경 |
| 원자재 시세 급변 | 구매 단가가 크게 달라짐 | 해당 자재만 조정 |
| 원가 오류 정정 | 잘못 산정된 단가 수정 | 소급 영향 확인 |
| 신규 자재 단가 설정 | 최초 단가 입력 | 재고 없으면 차액 없음 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
플랜트 Werk | 필수 | 평가 단위 공장 |
자재 Matnr | 선택 | 자재코드·명칭 |
자재유형 Mtart | 선택 | ROH 원재료 · FERT 제품 등 |
평가클래스 Vklas | 선택 | 재고자산 계정 결정 기준 |
| 기간 | 선택 | 가격변경 전기일 From~To |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
플랜트 Werk · WerkText | 공장 코드와 명칭 |
자재 Matnr · Maktx | 자재코드와 명칭 |
자재유형 Mtart · MtartText | ROH 원재료 등 |
평가클래스 Vklas · VklasText | 계정 결정 기준 |
가격통제 PriceControl | S 표준원가 / V 이동평균 |
| 변경 전 단가 · 변경 후 단가 | 가격단위 기준 |
가격단위 PriceUnit · 단위 Meins | 단가 기준 수량 |
| 재고 수량 | 평가 대상 수량 |
| 평가차액 | 단가 차이 × 수량. 부호에 따라 상태 색 |
| 전표번호 · 전기일 | 가격변경 전표 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
MR21 | 자재 가격변경 | 변경 전후 단가와 차액을 목록으로 제시 |
CKM3 | 자재원장 조회 | 가격 이력과 평가 확인 |
MB5B | 재고 수불 | 평가 대상 수량 확인 |
MBEW | 자재 평가 데이터 — 단가 · 수량 | 조회 원천 |
MARA · MAKT | 자재 마스터와 명칭 | 자재 정보 |
T030 | 계정 결정 설정 | 평가클래스별 계정 |
도입 시 확인이 필요한 부분
자재원장(Material Ledger)을 쓰는 환경이면 가격변경 처리가 달라집니다. 표준원가와 실제원가가 따로 관리되고 기말에 차이를 배부하므로, 단순 가격변경 차액과는 다른 흐름이 됩니다. 평가클래스별 계정 결정도 설정을 읽어야 정확한 계정이 나옵니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCSTOCKREVAL'
@EndUserText.label: '재고자산 평가조정 (Z)'
define view Z_C_STOCK_REVALUATION
as select from mbew as Valuation
inner join mara as Material on Valuation.matnr = Material.matnr
left outer join makt as MatText on Valuation.matnr = MatText.matnr
and MatText.spras = 'K'
{
key Valuation.matnr as Matnr,
key Valuation.bwkey as Werk,
MatText.maktx as Maktx,
Material.mtart as Mtart,
Valuation.bklas as Vklas,
Valuation.vprsv as PriceControl,
Valuation.stprs as CurrentPrice,
Valuation.peinh as PriceUnit,
Valuation.lbkum as StockQty,
Valuation.salk3 as StockValue
// 평가차액 = (변경후 단가 − 변경전 단가) × 수량 ÷ 가격단위
// 가격 이력은 자재원장 또는 변경문서에서 가져와 결합
}
where Valuation.vprsv = 'S'
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 평가조정 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 조정 테이블 | sap.m.Table — 전후 단가를 인접 배치 |
| 차액 표시 | sap.m.ObjectNumber — 평가이익·손실 부호 색 |
| 상세 화면 | sap.m.Dialog — 계정 반영 차대 |
가격단위를 표시하는 이유
단가가 1개 기준인지 1,000개 기준인지에 따라 같은 숫자도 천 배 차이가 납니다. 가격단위를 빼고 단가만 보여 주면 차액 계산이 맞지 않는 것처럼 보입니다. 원가 담당자에게는 당연한 값이지만 재무 쪽에서 볼 때 혼동이 생기므로 열로 둡니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.stockreval) · ko 로케일 |
view/Main.view.xml | 조회조건과 평가조정 테이블 |
controller/Main.controller.js | 조회 · 평가차액 계산 · 계정 반영 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 단가 · 수량 · 차액 부호 포맷터 |
localdata/materials.json | 자재 14건 |
localdata/revaluations.json | 평가조정 65건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 평가차액 = (변경후 − 변경전) × 수량 ÷ 가격단위 (전 건) | 통과 |
| 계정 반영 차변 합계 = 대변 합계 | 통과 |
| 가격통제 S 인 자재만 대상 | 통과 |
| 재고 수량 0 인 자재는 평가차액 0 | 통과 |
| 자재·평가클래스 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
이동평균 자재는 왜 대상이 아닌가요?
이동평균은 입고할 때마다 단가가 자동으로 조정되기 때문입니다. 별도 가격변경 전표가 생기지 않으므로 평가조정 개념이 적용되지 않습니다.
평가손실이 크면 어떻게 하나요?
단가 산정 근거를 먼저 확인합니다. 원가 계산이 잘못됐다면 정정해야 하고, 실제 시세 하락이라면 손실 인식이 맞습니다. 금액이 크면 결산 전에 경영진 보고가 필요합니다.
자재원장을 쓰면 어떻게 달라지나요?
표준원가와 실제원가가 분리되고 기말에 차이를 배부합니다. 가격변경 차액이 바로 손익으로 가지 않고 배부 과정을 거치므로 흐름이 더 복잡해집니다.
SAP 표준 기능과 어떻게 이어지나요?
가격변경은 MR21 이 실행하고 평가 데이터는 표준 자재 평가 구조에 남습니다. 이 화면은 그 변경을 자재별 차액으로 계산해 보여 주고, 계정 반영까지 검증하는 확장입니다.