관리회계

BOM 원가 롤업 점검 — 제조원가, 하위 품목부터 단위원가를 다시 쌓아 원가계산 반영액과 견주고 변경 뒤 재계산이 빠진 구성 라인을 찾는 월마감 화면

구성 라인별 소요량·단위원가 · 하위부터 쌓은 롤업 · 원가계산 반영액과의 차이율 · 변경 뒤 미재계산 · 롤업 순서 · 대사식 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지

소개 영상89초9개 장면음성 안내 · 자막표지 → 처음 열었을 때 → 점검 필요 → 품목 롤업 → 구성품 단가 → 행 상세 → 월별 추이 → 대사 결과 → 정리

관리회계

BOM 원가 롤업 점검 — 제조원가, 하위 품목부터 단위원가를 다시 쌓아 원가계산 반영액과 견주고 변경 뒤 재계산이 빠진 구성 라인을 찾는 월마감 화면

구성 라인별 소요량·단위원가 · 하위부터 쌓은 롤업 · 원가계산 반영액과의 차이율 · 변경 뒤 미재계산 · 롤업 순서 · 대사식 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지

소개 영상48초9개 장면음성 안내 · 자막표지 → 처음 열었을 때 → 조건 조회 → 제품 집계 → 작업장 단가 → 월별 추이 → 점검 필요 → 행 상세 → 대사 결과

개발 배경 — 이 앱을 사용해야 하는 이유

매월 말, 원가 담당자는 같은 질문을 받습니다. “완제품 원가가 왜 올랐나, 어느 원자재 단가가 바뀐 건가, 그 변경이 원가계산에 반영되기는 했나.” BOM 에는 품목마다 구성품과 소요량이 있고 구성품에는 단가가 있어서 곱해 더하면 단위원가가 나옵니다. 반제품이 끼어 있으면 하위 반제품 원가를 먼저 구한 뒤 위로 쌓아야 합니다. 그런데 원가 추정을 한 번 돌린 뒤 단가나 소요량이 바뀌면 그 변경이 반영액에 들어갔는지 화면 하나로는 알 수 없습니다.

이 앱은 그 맞춤 작업을 한 화면에 올립니다. 구성 라인마다 소요량·스크랩률·단위원가로 라인 원가를 다시 계산하고, 하위 품목부터 위로 롤업 단위원가를 쌓아 원가계산 반영액과의 차이·차이율을 구한 뒤, 단가·소요량이 원가계산일 뒤에 바뀐 라인을 변경일로 가려냅니다. 이 영역은 특정 회계기준서가 아니라 제조원가 분석(BOM 원가 롤업)이며, 표준 실행은 SAP 표준 T-code 가 담당하고 이 화면은 조회·검증 관점을 더해 확장합니다.

한 줄 요약 — 하위 품목부터 위로 단위원가를 다시 쌓아 원가계산 반영액과 견주고, 변경 뒤 재계산이 빠진 라인과 롤업 순서가 어긋난 라인, 단가가 비어 있는 라인을 월마감 전에 찾아 줍니다. 원인은 단정하지 않고 확인할 자리만 알려 줍니다.

BOM 도 단가도 표준에 있는데 비교는 따로 해야 한다

표준 화면은 BOM 의 구성품과 소요량, 자재의 평가 단가, 원가 추정 결과를 각각 보여 줍니다. 세 화면의 숫자를 한 줄에 놓고 비교하려면 결국 엑셀에 옮겨 곱셈과 합산을 다시 해야 합니다. 이 표본에서는 완제품 6종·반제품 6종·원자재 19종이 얽힌 구성 라인 282건이 그렇게 모입니다.

합계에서는 변경 이력이 묻힌다

6개월 합계로 보면 완제품 반영 월액 1,957.3백만 원, 롤업 월액 1,964.8백만 원으로 차이는 +7.5백만 원, 비율로는 약 0.4% 입니다. 이 숫자만 보면 작은 차이로 읽히지만 라인 단위로 내려가면 19건이 점검 필요이고, 구리 권선·커넥터·제어 기판처럼 한두 구성품의 변경이 반제품을 거쳐 여러 완제품으로 번진 것입니다. 평균 뒤에 숨은 변경을 라인 한 줄씩 드러내는 것이 이 앱의 첫 일입니다.

단가가 빠진 구성품은 조용히 0 이 된다

구성품 단가가 등록되지 않으면 해당 라인 원가가 0 으로 나오지만 어느 화면에서도 경고가 뜨지 않습니다. 이 표본에서는 5월 배선 하네스 단가 미등록 2건이 있고, 별도 판정 코드(NOPRC)로 맨 먼저 걸립니다.

롤업 순서가 어긋나면 상위 품목이 틀린다

하위 반제품이 상위 품목보다 늦게 재계산되면 상위 품목은 옛 하위 원가를 쓴 채 남습니다. 4월 임펠러 주조품이 임펠러 모듈보다 늦게 재계산된 1건이 그런 경우이며, ORDER 코드로 표시합니다.

변경 뒤 재계산 여부는 날짜로 찾아야 한다

