관리회계

자재 사용량 차이 점검 — 관리회계, 생산오더의 표준 소요량과 실제 소비량을 허용 로스·스크랩 기록으로 가르고 원가 반영액까지 대사하는 월마감 화면

소비 라인별 사용량 차이 · 허용 로스 · 미설명 초과 · 과소 사용 · 원가 반영 대사 · 여덟 가지 대사식 — 소개 영상과 실제 화면 8종, 그리고 CDS 코드까지

소개 영상1분 15초8개 장면음성 안내 · 자막표지 → 처음 연 화면 → 조건 조회 → 자재별 집계 → 원가 반영 대사 → 행 클릭 상세 → 대사 결과 → 정리

도입 포인트 — 이 앱을 사용해야 하는 이유

매월 말, 원가 담당자는 같은 질문을 받습니다. “자재를 표준보다 얼마나 더 썼고, 그 초과는 정상 로스인가 새는 것인가?” 생산오더가 쓴 자재는 오더 구성품 소요, 자재 문서, 원가 개별 항목에 나뉘어 쌓이는데, 소요량 기준이 어디서 갈라졌는지, 초과분이 스크랩으로 기록되어 설명되는지, 원가에는 같은 금액이 들어갔는지를 확인하려면 오더, BOM, 불출 문서, 원가 전표를 차례로 열어 엑셀로 맞추게 됩니다.

이 앱은 그 맞춤 작업을 한 화면에 올립니다. 소비 라인마다 양품 생산수량 × 단위 소요량으로 표준 소요량을, 불출에서 반품을 뺀 값으로 실제 소비량을 구해 사용량 차이를 만들고, 표준 소요량에 허용 로스율을 곱한 허용 로스량과 견줍니다. 허용을 넘은 수량에서 스크랩 기록량을 뺀 미설명 초과량을 가려내고, 허용 하한보다 적게 쓴 과소 사용도 함께 찾습니다. 금액은 모두 표준 단가로 평가해 가격 차이가 섞이지 않은 수량 차이만 봅니다. 마지막으로 계산한 소비금액이 원가에 반영된 금액과 같은지 월·원가요소별로 대사합니다.

한 줄 요약 — 생산오더가 자재를 표준에서 얼마나 벗어나 썼는지, 그 초과가 허용 로스와 스크랩 기록으로 설명되는지, 원가에 빠짐없이 반영됐는지를 여덟 가지 대사식으로 검산하면서 한 화면에서 확인합니다.

오더도 BOM 도 있는데 사용량 차이는 따로 계산하게 된다

표준 화면은 생산오더의 구성품 소요, BOM 의 단위 소요량, 자재 문서의 불출·반품, 오더 원가 분석을 각각 보여 줍니다. 네 화면의 숫자가 왜 다른지는 결국 사람이 맞춰 봐야 합니다. 이 앱은 표준 소요량 + 사용량 차이 = 실제 소비량, 허용 초과량 = 스크랩으로 설명된 수량 + 미설명 수량이라는 두 줄의 식으로 이를 이어 붙이고, 소비 라인 360건 전부에 매번 같은 식을 적용합니다.

합계에서는 사용량 차이가 묻힌다

이 표본의 6개월 합계로 보면 실제 소비금액 1,390.2백만 원이 표준 1,382.3백만 원보다 7.9백만 원(+0.57%) 많을 뿐입니다. 평균만 보면 “대체로 괜찮다”입니다. 그러나 소비 라인으로 쪼개면 사용량 차이율이 -11.26%에서 +16.31%까지 벌어져 있고, 허용 초과 6.8백만 원과 과소 사용 -3.2백만 원이 서로 상쇄해 합계를 작게 만들고 있었습니다. 제품 × 월로 보면 1월 도장 외판의 자재원가 차이율은 +3.72%로 한도 ±1.50%를 두 배 넘습니다.

스크랩으로 설명되는 초과와 설명되지 않는 초과는 다르다

허용 로스를 넘겨 썼더라도 스크랩으로 기록됐다면 설명이 되는 초과입니다. 이 표본에서 허용 초과 금액 6.8백만 원 가운데 3.5백만 원은 스크랩 기록으로 설명되고, 나머지 3.4백만 원(소비 라인 27건)이 설명되지 않은 초과입니다. 둘을 섞어 보면 점검할 곳이 두 배로 늘어나므로 이 앱은 허용 초과량을 스크랩으로 설명된 몫과 미설명 몫으로 갈라 보여 줍니다.

덜 쓴 라인도 점검 대상이다

초과만 찾는 점검은 절반만 보는 것입니다. 표준보다 한참 덜 썼다면 미불출이나 대체 자재 사용, BOM 소요량 오류일 수 있고, 다음 달에 한꺼번에 불출되어 차이가 이월되기도 합니다. 이 표본에서는 20개 라인이 허용 하한보다 적게 소비됐고 가장 큰 라인은 -11.26%입니다. 금액으로는 -3.19백만 원이어서 초과 점검만으로는 보이지 않던 곳입니다.

원가 반영액이 계산액과 다른 달을 따로 찾아야 한다

불출이 맞아도 원가에 반영된 금액이 다를 수 있습니다. 이 표본에서는 18개 월 × 원가요소 가운데 네 곳에서 반영액이 계산액과 달랐고, 가장 큰 것은 1월 원재료비 -84,449원입니다. 원인을 단정할 수는 없지만, 어느 생산오더에서 어긋났는지까지 한 화면에서 좁혀 줍니다.

조회만 되는 리포트는 금방 안 열린다

숫자만 보여 주고 끝나는 리포트는 이상한 숫자를 만나는 순간 멈춥니다. 이 앱은 월 → 자재·제품 → 소비 라인으로 한 단계씩 내려가고, 표의 행을 누르면 상세 창이 열려 계산 과정을 보여 주며, 현재 탭의 결과를 CSV 로 내려받을 수 있습니다.

