솔루션 홈
결산 지원

SAP 재고자산 Aging — 오래된 재고는 제값을 못 받는다

자재와 배치 단위로 재고 보유 기간을 재고, 장기재고 평가손실을 산출해 저장하는 화면입니다.

창고에 오래 있는 재고는 장부 금액만큼의 가치가 없습니다. 유행이 지났거나 품질이 떨어졌거나 아예 못 쓰게 됐을 수 있습니다.

회계는 이를 반영해 평가손실을 잡도록 요구합니다. 문제는 어느 재고가 얼마나 오래됐는지 배치 단위로 따져야 한다는 점입니다. 최종입고일 기준으로 재고일을 계산해 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 자재 — 자재코드와 내역 · 배치 번호
  • 플랜트 — 재고 보관 거점
  • 배치 정보 — 최종입고일(Batch Last G/R Date)
  • 재고 — 자가재고(배치재고)와 고객특별재고
  • 평가 — 기말단가와 평가율
항목내용
업무 영역재무회계(FI) · 결산 · 재고 평가
Namespacezui5.invaging
셸 구조조회조건 영역(우측 조회) + Aging 테이블 + 소계·총계
화면 수조회·저장 화면 1개 + 상세
데이터자재·배치별 재고와 평가 이력
성격산출·저장형 — Create 모드에서 재계산, 저장 후 조회
UI 테마sap_horizon 단일 적용

실제 화면 3종 둘러보기

회사코드·연도·월로 기준일을 정하고 재계산하면 배치별 재고일이 나옵니다 → 장기재고와 평가손실을 산출하고 → 결과를 저장해 이력으로 남깁니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

Main.view.xml
자재·배치별 Aging
자재·배치별 Aging — 자재·내역·배치번호·플랜트와 함께 최종입고일·재고일·평가율·총재고가 표시됩니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
평가손실
장기재고와 손실 계산
장기재고와 손실 계산 — 장기재고 수량·평가금액·평가손실·누적 평가손실·총 평가손실이 이어지고, 플랜트 소계와 총계 라인이 붙습니다.
저장
평가결과 저장 요약
평가결과 저장 요약 — 저장하면 건수·장기재고·손실 요약이 표시되고 이후 Edit·Display 모드로 조회됩니다.

조작 방법

  1. 회사코드·회계연도·월을 넣습니다. 해당 월 말일이 평가 기준일입니다.
  2. 자재플랜트로 범위를 좁힐 수 있습니다.
  3. 처리구분을 고릅니다. Create 는 재계산, Edit·Display 는 저장분 조회입니다.
  4. 조회 버튼은 조회조건 영역 오른쪽 끝에 있고, 입력필드에서 Enter 로도 조회됩니다.
  5. 재고일을 확인합니다. 최종입고일부터 기준일까지의 일수입니다.
  6. 평가율이 적용된 구간인지 봅니다. 180/365/730일 기준입니다.
  7. 플랜트 소계와 총계로 전체 규모를 확인합니다.
  8. 결과를 저장하면 평가 이력으로 남습니다.

평가 규칙

보유 기간이 길수록 높은 평가율이 적용됩니다.

재고일 = 기준일 − 배치 최종입고일 (0 미만이면 0)
총재고 = 자가재고(배치재고) + 고객특별재고

장기재고 = 평가율이 적용되는 구간이면 총재고 전량, 아니면 0
평가금액 = 장기재고 수량 × 기말단가
평가손실 = 평가금액 × 평가율

평가율 구간  180일 / 365일 / 730일 기준
총 평가손실 = 당기 평가손실 + 누적 평가손실

배치 단위로 보는 이유

같은 자재라도 배치마다 입고 시점이 다릅니다. 자재 단위로 평균을 내면 오래된 배치가 최근 입고분에 묻혀 장기재고로 잡히지 않습니다. 배치마다 최종입고일을 따져야 실제로 오래된 물량이 걸러집니다.

재고일 구간과 평가

재고일상태적용
180일 미만정상 회전 범위평가 대상 아님
180~365일회전 지연낮은 평가율
365~730일장기 보유높은 평가율
730일 초과사실상 불용최고 평가율

구간과 평가율은 평가율 테이블에서 관리합니다.

조회조건

항목필수설명
회사코드 / 회계연도 / 월필수대상 기간. 해당 월 말일이 평가 기준일
자재선택자재 범위
플랜트선택플랜트 범위 (화면 확장)
처리구분필수Create(재계산) / Edit · Display(저장분 조회)
소계·총계 표시선택SUBTOTAL / TOTAL 라인 (화면 확장)

결과 컬럼