단가나 소요량이 바뀐 날이 원가계산일보다 늦으면 그 변경은 반영액에 들어가지 못했을 가능성이 있습니다. 이 표본에서 그런 라인이 3건(PRICE 2 · BOM 1)이며, 차이율이 한도 0.5% 를 넘을 때만 점검 필요로 올려 불필요한 경고를 줄였습니다. 하위 차이가 번진 라인 13건(CHILD)은 따로 표시합니다. 판정은 “점검 필요”와 “정상” 두 가지뿐이고, 재계산이 필요한지는 담당자가 확인합니다.

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

숫자만 보여 주고 끝나는 리포트는 이상한 숫자를 만나는 순간 멈춥니다. 이 앱은 월 → 품목 → 구성품 → 구성 라인 한 줄로 내려가고, 행을 누르면 계산 내역이 열리며, 조회 결과를 CSV 로 내려받을 수 있습니다.

사용 방법

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

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

화면이 보여 주는 숫자가 서로 맞는지는 화면 안의 대사 결과 탭에서 검산합니다. 여덟 가지 식을 총 598건 검사해 차이 0건이었습니다. 이 검산은 화면과 별도로 원천 값에서 다시 계산해 화면 숫자와 대조한 결과이기도 합니다.

번호대사식검사 건수차이 건수
R01품목 롤업 단위원가 = 재료비 + 가공비720
R02구성 라인 원가 합계 = 품목 재료비720
R03반영 단위원가 + 차이 = 롤업 단위원가720
R04라인 반영액 + 차이 = 라인 원가2820
R05상위 라인의 반제품 단가 = 그 반제품 롤업 단위원가840
R06월 롤업 월액 = 완제품 롤업 월액 합계60
R07반영 월액 + 월 차이 = 롤업 월액60
R08구성품 사용 라인 수 합계 = 구성 라인 수60
의도적 예외(점검 필요)건수내용
단가 변경 뒤 미재계산(PRICE)22월 구리 권선, 6월 제어 기판 — 단가 확인 필요
소요량 변경 뒤 미재계산(BOM)13월 제어보드 모듈의 커넥터 소요량 변경
롤업 순서 확인(ORDER)14월 임펠러 주조품이 임펠러 모듈보다 늦게 재계산됨
구성품 단가 미등록(NOPRC)25월 배선 하네스 — 단가 등록 확인 필요
하위 차이 전파(CHILD)13반제품의 차이가 상위 품목 라인으로 번짐

대사 결과 탭의 E01~E05 는 위 예외 행을 별도로 보여 주며, 대사 차이 건수 0 과 섞이지 않게 구분합니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤SAP Horizon 테마 · 조회조건 줄 · 요약 타일 · 탭 · 스크롤 표 · 상세 창표준 Fiori 와 같은 모양이어서 화면 사용법을 따로 익힐 필요가 없습니다.
집계·판정 로직서비스 쪽에서 날짜 조건 조회와 펑션을 처리하고, 화면은 조회 결과를 그대로 보여 줍니다판정 기준을 한 곳에 두어 화면과 서비스의 숫자가 갈라지지 않게 했습니다.
데이터 연동OData V2 서비스 하나에 다섯 종류의 집합(구성 라인·품목·구성품·월·대사)과 월별 차이율 펑션 하나를 둠운영에서는 서비스 주소만 바꾸면 같은 화면이 실제 데이터에 붙습니다.
테마sap_horizonSAP 표준 화면과 같은 시각 언어를 씁니다.
앱 정보
업무 영역관리회계 — 제조원가 분석(BOM 원가 롤업)
관련 기준서·대상 영역관련 기준서 없음 · 대상 영역 제조원가
표준 T-codeCS03 · CS12 · CK11N · CK13N · CK24 · MM03
화면 성격조회·점검 (최종 판단은 회사와 감사인)
SAP 표준 기능을 그대로 이어받은 부분 — BOM 의 구성품·소요량·스크랩률, 자재 평가 단가, 원가 추정의 품목별 원가 구조를 표준 데이터 구조 그대로 이어받아 확장했습니다. 계산식도 소요량 × 단위원가를 하위부터 쌓는 표준 원가 추정의 정의를 따릅니다.

실행 화면

아래 화면은 가상의 제조 회사(완제품 6종 · 반제품 6종 · 원자재 19종 · 2026년 1~6월)와 가상의 단가로 만든 검증용 샘플 데이터를 실제 브라우저에서 띄운 것입니다. 실제 고객사의 BOM·단가·원가계산 결과는 쓰지 않았습니다.

처음 열었을 때와 조건 조회

처음 열었을 때
처음 열었을 때 — 조회조건 · 요약 숫자 · 구성 라인 명세 탭이 한 화면에 보입니다.

위쪽에는 회계연도·전기 월 시작·종료·상위 품목·구성품 유형·점검 결과 여섯 조회조건이 있고, 그 아래 요약 타일에서 완제품 반영 월액 1,957.3백만 원, 롤업 월액 1,964.8백만 원, 월액 차이 +7.5백만 원, 점검 필요 라인 19건·품목 19건을 먼저 읽습니다. 표 위의 탭 5개로 근거에서 넓은 범위까지 오갑니다. 처음 열 때 한 번 자동으로 조회됩니다.