사용 방법

  1. 조회조건 입력 — 회계연도(필수, 4자리)를 확인하고 필요하면 전기 월 시작·종료, 자재, 제품, 점검 결과를 고릅니다. 비워 두면 전체입니다.
  2. 조회 — 조건 줄 오른쪽 끝의 조회 버튼을 누르거나 입력 칸에서 Enter 를 누릅니다. 화면을 처음 열 때 한 번 자동 조회됩니다.
  3. 요약 확인 — 위쪽 타일에서 실제·표준 소비금액, 사용량 차이 금액, 허용 초과·미설명 초과 금액, 점검 필요 건수를 봅니다.
  4. 탭 이동 — 자재 사용량 명세 → 자재별 집계 → 제품별 집계 → 원가 반영 대사 → 월별 추이 → 대사 결과 순서로 넓은 범위에서 근거까지 오갑니다.
  5. 행 클릭 상세 — 표의 행을 누르면 상세 창이 열려 그 행의 값과 소비 라인 목록을 보여 줍니다.
  6. CSV 내려받기 — 현재 탭의 조회 결과를 UTF-8 CSV 로 내려받습니다.

숫자를 믿을 수 있는가 — 검증 결과

화면이 보여 주는 숫자가 서로 맞는지는 화면 안의 대사 결과 탭에서 검산합니다. 정합성 식 일곱 가지(R01~R07)를 총 1,458건 검사해 차이 0건이었고, 여덟 번째 식(R08)은 원가 반영 차이를 일부러 넣은 4건을 별도로 보여 줍니다. 점검 필요로 표시되는 건수는 의도적으로 기준을 벗어나게 넣은 값이며 대사 차이와는 다릅니다.

번호대사식검사 건수차이 건수
R01표준 소요량 + 사용량 차이 = 실제 소비량3600
R02실제 소비량 = 불출수량 − 반품수량3600
R03표준 금액 + 사용량 차이 금액 = 실제 소비 금액3600
R04허용 초과 수량 = 스크랩으로 설명된 수량 + 미설명 수량3600
R05자재별 합계 = 라인 합계(월별 실제 소비 금액)60
R06제품별 합계 = 월 합계(월별 사용량 차이 금액)60
R07월별 합계 = 라인 합계(월별 실제 소비 금액)60
R08계산액(실제 소비 금액) = 원가 반영액3604(의도적 예외)
의도적 예외(점검 필요)건수내용
소비 라인51미설명 초과 27건 · 과소 사용 20건 · 원가 반영 차이 4건
자재 × 월5집계 차이율이 허용 로스율 초과
제품 × 월6자재원가 차이율 ±1.50% 초과
원가 반영 대사4월·원가요소별 반영액이 계산액과 다름
월4월 안에 반영 차이가 있거나 월 차이율 ±1.00% 초과

스크랩으로 설명된 초과 라인 36건은 정상으로 표시되는 대조용 건이며, 점검 필요 건수에 들어가지 않습니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤SAP Horizon 테마의 OpenUI5 1.120 — 탭 · 표(sap.ui.table) · 요약 타일 · 상세 창표준 Fiori 화면과 같은 모양이라 사용자가 새로 익힐 것이 적습니다
데이터 연결OData V2 서비스 모델 — manifest 에 선언한 상대 경로에 바인딩운영 서비스로 바꿀 때 화면 코드를 고치지 않고 서비스 주소만 바꿉니다
집계·판정 로직데이터 서비스 쪽 계산 — 화면은 받은 값을 그대로 보여 줍니다화면·CSV·분석 쿼리가 같은 숫자를 쓰게 하기 위해서입니다
검증용 데이터가상 제조 회사의 2026년 1~6월 샘플(오더 120 · 자재 12 · 소비 라인 360)실제 고객사 값 없이 모든 대사식을 전수로 돌려 보기 위해서입니다
앱 정보
업무 영역관리회계 — 제조원가 분석(자재 사용량 차이)
관련 기준서·대상 영역관련 기준서 없음 · 대상 영역 제조원가 분석(자재 사용량 차이)
표준 T-codeCO03 · COOIS · CS03 · MB51 · MIGO · KKBC_ORD · CK13N · KOB1 · FAGLL03
화면 성격조회·점검 (최종 판단은 회사와 감사인)
테마sap_horizon
SAP 표준 기능을 그대로 이어받은 부분 — 생산오더와 구성품 소요(PP), BOM, 자재 문서(MM), 원가 개별 항목(CO)의 구조는 표준 데이터 구조를 그대로 이어받습니다. 이 화면은 거기에 표준 소요량과 실제 소비량의 차이를 허용 로스·스크랩 기준으로 가르고 원가 반영액과 견주는 조회·검증 관점을 더해 확장합니다.

실행 화면

아래 화면은 가상의 제품 5종(알루미늄 방열판 · 철제 프레임 · 제어반 조립체 · 수지 하우징 · 도장 외판)과 자재 12종, 가상의 표준단가로 만든 검증용 샘플 데이터(2026년 1~6월)를 실제로 조회한 모습입니다. 생산오더 120건, 소비 라인 360건이며 실제 고객사 값이 아닙니다.

처음 열었을 때와 조건 조회

처음 열었을 때 한 번 자동 조회되고, 조건을 바꿔 다시 조회하는 흐름입니다.

처음 열었을 때
처음 열었을 때 — 조회조건 · 요약 지표 · 자재 사용량 명세 표가 한 화면에 보입니다.

열면 자동으로 한 번 조회됩니다. 맨 위 조회조건은 회계연도 · 전기 월 시작/종료 · 자재 · 제품 · 점검 결과 다섯 칸이고 기본값은 2026년 전체입니다. 요약 타일은 실제 소비금액 1,390.2 · 표준 소비금액 1,382.3 · 사용량 차이 금액 +7.9 · 허용 초과 금액 6.8 · 미설명 초과 금액 3.4(이상 백만 원)와 점검 필요 소비 라인 51건을 보여 줍니다. 명세 표는 소비 라인 360행이고, 표준 소요량 · 허용 로스량 · 실제 소비량 · 사용량 차이 · 미설명 초과 · 점검 결과가 한 줄에 놓입니다.

조건 조회
조건 조회 — 점검 결과를 ‘점검 필요’로 고르고 Enter 로 조회한 모습입니다.

조회조건은 입력 칸에서 Enter 를 누르거나 오른쪽 끝의 조회 버튼을 누르면 서비스로 전달됩니다. 점검 결과를 점검 필요로 고르면 명세 탭이 51행으로 줄고, 요약 타일도 같은 범위로 다시 계산됩니다. 점검 결과를 비우면 다시 360행입니다. 조회 버튼 옆의 초기화는 조건을 기본값으로 되돌립니다.

