SAP 위탁재고 정산 현황 — 재고는 있는데 채무는 언제 확정되나
위탁재고는 구매처 소유라 입고만으로는 채무가 잡히지 않습니다. 소비된 순간부터 정산 시점까지, 놓치기 쉬운 그 구간을 경과일수로 짚어내는 화면입니다.
위탁재고는 창고에 있어도 우리 회사 재고가 아닙니다. 구매처가 소유한 채로 우리 창고에 놓여 있다가, 비용센터나 생산오더로 소비되는 순간에야 소유권이 넘어오고 매입채무가 발생합니다. 문제는 그 소비 시점과 정산(MRKO) 실행 시점 사이에 시차가 생긴다는 점입니다.
재고 화면(MB54)만 보면 지금 얼마나 쌓여 있는지는 알 수 있지만, 이미 소비했는데 아직 정산하지 않은 수량이 얼마인지는 따로 계산해야 합니다. SAP 표준 위탁재고·정산 데이터 구조를 그대로 이어받아 이 구간을 경과일수 기준으로 자동 판정하도록 OpenUI5 화면으로 확장한 것이 ZLMM04000입니다. 실제 구동 화면 4종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 위탁재고 원천 —
MSKA(자유·품질검사·블록 재고 구분) - 위탁 조건단가 — 구매정보레코드(
EINA·EINE) - 소비 이력 — 자재문서(
MSEG, 이동유형 201/543) - 정산 이력 — 위탁/회수 정산(
MRKO) 실행 결과 - 거래처 텍스트 —
LFA1
| 항목 | 내용 |
|---|---|
| 업무 영역 | 구매관리(MM) · 위탁재고 정산 |
| Namespace | zui5.consign |
| 셸 구조 | 조회조건 영역(우측 조회) + 위탁재고 목록, 재고/소비/정산이력 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 Dialog |
| 대응 T-code | MB54(위탁재고 재고 조회) · MRKO(위탁/회수 정산) |
| 성격 | 조회·검증형 — 정산 실행 자체는 표준 MRKO가 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 4종 둘러보기
플랜트·구매처·자재 조건을 넣고 조회하면 정산대상·정산지연 위탁재고가 목록으로 뜹니다 → 행을 골라 재고 구성과 소비 이력을 확인하고 → 과거 정산 이력과 비교해 정산 우선순위를 판단합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 플랜트·구매처(코드/명)·자재(코드/명)·정산상태·경과일수 조건을 입력하거나 선택합니다. 텍스트 필드는 Enter 키로도 즉시 조회됩니다.
- 기본값은 "정산불요 건도 포함" 체크박스가 꺼진 상태로, 정산대상·정산지연 건만 우선 보여줍니다.
- [조회]·[초기화] 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
- 결과 테이블 각 행의 상세보기 아이콘을 누르면 재고/소비이력/정산이력 상세 다이얼로그가 열립니다.
- 하단 [CSV 다운로드] 버튼으로 현재 조회 결과를 UTF-8 BOM CSV 파일로 받을 수 있습니다.
정산상태 자동 판정 로직
MRKO 정산은 위탁재고 자체가 아니라 최종정산일 이후 소비(비용센터 소비출고 201 / 생산오더 소비출고 543)된 수량을 매입채무로 확정하는 절차입니다. 이 화면은 그 시점을 놓치지 않도록 아래 3단계로 정산상태를 자동 판정합니다.
| 조건 | 정산상태 | 의미 |
|---|---|---|
| 최종정산일 이후 소비수량 = 0 | 정산불요 | 아직 정산할 소비 실적이 없음 |
| 소비수량 > 0 이고 경과일수 < 30일 | 정산대상 | 월차 정산 주기 내로, 정상 대기중 |
| 소비수량 > 0 이고 경과일수 ≥ 30일 | 정산지연 | 정산 주기를 넘겨 매입채무 확정이 밀린 상태 |
경과일수 = 기준일(오늘) − 최종정산일. 정산대상금액 = 소비수량 × 위탁 조건단가(정보레코드 조건가격, Netpr / Peinh)입니다.
위탁재고 처리 단계 (입고 → 소비 → 정산)
위탁재고가 매입채무로 확정되기까지는 네 단계를 거칩니다. 이 화면은 세 번째와 네 번째 단계 사이의 시차를 경과일수로 짚어냅니다.
| 단계 | 내용 |
|---|---|
| ① 위탁입고(101) | 구매처 소유 상태로 자사 창고에 입고. 회계적으로는 아직 자사 재고·부채가 아닌 오프밸런스 재고 |
| ② 재고 보유 | 자유재고/품질검사재고/블록재고로 구분 관리. 이 중 자유재고만 소비 가능 |
| ③ 소비출고(201/543) | 비용센터·생산오더로 소비되는 순간 소유권이 구매처 → 자사로 이전되며, 이 수량이 정산 대상이 됨 |
| ④ MRKO 정산 실행 | 정산 주기(통상 월 1회)마다 소비수량을 모아 매입채무로 확정하고 정산문서를 발행. 이 화면의 "최종정산일"이 갱신되는 시점 |
조회조건
| 필드 | 설명 |
|---|---|
| 플랜트 | 위탁재고가 보관된 플랜트 |
| 구매처(코드/명) | 위탁 공급 구매처 코드 또는 명칭 텍스트 검색 |
| 자재(코드/명) | 위탁 자재 코드 또는 자재명 텍스트 검색 |
| 정산상태 | 전체 · 정산대상 · 정산지연 · 정산불요 |
| 경과일수 | 전체 · 14일 이상 · 30일 이상 · 45일 이상 |
| 정산불요 건도 포함 | 기본 꺼짐(정산대상·정산지연만 표시) |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 자재 | 자재코드 + 자재명 |
| 구매처코드 · 구매처명 | 위탁 공급 구매처 |
| 플랜트 · 저장위치 | 재고 보관 위치 |
| 위탁재고합계 | 자유 + 품질검사 + 블록 재고 합계 |
| 검사/블록 재고 | 사용 불가능한 재고 내역(0이면 "-") |
| 정산대상소비 | 최종정산일 이후 소비수량 |
| 정산대상금액 | 정산대상소비 × 위탁 조건단가 |
| 최종정산일 | 가장 최근 MRKO 정산 실행일 |
| 경과일수 | 기준일 − 최종정산일 |
| 정산상태 | 정산불요 · 정산대상 · 정산지연 뱃지 |
SAP 표준 기능 매핑
이 화면은 위탁재고 정산 실행을 대체하지 않습니다. 표준 실행은 MRKO가 담당하고, 이 화면은 조회·검증 관점을 더해 정산이 필요한 대상을 미리 걸러내는 확장입니다.
| 테이블 · 오브젝트 | 역할 |
|---|---|
MSKA | 위탁재고 — 플랜트 · 저장위치 · 자재 · 구매처별 자유/품질검사/블록 재고 |
LFA1 | 구매처 마스터 텍스트 |
EINA · EINE | 구매정보레코드 — 위탁 조건단가 |
MSEG(이동유형 201/543) | 소비출고 이력 — 최종정산일 이후 합계가 정산대상 수량 |
MRKO | 위탁/회수 정산 실행 및 이력 |
도입 시 확인이 필요한 부분
정산 주기(경과일수 임계값)는 회사·구매처 계약 조건에 따라 다르므로 고정값으로 두지 않고 설정 가능하게 열어 둡니다. 위탁 조건단가도 정보레코드 조건 변경 이력에 따라 시점별로 달라질 수 있어, 실제 도입 시에는 소비 시점 기준 단가 적용 규칙을 함께 정의합니다.
참고 CDS 뷰
운영 서비스로 연결할 때는 재고와 구매처·조건단가를 붙인 뷰로 서빙하는 구성을 제안합니다.
@AbapCatalog.sqlViewName: 'ZLMM0100'
@EndUserText.label: '위탁재고 정산 현황'
define view ZL_I_ConsignSettleStatus
as select from mska as Stock
left outer join lfa1 as Vendor on Vendor.lifnr = Stock.lifnr
left outer join eine as Info on Info.lifnr = Stock.lifnr
and Info.matnr = Stock.matnr
{
key Stock.werks,
key Stock.lgort,
key Stock.matnr,
key Stock.lifnr,
Stock.labst as StockFree,
Stock.insme as StockInsp,
Stock.speme as StockBlocked,
Vendor.name1,
Info.netpr,
Info.peinh
// 최종정산일 · 소비수량은 MRKO 이력 + MSEG(201/543) 집계 뷰에서 결합
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 위탁계약 조건과 정산 주기에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.f.DynamicPage — 헤더에 조회조건 · 메시지스트립, 콘텐츠에 결과 테이블 |
| 조회조건 | sap.ui.layout.form.Form + ResponsiveGridLayout, 조회 버튼은 우측 끝 |
| 결과 테이블 | sap.ui.table.Table — 컬럼 11개, 정산상태별 행 하이라이트 |
| 상세 | sap.m.Dialog 내 재고/소비이력/정산이력/산출근거 4종 sap.m.Table |
| 포맷 | 수량 · 금액 · 일자 · 정산상태 아이콘/색상 포맷터 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment |
Component.js | 디바이스 모델 초기화 · 라우터 |
manifest.json | 앱 디스크립터 — 앱 ID(zui5.consign) · ko 로케일 |
view/Main.view.xml · view/fragments/* | 조회화면 + 결과 테이블 + 상세 Dialog |
controller/Main.controller.js | 조회 · 정산상태 필터링 · 상세 드릴다운 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 수량 · 금액 · 일자 · 정산상태 포맷 |
localdata/consignstock.json 외 4종 | 위탁재고 · 소비이력 · 정산이력 검증용 데이터 |
검증 결과
화면 구성에 쓴 데이터는 위탁재고 15건 · 소비이력 29건 · 과거 정산이력 30건입니다.
| 검증 항목 | 결과 |
|---|---|
| 위탁재고합계 = 자유 + 품질검사 + 블록 재고 | 통과 |
| 정산대상금액 = 정산대상소비 × 위탁 조건단가 | 통과 |
| 경과일수 = 기준일 − 최종정산일 | 통과 |
| 정산상태 판정(정산불요/정산대상/정산지연) 규칙 일치 | 통과 |
| 최종정산일 이후 소비 이력 합계 = 정산대상소비수량 | 통과 |
| 조회 버튼 조회조건 영역 우측 배치 · Enter 키 조회 동작 | 통과 |
적용 테마 sap_horizon 확인 | 통과 |
| 화면 렌더링 — 실브라우저에서 조회 → 상세 다이얼로그 실동작 후 캡처 | 4/4 |
구매처 · 자재 · 금액은 모두 검증용 데이터입니다.
자주 묻는 질문
위탁재고 자체 평가액이 아니라 소비수량만 정산대상으로 보는 이유는?
위탁재고는 소비되기 전까지 구매처 소유의 오프밸런스 재고입니다. 회계적으로 의미 있는 정산 대상은 이미 소비되어 소유권이 이전된 수량이며, 보유 재고 자체는 참고용으로만 표시합니다.
경과일수 30일 기준은 왜 고정인가요?
통상적인 월차 정산 주기(30일)를 기본 임계값으로 사용했습니다. 회사·구매처별 정산 주기가 다르면 경과일수 필터(14/30/45일)로 조정해 조회할 수 있습니다.
품질검사·블록재고도 소비될 수 있나요?
아니오. 자유재고만 소비(출고) 가능하며, 품질검사·블록재고는 재고 총량 참고용으로만 표시합니다.
SAP 표준 기능과 어떻게 이어지나요?
위탁재고 조회는 MB54, 정산 실행은 MRKO가 표준 기능으로 담당합니다. 이 화면은 그 사이에서 정산이 필요한 대상을 경과일수 기준으로 미리 걸러내는 조회·검증 관점을 더한 것입니다.