점검 필요만 조회
점검 필요만 조회 — 점검 결과를 점검 필요로 고른 구성 라인 명세입니다.

점검 결과를 점검 필요로 고르고 조회하면 19건의 라인이 남습니다. 판정 코드가 라인마다 붙어 있어 단가가 바뀐 라인(PRICE), 소요량이 바뀐 라인(BOM), 하위 차이가 번진 라인(CHILD)을 구분해 볼 수 있습니다. 코드는 확인할 자리를 알려 줄 뿐 원인을 단정하지 않습니다.

품목·구성품·월로 넓혀 보기

품목 롤업
품목 롤업 — 품목 × 월마다 재료비·가공비를 더한 롤업 단위원가와 반영 단위원가의 차이율을 한도와 견줍니다.

1월은 롤업 단위원가와 반영 단위원가가 같아 차이율 0.00% 로 나옵니다. 2월부터는 구리 권선 단가가 바뀐 코일 어셈블리와 그 위쪽 품목에서 차이가 생기고, 한도 0.5% 를 넘은 행이 점검 필요로 표시됩니다. 반제품의 차이가 상위 완제품으로 번지는 모양도 이 탭에서 보입니다.

구성품 단가
구성품 단가 — 구성품 × 월의 현재 단위원가와 반영 단위원가, 단가 변경일을 봅니다.

구성품마다 현재 단위원가와 원가계산에 반영된 단위원가, 단가 변경일이 월별로 보입니다. 변경일이 원가계산일보다 늦으면 그 달 원가에 덜 반영됐을 수 있다는 신호이므로 점검 컬럼과 함께 읽습니다. 배선 하네스의 5월 단가 0 은 의도적으로 넣은 미등록 예외입니다.

월별 추이
월별 추이 — 월별 완제품 롤업 월액·반영 월액과 차이율을 나란히 봅니다.

여섯 달의 반영 월액과 롤업 월액, 차이율, 점검 필요 품목 수가 한 줄씩 나옵니다. 2월부터 차이가 생기는 모양을 보면 어느 달에 재계산이 빠졌는지 가늠할 수 있습니다. 월 합계는 완제품 합계와 같아야 하며 대사식이 그것을 확인합니다.

근거로 내려가기와 대사 결과

행 클릭 상세
행 클릭 상세 — 구성 라인 한 줄을 누르면 같은 품목·월의 구성 라인 목록이 상세 창으로 열립니다.

행을 누르면 상세 창이 열려 그 행의 값과 같은 품목·월의 구성 라인을 보여 줍니다. 소요량·스크랩률·단위원가가 어떻게 곱해져 라인 원가가 됐는지 원 단위로 따라갈 수 있습니다. 하위 반제품이 상위 품목보다 늦게 계산된 라인은 롤업 순서 확인 대상으로 표시됩니다. 창은 닫기 버튼이나 바깥 영역 클릭으로 닫습니다.

대사 결과
대사 결과 — 대사식별 검사 건수와 차이 건수, 의도적 예외를 한눈에 보여 줍니다.

대사식 R01~R08 은 모두 검사 건수 대비 차이 0건입니다. 아래의 E01~E05 는 일부러 넣은 예외 행이며 대사 차이 건수와 따로 셉니다. 이 구분이 있어야 대사 차이 0건이 예외를 가리지 않습니다.

화면 뒤에서 일어나는 일

조회 버튼을 누르면 화면은 조회조건을 필터로 바꿔 서비스에 요청하고, 돌아온 구성 라인·품목·구성품·월·대사 결과를 탭마다 나눠 보여 줍니다. 요약 타일의 숫자도 같은 조건으로 따로 조회합니다. 구성 라인과 품목의 계산은 다음 순서입니다.

  1. 라인 원가(원) = 소요량 × (1 + 스크랩률) × 구성품 단위원가 (소수 둘째 자리 반올림)
  2. 원자재 라인의 단위원가는 구성품 현재 단가, 반제품 라인의 단위원가는 그 반제품의 롤업 단위원가
  3. 품목 재료비 = 원자재 라인 원가 합계, 가공비 = 반제품 라인 원가 합계 + 자체 가공비, 롤업 단위원가 = 재료비 + 가공비
  4. 차이(원/개) = 롤업 단위원가 − 반영 단위원가, 차이율(%) = 차이 ÷ 반영 단위원가 × 100
  5. 월 롤업 월액(원) = 완제품 롤업 단위원가 × 월 계획수량(원 단위 반올림)

단가와 소요량은 월말 기준일의 값을 쓰고, 반영 단위원가는 원가계산일 기준 값으로 만든 금액입니다. 계산은 낮은 BOM 레벨의 반제품부터 위로 올라가므로, 하위가 틀리면 상위가 함께 틀립니다.

점검 판정 규칙