자재에서 제품으로 — 차이가 어디서 났는지

자재 기준으로 허용 로스율과 차이율을 견주고, 같은 차이가 어느 제품의 원가로 이어졌는지 봅니다.

자재별 집계
자재별 집계 — 자재 × 월마다 사용량 차이율과 허용 로스율을 견줍니다.

자재 12종 × 6개월 72행입니다. 자재마다 허용 로스율이 다르므로 같은 +5%라도 냉연 강판(3.0%)에서는 한도 초과이고 분체도료(5.0%)에서는 한도 근처입니다. 집계 차이율이 허용 로스율을 넘은 행은 5개로, 1월 냉연 강판(+5.05% 대 3.0%) · 3월 ABS 수지(+4.87% 대 3.5%) · 4월 분체도료(+5.69% 대 5.0%) · 4월과 5월 배선 하네스(+1.04%와 +1.11% 대 1.0%)입니다. 소비 라인 점검이 있어도 집계가 허용 이내면 정상으로 두고 라인 건수만 따로 알려 줍니다.

제품별 집계
제품별 집계 — 제품 × 월마다 표준·실제 단위 자재원가와 차이율을 봅니다.

제품 5종 × 6개월 30행입니다. 양품 생산수량으로 나눈 단위 자재원가를 표준과 실제로 나란히 두고, 차이율이 ±1.50%를 넘으면 점검 필요입니다. 여섯 행이 걸렸으며 1월 도장 외판(+3.72%) · 3월 수지 하우징(+2.73%) · 4월 알루미늄 방열판(+1.81%)과 수지 하우징(+1.77%) · 5월 도장 외판(+1.68%) · 6월 알루미늄 방열판(+2.54%)입니다. 제품 차이가 어느 자재에서 났는지는 상세 창에서 이어 봅니다.

원가 반영 대사와 월별 추이

계산액과 원가에 들어간 금액을 맞춰 보고, 달 단위로 이상한 곳을 찾는 흐름입니다.

원가 반영 대사
원가 반영 대사 — 계산액과 원가 반영액을 월 · 원가요소별로 견준 결과입니다.

월 × 원가요소(원재료비 · 부재료비 · 포장재비) 18행입니다. 계산액은 소비 라인의 실제 소비금액을 모은 값이고, 반영액은 원가에 실제로 얹힌 금액입니다. 둘이 다른 행은 네 개로 1월 원재료비 -84,449원 · 2월 부재료비 +22,019원 · 4월 원재료비 -55,099원 · 6월 원재료비 +83,939원입니다. 각 차이는 소비 라인 한 건에서 났고, 어느 생산오더인지 상세 창으로 이어 확인합니다.

월별 추이
월별 추이 — 월마다 표준 · 실제 소비금액과 허용 초과 · 미설명 초과, 반영 차이를 나란히 봅니다.

월 실제 소비금액은 1월 236.0 · 2월 220.2 · 3월 239.8 · 4월 219.1 · 5월 224.0 · 6월 251.2(백만 원)입니다. 월 차이율은 3월 +0.30%에서 1월 +1.01%까지 모두 작아 보이지만, 허용 초과 금액은 4월 1.86백만 원이고 그 가운데 미설명 초과가 1.08백만 원으로 가장 큽니다. 점검 필요 월은 반영 차이가 있거나 차이율이 ±1.00%를 넘은 1 · 2 · 4 · 6월 네 개입니다.

근거 내려가기와 대사 결과

행을 눌러 계산 과정을 보고, 마지막으로 화면의 숫자가 서로 맞는지 대사 결과로 확인합니다.

행 클릭 상세
행 클릭 상세 — 소비 라인 행을 누르면 계산 과정과 소비 라인 목록이 상세 창에 열립니다.

표의 행을 누르면 상세 창이 열립니다. 4월 생산오더 300065의 강관 라인은 표준 소요량 2,112m에 허용 로스율 2.5%라 허용 로스량이 52.8m입니다. 불출 2,346.727m에서 반품 66.137m를 빼 실제 소비량이 2,280.59m이고, 사용량 차이는 +168.59m(+7.98%)입니다. 허용 초과량 115.79m 가운데 스크랩으로 기록된 31.032m를 뺀 84.758m가 미설명 초과로, 표준단가 6,800원을 곱하면 576,354원입니다.

대사 결과
대사 결과 — 대사식별 검사 건수와 차이 건수를 보여 줍니다.

여덟 가지 정합성 식(R01~R08)의 검사 건수가 라인 360건 · 월 6건 단위로 나열되고, R01~R07의 차이 건수는 모두 0입니다. 맨 아래 R08은 일부러 넣은 예외로 계산액과 원가 반영액이 다른 라인 4건(최대 84,449원)을 보여 주며 대사 차이와 분리해 집계합니다. 계산이 서로 맞는데도 값이 기준을 벗어난 곳이 점검 대상입니다.

화면 뒤에서 일어나는 일

자재 사용량 차이는 다섯 단계로 흘러갑니다. 각 단계의 결과가 다음 단계의 입력이 되므로, 어느 단계에서 숫자가 어긋나는지가 대사식으로 바로 드러납니다.

  1. 표준 — 표준 소요량 = 양품 생산수량 × 단위 소요량, 허용 로스량 = 표준 소요량 × 허용 로스율 ÷ 100.
  2. 실제 — 실제 소비량 = 불출수량 − 반품수량.
  3. 차이 — 사용량 차이 = 실제 − 표준, 차이율(%) = 사용량 차이 ÷ 표준 소요량 × 100.
  4. 초과 — 허용 초과량 = max(0, 사용량 차이 − 허용 로스량), 미설명 초과량 = max(0, 허용 초과량 − 스크랩 기록량).
  5. 금액 — 표준 소비금액 = 표준 소요량 × 표준단가, 실제 소비금액 = 실제 소비량 × 표준단가(각각 원 단위 반올림), 사용량 차이 금액 = 실제 − 표준.