컬럼의미 · 표시
Material · Description자재코드와 내역
Batch No.배치 번호
Plant보관 거점
Batch Last G/R Date배치 최종입고일
Storage Period재고일
평가율 · 기말단가손실 계산 기준 (화면 확장)
Total Stock총재고 = 자가 + 고객특별
Long-term Stocks장기재고 수량
Long-term stocks value평가금액
Loss from val.당기 평가손실
Accumulated loss from val.누적 평가손실
Total loss from val.총 평가손실
소계 · 총계플랜트 소계와 전체 총계

SAP 표준 기능 매핑

표준역할이 화면에서의 확장
MB52자재 재고 조회Aging 기준으로 재구성
MB5B기간별 재고입고 이력
MCHB · MCHBH배치 재고와 이력조회 원천
MSKU · MSKA고객특별재고 · 판매오더재고총재고 구성
MBEW · MBEWH자재 평가기말단가
ZTFIF1000 · ZTFIF1200Aging 이력 · 평가율저장과 기준

도입 시 확인이 필요한 부분

배치 관리를 쓰지 않는 자재는 최종입고일을 알 수 없습니다. 이 경우 자재 전체를 하나로 보거나 다른 기준을 써야 하는데, 정확도가 크게 떨어집니다. 평가 대상 자재가 배치 관리 대상인지 먼저 확인해야 합니다.

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZCINVAGING'
@EndUserText.label: '재고자산 Aging (Z)'
define view Z_C_INVENTORY_AGING
  with parameters p_keydate : dats
  as select from mchb as BatchStock
    left outer join mch1 as Batch   on BatchStock.matnr = Batch.matnr
                                  and BatchStock.charg = Batch.charg
    left outer join makt as MatText on BatchStock.matnr = MatText.matnr
                                  and MatText.spras = 'K'
    left outer join mbew as Value   on BatchStock.matnr = Value.matnr
                                  and BatchStock.werks = Value.bwkey
{
  key BatchStock.matnr as Material,
  key BatchStock.werks as Plant,
  key BatchStock.charg as Batch,
      MatText.maktx as Description,
      Batch.hsdat   as LastGrDate,
      BatchStock.clabs as UnrestrictedStock,
      Value.verpr   as UnitPrice
      // 재고일 = 기준일 − 최종입고일 (0 미만이면 0)
      // 평가율은 구간별 평가율 테이블에서 조회
      // 평가손실 = 장기재고 × 기말단가 × 평가율
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · Aging 테이블
조회조건sap.m.Select · sap.m.Input — 우측 끝에 조회
Aging 테이블sap.ui.table.Table — 플랜트 그룹, 소계·총계
평가율 표시구간별 적용 비율을 함께 표시
상세배치 선택 시 재고 구성과 손실 계산 과정 펼침
이벤트onPAI 단일 진입점, fcCode 로 분기

평가율과 기말단가를 화면에 둔 이유

평가손실 금액만 나오면 그 숫자가 어떻게 나왔는지 알 수 없습니다. 검증하려면 수량과 단가와 비율을 각각 확인해야 합니다. 계산에 쓰인 값을 모두 보여 주면 화면에서 바로 검산이 되고, 감사 대응 자료로도 그대로 쓰입니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.invaging) · ko 로케일
view/Main.view.xml조회조건과 Aging 테이블
controller/Main.controller.js재계산 · 평가손실 산출 · 저장 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
js/formatter.js수량 · 금액 · 일수 포맷터
localdata/invaging.json자재·배치별 재고
localdata/valrate.json평가율 기준

검증 결과

검증 항목결과
재고일 = 기준일 − 최종입고일 · 음수 없음통과
총재고 = 자가재고 + 고객특별재고통과
평가금액 = 장기재고 × 기말단가통과
평가손실 = 평가금액 × 평가율통과
플랜트 소계 합 = 총계통과
XML · JSON 전체 파싱오류 0건
화면 렌더링 — 실브라우저 재계산·저장 실동작 후 캡처3/3
테마 런타임 확인sap_horizon

자주 묻는 질문

왜 분기마다 하나요?

재고 평가는 결산 목적이라 분기 결산 주기에 맞춥니다. 매월 하면 부담이 크고 연 1회는 변동을 놓칩니다.

평가손실을 잡으면 되돌릴 수 있나요?

재고를 실제로 팔면 손실이 실현되고, 가치가 회복되면 환입할 수 있습니다. 다만 환입은 이전에 잡은 손실 범위 안에서만 가능합니다.

고객특별재고도 포함하나요?

포함합니다. 소유권이 우리에게 있으면 평가 대상입니다. 총재고에 자가재고와 함께 합산합니다.

SAP 표준 기능과 어떻게 이어지나요?

재고 수량과 단가는 표준 MM 이 관리합니다. 이 화면은 배치별 재고일을 계산해 평가손실을 산출하고 결과를 이력으로 저장하는 확장입니다.

재고 평가, 지금 쓰는 SAP 위에서 확장해 보세요

배치 단위로 보면 오래된 물량이 묻히지 않습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

재고자산 Aging장기재고평가손실배치재고일OpenUI5