구성 라인은 아래 순서로 첫 번째 해당 조건의 코드를 답니다. 결과는 “점검 필요”와 “정상” 두 가지입니다.

코드판정 조건결과 상태확인할 일
NOPRC구성품 단가가 원가계산 시점에 0(미등록)점검 필요구성품 단가 등록과 재계산 여부 확인
ORDER하위 반제품의 원가계산일이 상위 품목보다 늦음점검 필요롤업 순서(하위 먼저) 확인
BOM소요량 변경일이 원가계산일보다 늦고 차이율 절대값 0.5% 초과점검 필요BOM 변경 뒤 재계산 여부 확인
PRICE단가 변경일이 원가계산일보다 늦고 차이율 절대값 0.5% 초과점검 필요단가 변경 뒤 재계산 여부 확인
CHILD하위 반제품의 반영 단위원가와 차이가 상위 라인에 번짐점검 필요하위 품목의 점검 결과 확인
TOL차이율 절대값 0.5% 이내이지만 0이 아님정상허용 범위 이내
OK반영액과 같음정상조치 없음

품목 집계는 점검 필요 라인이 있거나 품목 차이율 절대값이 한도 0.5% 를 넘으면, 구성품 집계는 단가 변경 뒤 반영되지 않았거나 미등록이면, 월 집계는 그 달에 점검 필요 품목이 있으면 점검 필요가 됩니다. 허용 한도는 회사 기준에 맞춰 바꾸는 값이며, 이 판정은 확인할 자리를 알려 주는 것이지 회계 처리를 단정하지 않습니다.

조회조건

조회조건필수 여부기본값필터 대상적용 탭
회계연도필수2026Gjahr eq전 탭
전기 월 시작·종료선택전체Period ge/le대사 결과를 뺀 전 탭
상위 품목선택전체ParentCode eq구성 라인 명세 · 품목 롤업
구성품 유형선택전체CompType eq구성 라인 명세 · 구성품 단가
점검 결과선택전체CheckStatus eq대사 결과를 뺀 전 탭

결과 컬럼

컬럼의미산출식
구성품 단위원가(원)구성품 또는 반제품의 현재 단위원가단가 또는 하위 롤업
롤업 라인원가(원)소요량·스크랩률을 반영해 다시 계산한 라인 원가소요량 × (1+스크랩률) × 단위원가
반영 단위원가(원)원가계산에 반영된 단위원가원가 추정 결과
차이·차이율재계산 값과 반영액의 차이롤업 − 반영, 차이 ÷ 반영 × 100
단가·소요량 변경일마지막으로 바뀐 날변경 이력
점검 결과·코드정상 또는 점검 필요와 판정 코드판정 규칙 표

좁은 화면에서 달라지는 것

휴대폰 폭에서는 조회조건 필드가 한 줄씩 쌓이고 요약 타일이 두 열로 접히며, 표는 가로로 스크롤됩니다. 탭과 상세 창은 같은 방식으로 동작합니다.

파일 구성

index.html            앱 시작 페이지
Component.js · manifest.json   앱 구성과 서비스 모델 선언
controller/           화면 동작(조회 · 필터 · 상세 · CSV)
view/                 메인 화면 · 상세 창
model/                서식 · 오류 처리
odata/                OData V2 서비스(메타데이터 · 데이터 · 계산)
i18n/                 화면 문구
css/                  보조 스타일

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

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다. BOM 을 고치거나 원가 추정을 실행하는 일은 모두 표준에서 합니다.

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

하고 싶은 일SAP 표준표준 화면에서 아쉬운 자리이 앱이 더하는 관점
BOM 구성품·소요량 확인CS03품목마다 열어 봐야 하고 원가 금액이 없습니다라인 원가(원)를 한 줄에 둡니다
다단계 BOM 전개CS12전개는 되지만 반영액과의 비교가 없습니다하위부터 쌓은 롤업을 반영액과 견줍니다
원가 추정 실행CK11N실행 뒤 바뀐 단가·소요량을 알려 주지 않습니다변경 뒤 미재계산 라인을 모읍니다
원가 추정 표시CK13N반영액과 재계산 값의 차이율이 없습니다차이·차이율을 둡니다
가격 갱신CK24확정 시점 이후의 변경을 찾지 못합니다원가계산일 뒤 변경을 판정합니다
자재 평가 단가 확인MM03구성품 단가를 BOM 라인과 따로 봐야 합니다구성품 × 월 단가와 변경일을 둡니다

T-code 별 연계 지점

T-code이름연계
CS03BOM 표시품목의 구성품·소요량·스크랩률을 확인합니다. 이 앱의 소요량·스크랩률이 같은 필드를 이어받으므로 라인 한 줄의 값을 CS03 와 맞춰 봅니다.
CS12다단계 BOM 전개반제품 아래 구성까지 펼쳐 봅니다. 롤업 순서(ORDER)와 CHILD 라인은 여기서 하위 구성을 먼저 확인합니다.
CK11N자재 원가 추정 생성반영 단위원가의 출처가 되는 표준원가 추정 실행입니다. 변경 뒤 재계산 판정이 나온 라인은 이 화면에서 다시 실행할지 판단합니다.
CK13N자재 원가 추정 표시원가 추정의 품목별 구성 항목을 확인합니다. 이 앱의 반영액과 맞춰 보는 대사 지점입니다.
CK24가격 갱신표준원가 확정 시점을 확인합니다. 원가계산일 이후 변경만 비교하는 기준이 됩니다.
MM03자재 마스터 표시구성품의 가격 관리와 평가 단가를 확인합니다. 미등록(NOPRC) 라인은 여기서 단가를 먼저 봅니다.