마지막으로 자재별 합계, 제품별 합계, 월 합계, 원가 반영 대사의 계산액 합계가 모두 소비 라인 합계와 같아야 합니다. 이 식이 R05~R07이고, 라인 단위의 분해식이 R01~R04입니다.

점검 판정 규칙

판정 결과는 “점검 필요”와 “정상” 두 가지입니다. 원인을 단정하지 않고 확인할 자리만 알려 줍니다.

코드판정 조건결과 상태사용자 조치
UNEX사용량 차이가 허용 로스량을 넘고, 초과량 가운데 스크랩 기록으로 설명되지 않은 수량이 있는 소비 라인점검 필요불출 전표 · 스크랩 기록과 BOM 소요량 확인
UNDER실제 소비량이 표준 소요량에서 허용 로스량을 뺀 값보다 적은 소비 라인점검 필요미불출 · 대체 자재 · BOM 소요량 확인
POST원가 반영액이 계산액(실제 소비금액)과 다른 소비 라인점검 필요해당 월 원가 전표와 오더 정산 확인
RATE자재별 월 집계 사용량 차이율의 절대값이 그 자재의 허용 로스율 초과점검 필요해당 자재 소비 라인 확인
PVAR제품별 월 집계 자재원가 차이율이 ±1.50% 초과점검 필요제품 상세에서 차이가 큰 자재 확인
월월 안에 원가 반영 차이가 있거나 월 차이율이 ±1.00% 초과점검 필요월 상세에서 해당 라인 확인
-허용 초과가 없거나 초과량이 스크랩 기록으로 모두 설명되는 경우정상조치 없음

조회조건

조회조건필수기본값필터 방식적용 탭
회계연도필수2026같음(eq)전 탭
전기 월 시작·종료선택전체이상·이하(둘 다 있으면 구간)전 탭
자재선택전체같음(eq)명세 · 자재별 집계
제품선택전체같음(eq)명세 · 제품별 집계
점검 결과선택전체같음(eq), 전체는 필터 없음대사 결과 제외 전 탭

결과 컬럼

컬럼의미산출식
표준 소요량양품 생산수량으로 환산한 구성품 필요량양품 생산수량 × 단위 소요량
허용 로스율(%)정상으로 보는 추가 사용 비율자재별 기준
허용 로스량허용 로스율만큼의 수량표준 소요량 × 허용 로스율 ÷ 100
실제 소비량오더에 순수하게 쓴 수량불출수량 − 반품수량
사용량 차이·차이율(%)표준 대비 더 쓴(덜 쓴) 수량과 비율실제 − 표준, 차이 ÷ 표준 × 100
스크랩 기록량스크랩으로 기록된 수량오더 스크랩 이동 수량
허용 초과량허용 로스를 넘어선 수량max(0, 사용량 차이 − 허용 로스량)
미설명 초과량스크랩으로도 설명되지 않은 초과 수량max(0, 허용 초과량 − 스크랩 기록량)
사용량 차이 금액표준 단가로 평가한 차이실제 소비금액 − 표준 소비금액
원가 반영 차이원가에 반영된 금액과 계산액의 차이원가 반영액 − 계산액
단위 자재원가양품 1개당 자재원가소비금액 ÷ 양품 생산수량

좁은 화면에서 달라지는 것

조회조건은 줄바꿈되어 위아래로 쌓이고, 요약 타일은 두 줄로 접히며, 표는 가로 스크롤로 전환됩니다. 상세 창은 화면 너비에 맞춰 줄어듭니다. 데스크톱을 기준으로 설계했으며 태블릿에서도 쓸 수 있습니다.

파일 구성

index.html · readme.html · Component.js · manifest.json
controller/  BaseController.js · Main.controller.js
view/        Main.view.xml · DetailDialog.fragment.xml
model/       formatter.js · ErrorHandler.js
css/         style.css
i18n/        i18n_ko.properties
odata/       서비스 정의 · 샘플 데이터 6종
media/       소개 영상 · 포스터

SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다. 생산오더 · BOM · 불출 문서 · 오더 원가 분석은 표준에 그대로 두고, 그 결과를 표준 소요량과 허용 로스 기준 위에서 다시 맞춰 보는 자리만 이어 붙였습니다.

표준으로 되는 것과 안 되는 것

하고 싶은 일표준 화면이 앱이 더하는 관점
오더의 생산수량과 구성품 소요 확인CO03소비 라인마다 표준 소요량과 실제 소비량을 한 줄에 둡니다
오더 목록과 구성품 현황COOIS자재 · 제품 × 월 집계로 허용 로스율과 견준 차이율을 둡니다
BOM 의 단위 소요량 · 스크랩 비율CS03단위 소요량으로 표준 소요량을, 스크랩 비율로 허용 로스량을 만듭니다
오더 불출 · 반품 자재 문서MB51불출 − 반품을 실제 소비량으로 모아 표준과 견줍니다
불출 · 반품 문서 처리MIGO스크랩 기록으로 설명되는 초과와 설명되지 않는 초과를 나눕니다
오더 단위 표준 · 실제 원가 비교KKBC_ORD사용량 차이 금액을 가격 차이 없이 표준 단가로 평가해 보여 줍니다
표준단가 · 원가 구성CK13N표준단가로 소비금액을 평가합니다
오더에 귀속된 자재비 라인KOB1원가 반영액을 계산액과 월 · 원가요소별로 대조합니다
자재비 계정의 전표 라인FAGLL03반영 차이가 난 라인의 전표를 확인합니다

T-code 별 연계 지점

T-code이름연계
CO03생산오더 표시이 앱 소비 라인의 오더 번호로 같은 오더를 열어 양품 생산수량과 구성품 소요(예약)를 맞춥니다
COOIS오더 정보 시스템오더 목록과 구성품 · 원가 현황을 보고, 이 앱의 월 집계와 오더 수를 견줍니다
CS03BOM 표시단위 소요량과 구성품 스크랩 비율을 확인해 표준 소요량과 허용 로스율의 근거를 맞춥니다
MB51자재 문서 목록오더로 불출 · 반품된 자재 문서를 열어 실제 소비량을 맞춥니다
MIGO자재 문서 처리불출 · 반품 문서의 처리 내역과 이동유형을 확인합니다
KKBC_ORD오더 원가 분석오더 단위 표준 · 실제 자재원가를 이 앱의 사용량 차이 금액과 견줍니다
CK13N자재 원가 추정 표시표준단가와 원가 구성을 확인합니다
KOB1오더 개별 항목오더에 귀속된 자재비 라인을 열어 원가 반영액을 맞춥니다
FAGLL03G/L 계정 개별 항목자재비 계정의 전표 라인으로 반영 차이를 추적합니다

