SAP 재고자산 원가흐름 가정 점검 — IAS 2, 같은 재고에 다른 단가가 붙어 있지 않은지 먼저 본다
자재마다 설정된 가격결정 방식이 재고군 안에서 일관되는지, 후입선출법이 섞여 있지 않은지, 재고 증감이 맞는지 원장 데이터로 먼저 확인해 둡니다
재고의 매출원가와 기말 재고금액은 어떤 원가결정방법을 쓰느냐에 따라 달라집니다. IAS 2 재고자산(K-IFRS 제1002호)은 개별법을 쓸 수 없는 재고에 선입선출법이나 가중평균법을 쓰도록 하고, 성격과 용도가 유사한 재고에는 같은 방법을 적용하도록 요구합니다. 그런데 SAP 에서는 원가결정방법이 자재마다 가격결정 방식으로 설정되기 때문에, 같은 재고군 안에서 설정이 어긋나도 좀처럼 눈에 띄지 않습니다.
표준 자재 평가·재고·원장 구조를 그대로 이어받아 품목별 원가결정방법과 전기 방법을 나란히 놓고, 재고군별 방법 혼재·후입선출법 설정·방법 변경을 가려내며 재고 수량·금액의 증감을 대사하는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 자재 평가 — 평가 데이터(
MBEW)의 가격결정 방식·단가·재고금액을 그대로 사용 - 재고 이동 — 자재 문서(
MATDOC)의 입고·출고 수량과 금액을 그대로 집계 - 표준 화면 — 자재 마스터(MM03) · 창고별 재고(MB52) · 기간별 재고(MB5B) · 자재 원가 분석(CKM3N)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 재고자산 |
| 관련 기준서 | IAS 2 재고자산(K-IFRS 제1002호) — 원가결정방법(선입선출법·가중평균법·개별법)과 표준원가법의 적용, 성격·용도가 유사한 재고자산에 대한 동일 방법 적용 |
| Namespace | zui5.costflow |
| 셸 구조 | 조회조건 영역(우측 조회) + 재고 증감 대사 요약 + 재고 품목 명세·재고군별·원가결정방법별·플랜트별·점검 예외 5개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | MM03 · MB52 · MB5B · CKM3N · FAGLL03(§7 참고) |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 원가결정방법 변경과 재고 평가 전표는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
회사코드·회계연도를 넣고 조회하면 재고 증감 대사 요약과 품목 명세가 한 화면에 뜹니다 → 탭을 옮겨 재고군별·방법별·플랜트별 집계를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 넣습니다. 재고군·자재·판정 상태는 비워 두면 전체가 조회됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 재고 증감 대사 요약에서 방법 혼재 재고군 수와 기초·입고·매출원가·기말 재고, 증감 차이를 먼저 확인합니다.
- 탭을 옮겨 가며 재고 품목 명세 → 재고군별 → 원가결정방법별 → 플랜트별 → 점검 예외 순으로 좁혀 봅니다.
- 행을 누르면 그 품목의 수량·금액 증감과 전기 방법이 상세 다이얼로그로 열립니다.
- 재고 품목 명세와 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.
같은 재고, 같은 방법 — 원가결정방법 일관성 규칙
판정은 두 갈래입니다. 원가결정방법이 기준서가 허용하는 방법이고 유사한 재고 안에서 일관되게 쓰였는가, 그리고 재고 수량·금액의 증감이 맞는가입니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 선입선출법·가중평균법·개별법, 또는 실제원가에 근사한 표준원가법 | 정상 | 별도 조치가 없습니다. |
| 같은 재고군 안에서 선입선출·가중평균·표준원가가 섞여 쓰였다 | 점검 필요 | 성격·용도가 정말 다른 재고인지, 설정 누락인지 확인합니다. |
| 개별법이 쓰인 품목 | 혼재 판정 제외 | 서로 바꿔 쓸 수 없는 재고라면 개별법이 맞습니다. 대상 여부만 확인합니다. |
| 후입선출법이 설정돼 있다 | 점검 필요 | 원가결정방법 설정을 확인합니다. |
| 기초 + 입고 − 매출원가 ≠ 기말금액 | 점검 필요 | 재고 평가·차이 배부 전표 누락 여부를 확인합니다. |
| 전기와 원가결정방법이 달라졌다 | 확인 필요 | 회계정책 변경으로 처리했는지 확인합니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시이며, 기준서 충족 여부를 단정하지 않습니다. 재고군 안의 품목이 정말 성격·용도가 유사한지, 표준원가가 실제원가에 근사하는지는 회사가 판단합니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
방법 확인에서 증감 대사까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 품목별 원가결정방법과 전기 방법을 확인한다 — Method · PrevMethod |
| 2단계 | 재고군마다 비교 대상 방법 수를 센다 — 개별법·후입선출 제외 방법 수 > 1 → 혼재 |
| 3단계 | 수량 증감을 대사한다 — 기초 + 입고 − 출고 = 기말 |
| 4단계 | 금액 증감을 대사한다 — 기초 + 입고 − 매출원가 = 기말금액 |
| 5단계 | 단가와 집계를 대사한다 — 단가 = 기말금액 ÷ 기말수량 / Σ명세 = 재고군별 = 방법별 = 플랜트별 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 회계연도 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 재고군 | 선택 | 비우면 전체입니다. 빈 값은 $filter 에 넣지 않습니다. |
| 자재 | 선택 | 한 품목만 좁혀 볼 때 씁니다. |
| 판정 상태 | 선택 | 전체 / 정상 / 점검 필요 / 확인 필요 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 재고 증감 대사 요약 | 품목 수 · 재고군 수 · 방법 혼재 재고군 · 기초 재고 · 당기 입고 · 매출원가 · 기말 재고 · 증감 차이 · 예외 건수 |
| 재고 품목 명세 | 재고번호 · 자재 · 자재명 · 재고군 · 플랜트 · 원가결정방법 · 전기 방법 · 기초금액 · 입고금액 · 매출원가 · 기말금액 · 기말수량 · 단가 · 판정 |
| 재고군별 집계 | 재고군 · 품목 수 · 방법 수 · 대표 방법 · 기말금액 |
| 원가결정방법별 집계 | 원가결정방법 · 품목 수 · 매출원가 · 기말금액 · 구성비 |
| 플랜트별 집계 | 플랜트 · 품목 수 · 기초금액 · 입고금액 · 매출원가 · 기말금액 |
| 점검 예외 | 예외번호 · 자재 · 예외 유형 · 내용 · 차이 · 중요도 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 원가결정방법 적용 관점의 조회·검증을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
MM03 | 자재 마스터 조회 | 자재별 가격결정 방식을 원가결정방법으로 가져옵니다 |
MB52 | 창고별 재고 조회 | 기말 수량·금액을 품목별로 대사합니다 |
MB5B | 기간별 재고 조회 | 기초·입고·출고·기말 증감을 대사합니다 |
CKM3N | 자재 원가 분석 | 실제원가 대비 표준원가 차이를 참고로 봅니다 |
FAGLL03 | G/L 개별항목 조회 | 매출원가·재고 계정 금액을 집계와 대사합니다 |
IFRS 요구사항 매핑표
| 기준서 | 요구사항 | 이 화면의 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IAS 2 (K-IFRS 제1002호) | 개별법 적용 대상이 아닌 재고의 원가는 선입선출법 또는 가중평균법으로 결정 | 원가결정방법별 집계와 후입선출법 설정 검출 | MBEW · MARA | 개별법 대상 여부 판단은 사용자 몫입니다. |
| IAS 2 (K-IFRS 제1002호) | 성격과 용도가 유사한 재고자산에는 동일한 원가결정방법 적용 | 재고군별 방법 수 산출과 혼재 검출 | MARA · MBEW | 재고군 구분이 유사성 판단을 대신하지 않습니다. |
| IAS 2 (K-IFRS 제1002호) | 표준원가법은 그 결과가 실제원가와 비슷할 때 편의상 사용 | 표준원가법 품목 표시와 원가 분석 연계 | MBEW · ACDOCA | 근사 여부 판단은 사용자 몫입니다. |
| IAS 8 (K-IFRS 제1008호) | 원가결정방법의 변경은 회계정책 변경 | 전기 대비 방법 변경 품목 검출 | MBEW | 소급 적용 여부는 화면 밖 절차입니다. |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
MBEW | MATNR · BWKEY · VPRSV · VERPR · STPRS · LBKUM · SALK3 | 가격결정 방식·단가·수량·금액 |
MARA | MATNR · MATKL · MTART | 재고군(자재그룹)·자재유형 |
MATDOC | MATNR · WERKS · BWART · MENGE · DMBTR | 입고·출고 수량과 금액 |
ACDOCA | RBUKRS · GJAHR · RACCT · HSL | 매출원가·재고 계정 |
T001W | WERKS · NAME1 | 플랜트 표기 |
define view entity ZC_CostFlowItem
as select from I_ProductValuationBasic as pv
inner join I_Product as pr on pr.Product = pv.Product
{
key pv.Product as Matnr,
key pv.ValuationArea as Werks,
pr.ProductGroup as MatGroup,
pv.InventoryValuationProcedure as Method,
pv.MovingAveragePrice as UnitCost,
pv.Currency as Waers
}
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 5개 탭 |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 화면 블록마다 엔티티셋에 직접 바인딩합니다. 모델 설정은 useBatch:false · defaultBindingMode:"OneWay" · defaultCountMode:"Inline" |
| 조회조건 | sap.m.Input · sap.m.ComboBox — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다 |
| 정렬 · 페이징 | sap/ui/model/Sorter와 모델의 페이징 기능으로 처리 — 전체를 받아 화면에서 걸러내지 않습니다 |
| 명세·예외 표 | sap.ui.table.Table — 행 클릭 시 상세 다이얼로그 |
| 집계 표 | sap.m.Table — sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결 |
Component.js | 화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.costflow · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 5개 탭 |
view/DetailDialog.fragment.xml | 상세 내역 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액 · 비율 · 상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 13개 품목 기준으로 재고 수량·금액의 증감이 원(KRW) 단위로 정확히 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 수량 — 기초 + 입고 − 출고 = 기말 | 통과(차이 0) |
| 금액 — 기초 + 입고 − 매출원가 = 기말 | 통과(의도적 예외 제외 차이 0) |
| 단가 = 기말금액 ÷ 기말수량 | 통과(차이 0) |
| 재고군별 집계 = 명세 집계 | 통과(차이 0) |
| 원가결정방법별 집계 = 명세 집계 | 통과(차이 0) |
| 플랜트별 집계 = 명세 집계 | 통과(차이 0) |
| 재고군별 비교 대상 방법 수 = 명세 기준 | 통과(차이 0) |
| 방법별 구성비 합계 = 100% | 통과(차이 0) |
| 대사 요약행 = 실제 집계 결과 | 통과(차이 0) |
| 금액 차이 건 = 예외 등록 건 | 통과(의도적 예외 제외 차이 0) |
| 확인 대상 건 안내 | 증감 불일치 1건 · 재고군 내 방법 혼재 1건 · 후입선출법 1건 · 전기 대비 방법 변경 1건(의도적으로 구성한 케이스) |
| 조회 조건 전달 — 13건 → 3건 필터 · top 3 · 내림차순 정렬 · __count 13 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 6/6 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 기준서 충족 여부인가요?
아닙니다. 이 화면은 원가결정방법 적용 현황과 재고 증감을 집계·대사해 확인이 필요한 건을 가려내는 점검 도구입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
적용 시기와 범위는 어떻게 되나요?
IAS 2 재고자산(K-IFRS 제1002호)은 이미 시행 중인 기준서입니다. 원가결정방법은 한 번 정하면 계속 적용하는 것이 원칙이지만, 신규 자재가 등록되거나 가격결정 방식이 바뀔 때마다 설정이 어긋날 수 있어 결산마다 점검할 대상입니다.
같은 재고군 안에서 방법이 다르면 무조건 문제인가요?
아닙니다. 기준서가 요구하는 것은 성격과 용도가 유사한 재고에 같은 방법을 쓰는 것입니다. 화면의 재고군은 자재그룹 기준이라, 같은 재고군이라도 성격이 다른 품목이 섞여 있을 수 있습니다. 화면은 혼재를 확인 대상으로 알릴 뿐이며, 유사성 판단은 회사가 합니다.
표준원가법을 쓰는 품목은 어떻게 보나요?
표준원가법은 그 결과가 실제원가와 비슷할 때 편의상 쓸 수 있습니다. 화면은 표준원가법 품목을 방법별 집계에서 따로 보여주며, 실제원가와 얼마나 차이 나는지는 자재 원가 분석(CKM3N) 등 원가 차이 자료로 함께 확인하는 것이 좋습니다.