이 앱에서 이상한 값을 만나면 해당 라인의 품목·구성품을 들고 위 T-code 로 원천을 확인하고, 표준 화면의 값을 확인했다면 이 앱의 같은 품목·월 행에서 다시 읽습니다. 법정·감사 대응에 쓰는 보고서는 표준에 그대로 두고 이 화면은 월마감 전 점검에 곁들이는 것이어서, 운영 전환 때 기존 리포트를 없앨 필요는 없습니다.

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

표준 CDS 분석 쿼리·Fiori 분석 앱·Analysis for Office 는 합계와 추이를 보는 데 알맞고, 이 앱은 구성 라인 한 줄의 재계산과 변경일·계산 순서 판정이라는 좁은 일에 집중합니다. 같은 CDS 뷰 위에 올릴 수 있도록 뷰 레이어를 나눠 두었습니다. 실제로 쓸 수 있는 표준 분석 뷰의 이름은 환경마다 달라 확인 필요로 남깁니다.

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

자리무엇을 손대나비고
구성품 단가 원천평가 단가를 읽는 뷰가격 관리 방식 확인 필요
변경 이력 원천단가·소요량 변경일변경 문서 사용 여부 확인 필요
허용 한도품목·라인 0.5% 한도 값회사 기준으로 변경
원가계산일품목별 원가 추정 일자원가 추정 헤더에서 읽음(확인 필요)
계획수량월 계획수량 원천생산 계획 연계 확인 필요
권한플랜트 단위 조회 권한DCL 로 설계

분석 지표 정의표

지표산식·판정 기준화면 위치원천 데이터비고
라인 원가소요량 × (1+스크랩률) × 단위원가구성 라인 명세STPO · MBEW단가 출처는 확인 필요
롤업 단위원가재료비 + 가공비 (하위부터 위로)품목 롤업산출가공비 출처는 확인 필요
반영 단위원가원가 추정의 품목별 원가 금액품목 롤업KEKO · CKIS품목 구성 방식은 확인 필요
차이·차이율롤업 − 반영, 차이 ÷ 반영전 탭산출허용 한도는 회사 기준
월 롤업 월액완제품 롤업 단위원가 × 월 계획수량월별 추이산출 · 계획수량계획수량 출처는 확인 필요
변경 뒤 미재계산변경일 > 원가계산일 이면서 차이율 한도 초과구성 라인 명세 · 구성품 단가변경 이력(확인 필요)점검 필요로 표시
롤업 순서하위 원가계산일 > 상위 원가계산일구성 라인 명세KEKO순서 확인 대상으로만 표시

CDS 구성

이 화면이 운영 데이터에 붙을 때 필요한 CDS·DDIC 구성을 스케치로 공개합니다. 실제 필드와 테이블은 시스템 버전·고객사 설정에 따라 다를 수 있어 확인하지 못한 부분은 “확인 필요”로 적었습니다.

뷰 레이어 구성

레이어뷰·객체하는 일왜 나누나
기준ZBR_COMPPRICE (테이블)구성품·월별 단가와 변경일단가 원천이 환경마다 달라 한 곳에서 매핑합니다
차원ZI_BomLineBOM 구성 라인·소요량·스크랩률소요량 정의를 한 번만 둡니다
차원ZI_CostEstItemAmt원가 추정의 품목 원가와 원가계산일반영액 원천을 분리합니다
큐브ZI_BomRollCube소요량 × 단가 재계산, 차이·판정 코드계산을 한 곳에서 하고 화면은 읽기만 합니다
쿼리ZC_BomRollQuery조회조건·화면 컬럼·필터 정의화면 요구가 바뀌어도 큐브는 그대로입니다
집계ZI_BomRollMonth월별 롤업·반영 월액월 합계 대사의 기준입니다
권한ZR_BomRollCubeDcl플랜트 단위 접근 제한원가는 조직별로 보이는 범위가 다릅니다
서비스ZUI_BomRollOData V2 서비스 정의·바인딩화면의 서비스 주소가 됩니다

① 구성품 단가 기준 테이블

구성품·월별 단가와 변경일을 담는 매핑 테이블입니다. 표준 평가 테이블을 직접 읽을 수 있다면 뷰로 대체해도 됩니다. 이 테이블이 비어 있으면 모든 라인이 NOPRC 로 걸리므로 운영에서 가장 먼저 채우는 자리입니다.