운영 전환 시 기존 리포트를 없앨 필요는 없습니다. 법정 · 감사 대응은 표준 보고서와 원장에 남겨 두고, 이 앱은 월마감 전에 이상한 자재와 소비 라인을 먼저 골라내는 조회 전용 화면으로 곁에 둡니다.

S/4HANA 분석 스택과의 자리

표준 CDS 분석 쿼리나 Fiori 분석 앱, Analysis for Office 는 임의의 축으로 합계를 돌려 보는 데 강합니다. 이 앱은 그 위에서 “표준 + 사용량 차이 = 실제”와 “허용 초과 = 스크랩 설명분 + 미설명분”, “반영액 = 계산액”이라는 업무 규칙을 판정 코드로 올려 둔 점검 화면입니다. 같은 CDS 큐브를 두 곳이 함께 쓰면 분석 쿼리와 이 앱의 숫자가 어긋날 일이 없습니다.

확장 포인트 — 운영에서 실제로 손대는 자리

자리손대는 내용비고
허용 로스율자재별 허용 로스율 기준 테이블BOM 스크랩 비율을 쓸지 회사 기준을 쓸지 확인 필요
한도제품 ±1.50% · 월 ±1.00% 등 판정 한도구매 · 원가 합의 사항
이동유형 분류불출 · 반품 · 스크랩으로 볼 이동유형 목록회사 운영에 따라 다름(확인 필요)
원가 반영액 원천오더에 귀속된 자재비 원가 라인정산 방식에 따라 다름(확인 필요)
권한플랜트 · 오더 유형 단위 조회 권한회사 권한 설계에 맞춤

분석 지표 정의표

지표산식·판정 기준대응 기능원천 데이터비고
표준 소요량양품 생산수량 × 단위 소요량자재 사용량 명세AFPO · STPO소요량 출처는 확인 필요
허용 로스량표준 소요량 × 허용 로스율명세 · 자재별 집계STPO · 회사 기준자재별 기준(확인 필요)
실제 소비량불출수량 − 반품수량자재 사용량 명세AUFM · MSEG이동유형 구분은 확인 필요
사용량 차이 · 차이율실제 − 표준, 차이 ÷ 표준 × 100명세 · 자재별 · 제품별산출허용 로스율 기준 비교
미설명 초과량max(0, 허용 초과량 − 스크랩 기록량)자재 사용량 명세AUFM스크랩 기록 출처는 확인 필요
사용량 차이 금액(실제 소비량 − 표준 소요량) × 표준단가전 탭MBEW원 단위 반올림
원가 반영 차이원가 반영액 − 계산액원가 반영 대사COEP월 · 원가요소별
단위 자재원가소비금액 ÷ 양품 생산수량제품별 집계산출원/개

CDS 구성

화면이 부르는 OData 서비스는 아래 CDS 뷰 위에 올라갑니다. 소요 · 이동 · 단가 · 원가 반영액을 서로 다른 뷰에서 받아 큐브에서 한 번만 계산하고, 화면 · CSV · 분석 쿼리가 모두 같은 큐브를 쓰도록 나눴습니다. 표준 CDS 뷰 이름은 확인된 것만 쓰고, 확인하지 못한 곳은 원천 테이블 기준으로 적었으며 “확인 필요”로 표시했습니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준허용 로스율 기준 테이블자재 · 유효기간별 허용 로스율과 판정 한도를 둡니다값을 코드에 박지 않고 기간별로 관리하기 위해서입니다
차원자재 · 제품 차원 뷰자재 · 제품의 이름과 단위를 줍니다텍스트와 단위를 한 곳에서 관리합니다
실적이동유형별 수량 집계 뷰불출 · 반품 · 스크랩 수량을 오더 × 자재로 모읍니다이동유형 분류를 한 곳에 가둡니다
소비 라인소비 라인 뷰표준 소요량 · 단가 · 오더 수량을 라인으로 묶습니다라인이 모든 집계의 근거입니다
큐브자재 사용량 큐브허용 로스 · 초과 · 미설명 · 금액을 한 번만 계산합니다화면 · CSV · 분석이 같은 숫자를 씁니다
대사원가 반영 대사 뷰계산액과 반영액을 월 · 원가요소로 견줍니다대사 로직을 큐브와 분리합니다
쿼리분석 쿼리자재 · 제품 · 월 단위 집계를 서비스로 냅니다화면은 쿼리만 호출합니다
권한접근 제어플랜트 · 오더 유형 단위로 행을 막습니다단가가 보이는 범위를 제한합니다

① 허용 로스율 기준 테이블 — 값은 코드가 아니라 테이블에 둔다

허용 로스율은 자재마다, 기간마다 다르고 판정 한도도 점검 항목마다 다릅니다. 값이 코드에 박혀 있으면 기준이 바뀔 때마다 개발이 필요합니다. 기준 테이블로 나누면 현업이 값만 바꿔 같은 쿼리를 다시 돌릴 수 있고, 값이 비어 있으면 허용 로스량이 0 이 되는 문제를 점검 코드로 걸러 낼 수 있습니다.

" ───────────────────────────────────────────────
" 허용 로스율 기준 — 자재 · 유효시작일
" 허용 로스량 = 표준 소요량 × 허용 로스율 ÷ 100
" 값을 기간별로 관리하고 코드에 박지 않기 위해 나눈다
" ───────────────────────────────────────────────
@EndUserText.label : '자재 허용 로스율'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
define table zmuv_allow {
  key mandt    : mandt not null;
  key werks    : werks_d not null;
  key matnr    : matnr not null;
  key datab    : datab not null;
  allow_rate   : abap.dec(7,2);   " 허용 로스율(%)
  prod_limit   : abap.dec(7,2);   " 제품 자재원가 차이율 한도(%)
  month_limit  : abap.dec(7,2);   " 월 차이율 한도(%)
}

② 이동유형별 수량 집계 뷰 — 불출 · 반품 · 스크랩을 한 곳에서 가른다

오더 자재 이동에는 불출, 반품, 스크랩이 이동유형으로 섞여 있습니다. 어떤 유형을 무엇으로 볼지는 회사마다 달라서 분류를 한 뷰에 가두고, 나머지 뷰는 이 뷰의 결과만 씁니다. 아래의 이동유형 값은 예시이며 회사 정책에 맞춰 확인해야 합니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '오더 자재 이동 수량(불출·반품·스크랩)'
define view entity ZI_MatUsageMove
  as select from aufm
{
  key aufm.aufnr as OrderNo,
  key aufm.matnr as MatCode,
      aufm.meins as Uom,
      @Semantics.quantity.unitOfMeasure: 'Uom'
      sum( case when aufm.bwart = '261' then aufm.menge else 0 end ) as IssQty,   -- 불출(예시)
      @Semantics.quantity.unitOfMeasure: 'Uom'
      sum( case when aufm.bwart = '262' then aufm.menge else 0 end ) as RetQty,   -- 반품(예시)
      @Semantics.quantity.unitOfMeasure: 'Uom'
      sum( case when aufm.bwart = '551' then aufm.menge else 0 end ) as ScrapQty  -- 스크랩(회사 정책 확인 필요)
}
group by aufm.aufnr, aufm.matnr, aufm.meins

③ 소비 라인 뷰 — 오더 × 자재 한 줄

모든 집계의 근거가 되는 라인입니다. 표준 소요량은 구성품 소요에서, 단가는 자재 평가에서 가져오고 이동 수량은 ②의 뷰와 붙입니다. 표준 단가를 여기서 한 번 고정해 두면 큐브 이후에는 가격 차이가 섞일 자리가 없습니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '자재 사용량 소비 라인'
define view entity ZI_MatUsageLine
  as select from afko
    inner join afpo on afpo.aufnr = afko.aufnr
    inner join resb on resb.aufnr = afko.aufnr
    inner join mbew on mbew.matnr = resb.matnr and mbew.bwkey = resb.werks
    left outer join ZI_MatUsageMove as mv
      on mv.OrderNo = afko.aufnr and mv.MatCode = resb.matnr
{
  key afko.aufnr                                       as OrderNo,
  key resb.matnr                                       as MatCode,
      resb.werks                                       as Plant,
      afpo.wemng                                       as OutQty,        -- 양품 생산수량
      cast( resb.bdmng as abap.dec(15,3) )             as StdQty,        -- 표준 소요량(기준수량 환산 확인 필요)
      mv.IssQty, mv.RetQty, mv.ScrapQty,
      cast( mbew.stprs / mbew.peinh as abap.dec(9,2) ) as StdPrice       -- 표준단가
}

④ 자재 사용량 큐브 — 차이 · 허용 · 미설명을 한 번만 계산한다

허용 로스량, 사용량 차이, 허용 초과량, 미설명 초과량, 금액을 이 큐브에서 한 번만 계산합니다. 화면 · CSV · 분석 쿼리가 모두 같은 큐브를 쓰기 때문에 같은 라인의 숫자가 곳곳에서 어긋나지 않습니다. 계산식은 화면의 설명과 글자 그대로 같습니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.dataCategory: #CUBE
@EndUserText.label: '자재 사용량 큐브'
define view entity ZI_MatUsageCube
  as select from ZI_MatUsageLine as l
    left outer join zmuv_allow as a
      on a.werks = l.Plant and a.matnr = l.MatCode
{
  key l.OrderNo, key l.MatCode, l.Plant,
      a.allow_rate                                                       as AllowRate,
      l.StdQty,
      l.StdQty * a.allow_rate / 100                                      as AllowQty,
      l.IssQty - l.RetQty                                                as ActQty,
      ( l.IssQty - l.RetQty ) - l.StdQty                                 as QtyVar,
      case when ( l.IssQty - l.RetQty ) - l.StdQty - l.StdQty * a.allow_rate / 100 > 0
           then ( l.IssQty - l.RetQty ) - l.StdQty - l.StdQty * a.allow_rate / 100
           else 0 end                                                    as ExcessQty,
      l.ScrapQty,
      l.StdPrice,
      round( l.StdQty * l.StdPrice, 0 )                                  as StdAmt,
      round( ( l.IssQty - l.RetQty ) * l.StdPrice, 0 )                   as ActAmt
}
-- UnexQty = max(0, ExcessQty - ScrapQty) 는 분석 쿼리에서 계산 항목으로 둔다

⑤ 원가 반영 대사 뷰 — 계산액과 반영액을 월 · 원가요소로 견준다

불출이 맞아도 원가에 들어간 금액이 다를 수 있으므로 큐브의 실제 소비금액과 오더에 귀속된 자재비를 월 · 원가요소 단위로 맞붙입니다. 대사를 큐브와 분리해 두면 반영 로직이 바뀌어도 사용량 계산은 영향을 받지 않습니다.

@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '원가 반영 대사(월 × 원가요소)'
define view entity ZI_MatUsagePost
  as select from ZI_MatUsageCube as c
    inner join coep on coep.objnr = concat( 'OR', c.OrderNo )   -- 오더 귀속 원가 라인(확인 필요)
{
  key left( coep.budat, 6 )           as YearMonth,
  key coep.kstar                      as CostElem,
      sum( c.ActAmt )                 as CalcAmt,     -- 계산액
      sum( coep.wkgbtr )              as PostAmt,     -- 반영액
      sum( coep.wkgbtr ) - sum( c.ActAmt ) as DiffAmt
}
group by left( coep.budat, 6 ), coep.kstar

⑥ 분석 쿼리 — 자재 · 제품 · 월로 모은다