@EndUserText.label : '구성품 단가 기준 (스케치)'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
define table zbr_compprice {
  key client  : abap.clnt not null;
  key werks   : werks_d not null;
  key matnr   : matnr not null;
  key spmon   : spmon not null;
  std_price   : abap.curr(13,2);
  run_price   : abap.curr(13,2);
  chg_date    : abap.dats;
}

② BOM 구성 차원

BOM 헤더·품목·자재 할당을 묶어 구성 라인 한 줄의 소요량과 스크랩률을 돌려줍니다. 소요량 단위 환산이 여기서 결정되므로 이후 모든 금액이 이 정의에 의존합니다. 단위 환산 방식은 확인 필요입니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'BOM 구성 라인 (스케치)'
@ObjectModel.usageType: { sizeCategory: #XL, serviceQuality: #X, dataClass: #MASTER }
define view entity ZI_BomLine
  as select from mast
    inner join stko on stko.stlty = 'M' and stko.stlnr = mast.stlnr and stko.stlal = mast.stlal
    inner join stpo on stpo.stlty = stko.stlty and stpo.stlnr = stko.stlnr
{
  key mast.matnr                  as ParentCode,
  key mast.werks                  as Plant,
  key stpo.posnr                  as ItemNo,
      stpo.idnrk                  as CompCode,
      stpo.menge                  as Qty,        // 소요량 (단위 환산 확인 필요)
      stpo.ausch                  as ScrapPct,
      stpo.aennr                  as ChangeNo    // 변경 번호 (변경일 매핑 확인 필요)
}

③ 원가 추정 반영 단위원가 차원

원가 추정 헤더와 품목에서 품목별 단위원가와 원가계산일을 읽습니다. 반영액이 어느 품목 유형에 들어가는지는 고객사 원가 구조에 따라 다르므로 확인 필요로 두었습니다.

@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '원가 추정 품목 원가 (스케치)'
define view entity ZI_CostEstItemAmt
  as select from keko
    inner join ckis on ckis.kalnr = keko.kalnr and ckis.bzobj = keko.bzobj
{
  key keko.matnr        as Material,
  key keko.werks        as Plant,
  key ckis.posnr        as ItemNo,
      keko.kadat        as CostingDate,     // 원가계산일 (확인 필요)
      ckis.wrtfw_kpf    as ItemAmount       // 품목 원가 금액 (필드 확인 필요)
}

④ 큐브 — 하위부터 쌓은 재계산과 판정

라인 원가를 계산하고 반영액과의 차이, 판정 코드를 정하는 핵심 뷰입니다. 한도 0.5% 와 코드 우선순위가 여기에 있습니다. 반제품 라인의 단위원가는 하위 롤업 뷰를 읽도록 연결합니다. 판정은 확인할 자리를 알려 줄 뿐 회계 처리를 정하지 않습니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.dataCategory: #CUBE
@EndUserText.label: 'BOM 원가 롤업 큐브 (스케치)'
define view entity ZI_BomRollCube
  as select from ZI_BomLine as ln
    left outer join zbr_compprice as pr
      on pr.werks = ln.Plant and pr.matnr = ln.CompCode
    left outer join ZI_CostEstItemAmt as ce
      on ce.Plant = ln.Plant and ce.Material = ln.ParentCode
{
  key ln.ParentCode, key ln.ItemNo, key ln.CompCode,
      cast( ln.Qty * ( 1 + ln.ScrapPct / 100 ) * pr.std_price as abap.dec(13,2) ) as LineCost,
      ce.ItemAmount                                                                as RunAmt,
      case
        when pr.std_price = 0                  then 'NOPRC'
        when pr.chg_date > ce.CostingDate      then 'PRICE'
        else ''
      end                                                                          as CheckCode
}

⑤ 분석 쿼리 — 화면에 내보내는 모양

조회조건과 컬럼 이름을 화면 요구에 맞춰 정의합니다. 큐브의 계산은 건드리지 않고 필터와 표시 순서만 다룹니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.query: true
@EndUserText.label: 'BOM 원가 롤업 쿼리 (스케치)'
define view entity ZC_BomRollQuery
  as select from ZI_BomRollCube
{
  @AnalyticsDetails.query.axis: #ROWS
  key ParentCode,
  @AnalyticsDetails.query.axis: #ROWS
  key ItemNo,
  @Consumption.filter: { selectionType: #SINGLE, multipleSelections: false }
  CompCode,
  LineCost,
  RunAmt,
  CheckCode
}

⑥ 월 집계 뷰

월별 롤업 월액과 반영 월액을 완제품 기준으로 더하는 뷰입니다. 월 합계 대사(R06·R07)가 이 뷰와 큐브를 맞춰 봅니다.

@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'BOM 원가 월 집계 (스케치)'
define view entity ZI_BomRollMonth
  as select from ZI_BomRollCube
{
  key Period,
      sum( cast( LineCost as abap.dec(15,2) ) ) as RollMonth,
      sum( RunAmt )                             as RunMonth
}
group by Period

⑦ 권한 객체(DCL)

플랜트 단위로 읽기를 제한합니다. 원가센터 단위까지 나누려면 뷰에 원가센터를 노출한 뒤 조건을 추가합니다.

@EndUserText.label: 'BOM 원가 롤업 권한 (스케치)'
@MappingRole: true
define role ZR_BomRollCubeDcl {
  grant select on ZI_BomRollCube
    where ( Plant ) = aspect pfcg_auth( M_MSEG_WWA, WERKS, ACTVT = '03' );
}

⑧ 서비스 정의

쿼리 뷰를 OData V2 서비스로 내보냅니다. 서비스를 게시한 뒤 앱의 서비스 주소만 바꾸면 화면이 실제 데이터에 붙습니다.

@EndUserText.label: 'BOM 원가 롤업 서비스 (스케치)'
define service ZUI_BomRoll {
  expose ZC_BomRollQuery as LineSet;
  expose ZI_BomRollMonth as MonthSet;
}

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다.

해야 할 일무엇을 정하나정하지 않으면누가
구성품 단가 원천 확정평가 단가를 직접 읽을지, 기준 테이블에 옮길지모든 라인이 단가 미등록으로 판정됨원가회계
변경 이력 원천단가·소요량 변경일을 어느 이력에서 가져올지변경 뒤 재계산 판정이 불가능함원가회계·IT
허용 한도0.5% 가 맞는지건수가 실제보다 많거나 적게 나옴원가회계
원가계산일 기준원가 추정 일자의 정의반영액 비교 기준일이 어긋남원가회계
계획수량 원천월 계획수량을 어디서 가져올지월액이 실제와 어긋남생산관리
가공비 처리반제품 자체 가공비의 원천가공비가 0 으로 계산됨원가회계
권한 설계플랜트 단위 조회 범위필요 없는 사람에게도 원가가 보임IT 보안
전송(TR) 순서테이블 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순서활성화 오류로 서비스가 열리지 않음IT
서비스 활성화와 주소 교체서비스를 게시하고 앱의 서비스 주소를 바꿈화면이 샘플 데이터에 계속 붙어 있음IT

운영 데이터로 갈 때

구성 라인이 수십만 건이면 큐브에서 집계 단위를 품목·월까지 먼저 줄이고 라인 단위는 필터를 걸어 내려가도록 하는 편이 안전합니다. 회계연도를 필수 조회조건으로 두고, 원가 추정 헤더와 BOM 헤더의 키에 맞는 인덱스를 확인하며, 응답 시간 기준은 회사가 정합니다. 이 표본은 282건이어서 성능 문제가 드러나지 않으므로 운영 데이터 기준 측정이 따로 필요합니다.

자주 묻는 질문

도입을 검토할 때 자주 나오는 질문을 주제별로 모았습니다.

숫자와 산식

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

구성 라인마다 소요량·스크랩률·구성품 단위원가로 라인 원가를 다시 계산하고, 하위 반제품부터 위로 롤업 단위원가를 쌓아 원가계산 반영액과 견줍니다. 단가·소요량이 원가계산 뒤에 바뀌었는데 재계산이 빠진 라인과 롤업 순서가 어긋난 라인을 보여 주며, 원인을 단정하지 않고 확인할 자리만 알려 줍니다.

라인 원가는 어떻게 계산하나요?

소요량에 (1 + 스크랩률)을 곱하고 구성품 단위원가를 곱해 소수 둘째 자리에서 반올림합니다. 원자재 라인은 구성품 현재 단가를, 반제품 라인은 그 반제품의 롤업 단위원가를 단위원가로 씁니다.

롤업 단위원가는 무엇인가요?

품목의 재료비(원자재 라인 합계)와 가공비(반제품 라인 합계에 자체 가공비를 더한 값)를 더한 값입니다. 하위 반제품부터 계산해야 상위 품목이 맞게 나오므로 BOM 깊이가 깊은 품목부터가 아니라 낮은 레벨부터 순서대로 쌓습니다.

차이와 차이율은 무엇인가요?

차이는 롤업 단위원가에서 반영 단위원가를 뺀 값이고, 차이율은 그 차이를 반영 단위원가로 나눠 100 을 곱한 값입니다. 절대값이 0.5% 를 넘으면 점검 필요 후보가 되고, 한도는 회사 기준에 맞춰 바꾸는 값입니다.

단가와 소요량은 어느 시점의 값을 쓰나요?

월말 기준일의 값을 쓰고, 반영 단위원가는 원가계산일 기준 값으로 만든 금액입니다. 이 시점 차이가 변경 뒤 재계산 판정의 근거가 됩니다.

대사식은 무엇을 검산하나요?

품목 롤업 = 재료비 + 가공비, 라인 합계 = 품목 재료비, 반영 단위원가 + 차이 = 롤업 단위원가, 라인 반영액 + 차이 = 라인 원가, 상위 라인의 반제품 단가 = 그 반제품 롤업, 월 롤업 월액 = 완제품 합계, 반영 월액 + 월 차이 = 롤업 월액, 사용 라인 수 합계 = 구성 라인 수의 여덟 가지입니다. 이 표본에서 총 598건을 검사해 차이가 0건이었습니다.

화면과 조작

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

회계연도 2026 으로 한 번 자동 조회되어 요약 타일과 구성 라인 명세 탭이 채워집니다. 조건을 바꾸려면 조회 버튼을 누르거나 입력 칸에서 Enter 를 누릅니다.

탭은 어떤 순서로 보면 좋은가요?

구성 라인 명세 → 품목 롤업 → 구성품 단가 → 월별 추이 → 대사 결과 순서로, 근거에서 넓은 범위로 올라갑니다. 점검 필요 라인이 어느 품목·월에 몰렸는지 보려면 점검 결과 필터부터 걸면 빠릅니다.

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

같은 품목·월의 구성 라인 목록이 상세 창으로 열려 소요량·스크랩률·단위원가가 어떻게 곱해졌는지 따라갈 수 있습니다. 바깥 영역을 누르면 닫힙니다.

조회 결과를 내려받을 수 있나요?

현재 탭의 조회 결과를 UTF-8 CSV 로 내려받을 수 있습니다. 필터를 건 상태라면 그 조건의 결과만 담깁니다.

조회조건을 비우면 어떻게 되나요?

비운 조건은 필터에 넣지 않아 전체를 읽습니다. 회계연도만 필수입니다.

휴대폰에서도 쓸 수 있나요?

좁은 폭에서는 조회조건이 한 줄씩 쌓이고 표는 가로로 스크롤됩니다. 탭·상세 창 동작은 같습니다.

분석과 대사

점검 필요는 무엇을 뜻하나요?

그 라인에서 확인할 일이 있다는 표시일 뿐 오류를 확정한 것이 아닙니다. 코드(NOPRC·ORDER·BOM·PRICE·CHILD)가 어느 쪽을 확인할지 알려 줍니다.

PRICE 와 BOM 은 어떻게 다른가요?

PRICE 는 구성품 단가가, BOM 은 소요량이 원가계산일 뒤에 바뀐 경우입니다. 둘 다 차이율이 한도를 넘을 때만 붙고, 단가 미등록이면 NOPRC 가 먼저 걸립니다.

CHILD 코드는 언제 붙나요?

하위 반제품의 반영 단위원가와 차이가 있어 그 차이가 상위 라인에 번졌을 때입니다. 상위 품목을 고치기 전에 하위 품목의 점검 결과를 먼저 확인하라는 뜻입니다.

ORDER 코드는 무엇인가요?

하위 반제품이 상위 품목보다 늦게 재계산된 경우입니다. 롤업은 하위가 먼저 끝나야 하므로 계산 순서를 확인할 자리로 표시합니다.

의도적 예외 행은 무엇인가요?

단가 변경·소요량 변경·계산 순서·단가 미등록 라인을 일부러 넣어 판정이 잡아내는지 보는 행입니다. 대사 차이 건수와는 따로 세어 대사 0건이 예외를 가리지 않게 합니다.

점검 필요가 많으면 어떻게 읽나요?

한도를 넘은 라인이 많다는 뜻이지 모두 오류라는 뜻은 아닙니다. 하위 반제품 하나의 차이가 여러 상위 품목으로 번지는 경우가 많으므로 낮은 레벨 품목의 점검 결과부터 보는 편이 빠릅니다.

도입과 운영

누가 쓰면 좋은가요?

월마감 전에 BOM 원가 반영 상태를 확인하는 원가 담당자와 단가·소요량을 바꾸는 구매·생산기술 담당자입니다. 확인 요청을 주고받을 때 같은 숫자를 보게 됩니다.

표준 T-code 를 없애도 되나요?

아닙니다. BOM 표시(CS03), 다단계 BOM 전개(CS12), 원가 추정 생성·표시(CK11N·CK13N) 등은 표준에서 계속 씁니다. 이 화면은 조회·점검 관점을 더하는 확장입니다.

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

구성품 단가·변경 이력·원가계산일의 원천을 정하고 CDS 뷰와 서비스를 만든 뒤, 앱의 서비스 주소를 바꿉니다. 원천 정의는 회사마다 달라 소요 기간은 확인 필요입니다.

권한은 어떻게 나누나요?

큐브 위에 권한 객체를 걸어 플랜트 단위로 읽기를 제한합니다. 원가센터 단위까지 나누려면 뷰에 원가센터를 노출하는 확장이 필요합니다.

대용량 데이터에서도 되나요?

이 표본은 구성 라인 282건이어서 성능을 말할 수 없습니다. 운영 데이터에서는 회계연도를 필수로 두고 품목·월 단위로 먼저 집계한 뒤 라인으로 내려가도록 설계합니다.

이 화면의 결과를 최종 판단으로 써도 되나요?

아닙니다. 점검 도구이며 회계 처리와 최종 판단은 회사와 감사인이 합니다. 점검 필요가 나온 라인은 표준 화면에서 원천을 확인한 뒤 판단하시기 바랍니다.

샘플 데이터는 실제 값인가요?

아닙니다. 가상의 제조 회사와 가상의 단가로 만든 검증용 데이터이며 실제 고객사의 값은 쓰지 않았습니다.