화면이 부르는 집계는 쿼리 하나에서 나옵니다. 미설명 초과량은 라인 단위로 먼저 계산한 뒤 합쳐야 하므로 계산 항목이 아니라 라인에서 만든 값을 더합니다. 합계에서 상쇄되는 초과와 과소를 보려면 부호를 유지한 채 합산해야 합니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.query: true
@EndUserText.label: '자재 사용량 분석 쿼리'
define view entity ZC_MatUsageQuery
  as select from ZI_MatUsageCube
{
  @AnalyticsDetails.query.axis: #ROWS  Plant,
  @AnalyticsDetails.query.axis: #ROWS  MatCode,
  @AnalyticsDetails.query.axis: #COLUMNS  sum( StdAmt )   as StdAmt,
  @AnalyticsDetails.query.axis: #COLUMNS  sum( ActAmt )   as ActAmt,
  @AnalyticsDetails.query.axis: #COLUMNS  sum( ActAmt - StdAmt ) as QtyVarAmt
}

⑦ 접근 제어 — 단가가 보이는 범위를 막는다

자재별 단가와 원가가 함께 보이므로 플랜트와 오더 유형 단위로 행을 막습니다. 권한 오브젝트와 값은 회사 권한 설계에 맞춰야 하며, 아래는 구조 예시입니다(확인 필요).

@EndUserText.label: '자재 사용량 접근 제어'
@MappingRole: true
define role ZI_MatUsageCube {
  grant select on ZI_MatUsageCube
    where ( Plant ) = aspect pfcg_auth( M_MSEG_WWE, WERKS, ACTVT = '03' );
}

⑧ 서비스 정의 — 화면이 보는 문

쿼리와 대사 뷰를 OData 서비스로 노출합니다. 화면은 이 서비스의 엔티티셋 여섯 개와 펑션 하나만 부르고, 계산과 판정은 서비스가 맡습니다.

@EndUserText.label: '자재 사용량 차이 점검 서비스'
define service ZUI_MatUsageSrv {
  expose ZI_MatUsageCube   as LineSet;
  expose ZC_MatUsageQuery  as MatSet;
  expose ZI_MatUsagePost   as PostSet;
}
-- 서비스 바인딩은 OData V2 - UI 유형으로 만든다. 권한 오브젝트와 값은 회사 권한 설계에 맞춘다(확인 필요)

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래 항목은 코딩이 아니라 합의입니다.

해야 할 일무엇을 정하나정하지 않으면누가
허용 로스율자재별 허용 로스율의 출처(BOM 스크랩 비율 또는 회사 기준)허용 로스량이 0 으로 계산되어 모든 초과가 미설명으로 잡힘생산기술 · 원가
한도제품 · 월 차이율 한도모든 제품이 같은 기준으로 판정되어 건수가 왜곡됨생산 · 원가 공동
이동유형 분류불출 · 반품 · 스크랩으로 볼 이동유형실제 소비량이 틀려 모든 차이가 어긋남생산 · 자재 · 원가
스크랩 기록 방식스크랩을 어디에 어떻게 기록하는지초과 전부가 미설명으로 보임현장 생산
원가 반영액 원천오더에 귀속된 자재비 원가 라인계산액과 반영액이 영원히 안 맞음원가회계
표준 소요량 기준수량BOM 기준수량 환산 규칙표준 소요량이 배수로 틀림생산기술
과소 사용 해석과소 사용이 정상인 경우의 예외 기준정상 대체 자재 사용도 점검 필요로 걸림생산 · 자재
권한 설계플랜트 · 오더 유형 단위 조회 범위필요 없는 사람에게도 단가가 보임IT 보안
점검 후 처리 절차점검 필요를 누가 언제까지 확인하는지표시만 되고 아무도 확인하지 않음원가회계

운영 데이터로 갈 때

생산오더와 자재 문서가 수천만 건이면 라인 단위로 매번 전체를 집계할 수 없습니다. 회계연도와 기간을 필수 조건으로 두고, 자재 · 제품 집계는 월 단위로 미리 모아 두며, 큐브는 오더 번호 위에 인덱스를 두어 조회 범위를 좁힙니다. 점검 판정은 큐브에서 한 번만 하고 화면은 결과만 받습니다.

자주 묻는 질문

도입 상담과 데모에서 자주 받는 질문을 네 묶음으로 정리했습니다.

숫자와 산식

이 화면은 무엇을 점검하나요?

생산오더가 자재를 표준보다 얼마나 더 쓰거나 덜 썼는지, 그 차이가 허용 로스와 스크랩 기록으로 설명되는지, 원가에 반영된 금액이 계산액과 같은지를 한 화면에서 보여 줍니다. 원인을 단정하지 않고 확인할 자리만 알려 줍니다.

표준 소요량은 어떻게 계산하나요?

양품 생산수량에 단위 소요량(BOM 구성품 수량)을 곱합니다. 이 표본에서는 120개 생산오더, 12개 자재, 소비 라인 360건에 같은 식을 적용했습니다. 단위 소요량의 기준수량 환산과 구성품 출처는 회사마다 달라 확인이 필요합니다.

실제 소비량은 어떻게 구하나요?

오더에 불출한 수량에서 반품한 수량을 뺍니다. 불출·반품은 자재 문서의 이동유형별 수량을 모은 값이며, 어떤 이동유형을 불출·반품·스크랩으로 볼지는 회사 정책으로 정해야 합니다(확인 필요).

허용 로스는 무엇이고 어디서 오나요?

표준 소요량에 허용 로스율을 곱한 수량으로, 이만큼 더 쓰는 것은 정상 범위로 봅니다. 이 표본에서는 자재별 기준(포장 박스 1.0%, 강관 2.5%, 알루미늄 판재 3.0%, 분체도료 5.0% 등)을 썼습니다. 운영에서는 BOM 구성품 스크랩 비율이나 회사 기준 테이블에서 가져오며 출처는 확인이 필요합니다.

미설명 초과는 어떻게 가려내나요?

사용량 차이에서 허용 로스량을 뺀 값이 허용 초과량이고, 거기서 스크랩 기록량을 뺀 나머지가 미설명 초과량입니다. 초과했더라도 스크랩으로 기록된 만큼은 설명된 것으로 보고, 남은 수량만 점검 대상으로 올립니다.

과소 사용은 왜 점검 대상인가요?

실제 소비량이 표준 소요량에서 허용 로스량을 뺀 값보다 적으면 미불출이나 대체 자재 사용, BOM 소요량 오류일 수 있습니다. 이 표본에서는 20개 라인이 해당하고 금액으로 -3.19백만 원이어서, 합계에서는 초과분을 덮어 차이를 작게 만듭니다.

금액은 어떤 단가로 평가하나요?

표준 단가로 평가합니다. 표준 소비금액은 표준 소요량 × 표준단가, 실제 소비금액은 실제 소비량 × 표준단가이고 각각 원 단위로 반올림합니다. 그래서 사용량 차이 금액은 가격 차이가 섞이지 않은 순수한 수량 차이의 금액입니다.

화면과 조작

처음 열면 무엇이 보이나요?

열면 한 번 자동 조회되어 조회조건, 요약 타일, 자재 사용량 명세 탭이 보입니다. 기본 조회조건은 2026년 전체입니다.

조회조건은 무엇이 있나요?

회계연도(필수), 전기 월 시작·종료, 자재, 제품, 점검 결과 다섯 가지입니다. 입력 칸에서 Enter 를 누르거나 오른쪽 끝의 조회 버튼을 누르면 서비스로 전달되고, 비워 두면 전체입니다.

행을 누르면 무엇이 열리나요?

상세 창이 열려 그 행의 값과 계산 과정, 해당 소비 라인 목록을 보여 줍니다. 소비 라인을 누르면 표준 소요량에서 미설명 초과량까지 이어지는 계산을 한 번에 볼 수 있습니다.

내려받기는 되나요?

현재 탭의 조회 결과를 UTF-8 CSV 로 내려받을 수 있습니다. 또 왼쪽 목차의 검토용 자료 다운로드로 화면과 핵심 숫자를 담은 검토 자료를 만들 수 있습니다.

좁은 화면에서도 쓸 수 있나요?

데스크톱을 기준으로 설계했고, 좁은 화면에서는 조회조건이 줄바꿈되며 표는 가로 스크롤로 바뀝니다. 태블릿까지는 무리 없이 쓸 수 있습니다.

분석과 대사

점검 필요로 표시되면 잘못 쓴 것인가요?

아닙니다. 기준을 벗어났으니 원인을 확인하라는 표시입니다. 이 화면은 점검 도구이며 최종 판단은 회사와 감사인이 합니다.

합계 차이가 작은데 왜 라인으로 내려가야 하나요?

이 표본의 6개월 합계 사용량 차이는 +7.9백만 원(+0.57%)이지만, 허용 초과 6.8백만 원과 과소 사용 -3.2백만 원이 서로 상쇄한 결과입니다. 라인 차이율은 -11.26%에서 +16.31%까지 벌어져 있어 합계만 보면 놓칩니다.

원가 반영 대사는 무엇을 맞추나요?

월 × 원가요소별로 계산액(실제 소비금액)과 원가에 반영된 금액을 견줍니다. 이 표본에서는 소비 라인 4건에서 -84,449원, +22,019원, -55,099원, +83,939원의 반영 차이가 있고, 어느 생산오더에서 났는지까지 좁혀 줍니다.

대사식 R01~R08은 무엇인가요?

수량 · 금액 · 합계 · 반영액의 정합성을 검산하는 여덟 식입니다. R01~R07은 차이 0건이어야 하고, R08은 원가 반영 차이를 일부러 넣은 4건으로 대사 차이와 분리해 기록합니다.

월별 추이는 어떻게 읽나요?

월마다 표준·실제 소비금액과 허용 초과·미설명 초과 금액, 반영 차이를 나란히 봅니다. 월 차이율이 작아도 초과와 과소가 상쇄했을 수 있으므로, 이상한 달은 자재·제품 탭으로 내려가 확인합니다.

SAP 표준 화면과 무엇이 다른가요?

표준 화면은 오더, 불출 문서, 원가를 각각 보여 줍니다. 이 화면은 같은 데이터를 소비 라인 한 줄로 모아 표준 소요량과 실제 소비량을 허용 로스·스크랩 기준으로 가르고 원가 반영액까지 견주는 조회·점검 관점을 더합니다.

기존 표준 보고서를 없애야 하나요?

아닙니다. 표준 보고서와 원가 전표는 법정·감사 대응 근거로 그대로 둡니다. 이 화면은 월마감 전에 이상한 라인을 먼저 골라내는 용도입니다.

도입과 운영

운영 데이터로 연결하려면 무엇이 필요한가요?

허용 로스율 기준, 이동유형 분류 기준, 불출·반품·스크랩 집계, 원가 반영액 원천, 권한 설계와 서비스 게시가 필요합니다. 화면의 manifest 에 선언된 서비스 주소만 바꾸면 화면 코드는 그대로 쓸 수 있습니다.

허용 로스율이 없는 자재는 어떻게 하나요?

허용 로스율이 비어 있으면 허용 로스량이 0 으로 계산되어 모든 초과가 미설명으로 잡힙니다. 기준 테이블에 먼저 채우거나 판정에서 제외해야 하며, 이 화면이 대신 추정하지 않습니다(확인 필요).

스크랩 기록은 어떻게 가져오나요?

오더의 스크랩 이동 수량을 자재별로 모읍니다. 스크랩을 어느 이동유형으로 기록하는지는 현장 운영에 따라 달라 확인이 필요하고, 기록이 없으면 초과량 전부가 미설명으로 보입니다.

권한은 어떻게 나누나요?

플랜트·오더 유형 단위로 조회 권한을 나눕니다. 자재별 단가와 원가가 함께 보이므로 필요한 사람에게만 열어 두는 것이 좋으며, 권한 오브젝트와 값은 회사 권한 설계에 맞춥니다.

이 화면의 결과를 감사 자료로 써도 되나요?

점검 필요는 확인할 후보를 알려 주는 것이지 원가 처리를 정해 주는 것이 아닙니다. 감사 대응은 표준 보고서와 원장을 근거로 하시기 바랍니다.

적용 시기나 대상 범위에 정해진 것이 있나요?

특정 기준서가 요구하는 점검이 아니라 제조원가 영역의 내부 관리 점검 도구이므로 정해진 적용 시기는 없습니다. 도입 범위는 회사가 정합니다.

데이터가 많으면 느려지지 않나요?

오더·자재 문서가 수천만 건이면 매번 전체를 집계할 수 없습니다. 회계연도와 기간을 필수 조건으로 두고, 자재·제품 집계는 월 단위로 미리 모아 두며, 큐브는 오더 번호 위에 인덱스를 둡니다.