보조부문 원가 배부방식 비교 점검 — 제조원가 분석, 직접·단계·상호배부로 다시 계산해 제조부문 원가가 얼마나 갈리는지 장부와 맞춰 보는 월마감 화면
직접배부 · 단계배부 · 상호배부 재계산 · 방식 간 격차율 · 장부 단계배부액 대조 · 점검 필요만 골라 보기 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지
소개 영상1분 44초8개 장면음성 안내·자막표지에서 점검 필요 조회, 행 상세, 보조부문 잔액, 배부 명세, 대사 결과를 거쳐 정리까지
개발 배경 — 이 앱을 사용해야 하는 이유
제조 현장의 월마감에는 늘 같은 질문이 따라붙습니다. 동력·수선·품질관리·자재운반 같은 보조부문의 원가를 제조부문에 어떻게 나눴나, 다른 방식으로 나눴다면 제조부문 원가가 얼마나 달라졌을까, 장부에 남은 배부액은 다시 계산한 값과 맞나. 지금은 이 세 답이 SAP 배분·배부 결과 화면, 용역 수량을 적어 둔 엑셀, 방식별 시뮬레이션 파일에 흩어져 있어서 마감 때마다 사람이 맞춰야 합니다.
이 앱은 보조부문 원가를 직접배부 · 단계배부 · 상호배부 세 방식으로 같은 용역 수량에서 다시 계산해 제조부문·월마다 나란히 보여 줍니다. 방식 사이의 차이를 격차율로 가르고, 장부에 남은 단계배부액을 재계산 값과 1원 단위로 대조해 확인이 필요한 제조부문과 월만 골라 줍니다. 표준 배분·배부 실행은 SAP 표준 T-code 가 그대로 맡고, 이 화면은 그 결과를 조회·검증하는 관점을 더해 확장합니다. 이 분석은 특정 기준서를 적용하는 화면이 아니라 제조원가 분석 목적의 점검 도구이며, 배부 기준과 최종 판단은 회사와 감사인이 합니다.
배부 방식을 하나만 보는 리포트는 두 번째 질문에서 멈춘다
장부에는 한 가지 방식으로 나눈 결과만 남습니다. 그래서 “상호배부로 했다면 도장부문 원가가 얼마나 달랐을까” 같은 질문이 나오면 엑셀을 열어 용역 수량을 다시 붙이고 연립방정식을 새로 풀어야 합니다. 이 앱은 세 방식을 처음부터 같은 용역 수량 위에서 계산해 두므로, 같은 제조부문·월을 놓고 방식만 바꿔 가며 볼 필요가 없습니다. 한 행에 직접·단계·상호 배부액과 총원가가 나란히 놓입니다.
차이가 있다는 것과, 봐야 할 만큼 크다는 것은 다르다
세 방식은 보조부문 사이의 용역 주고받음이 작으면 비슷하고 커질수록 갈립니다. 하지만 모든 차이를 들여다볼 수는 없습니다. 이 앱은 제조부문·월마다 (세 방식 배부액의 최댓값 − 최솟값) ÷ 단계배부 총원가를 격차율로 계산하고, 허용 격차율(검증용 샘플에서는 1.00%)을 넘은 곳만 점검 필요로 표시합니다. 이 샘플에서는 27건 가운데 3건이 허용치를 넘었습니다. 가장 큰 곳은 7월 도장부문의 2.43% 입니다.
장부 배부액이 재계산과 다르면 어디서 갈렸는지 찾기가 어렵다
배분 사이클의 용역 수량이 월 중간에 바뀌었거나 전기 내역이 일부 빠지면, 장부의 단계배부액은 규칙대로 다시 계산한 값과 조금씩 어긋납니다. 합계만 보면 묻히는 차이입니다. 이 앱은 장부 단계배부액과 재계산 단계배부액의 차이를 배부 명세 한 줄 단위로 대조하고, 1원을 넘는 줄이 있으면 제조부문 행과 보조부문 행, 월 행까지 올라가며 점검 필요로 알립니다. 이 샘플에서는 세 줄(3월 수선→조립, 5월 동력→도장, 8월 품질관리→절단)이 그렇게 걸렸습니다.
사용 방법
- 조회조건 입력 — 회계연도(필수, 4자리)를 확인합니다. 제공 부문·제조부문·배부 방식·마감 월·마감일·점검 결과는 선택이며 비워 두면 전체입니다. 화면을 처음 열면 기본 조건으로 자동 조회됩니다.
- 조회 버튼 또는 Enter — 조회조건 영역 가장 오른쪽의 조회 버튼을 누르거나, 입력 칸에서 Enter 키를 누릅니다. 초기화 버튼은 같은 줄에 있습니다.
- 요약 확인 — 위쪽 여섯 개 타일(보조부문 원가 · 방식 간 격차 합계 · 최대 격차율 · 장부와 재계산 차이 합계 · 점검 필요 건수 · 대사 차이 건수)을 봅니다. 금액은 백만원 단위입니다.
- 탭 이동 — 제조부문 비교 → 보조부문 잔액 → 배부 명세 → 월별 추이 → 대사 결과 순서로, 넓은 곳에서 근거까지 좁혀 갑니다.
- 행 클릭 상세 — 행을 누르면 세 방식의 배부액·총원가·장부 배부액과 그 부문·월의 배부 명세가 방식별로 열립니다.
- 내보내기 — 현재 탭의 조회 결과를 UTF-8 CSV 로 내려받습니다. 파일명은 기능명과 탭 이름입니다.
숫자를 믿을 수 있는가 — 검증 결과
배부 화면에서 가장 비싼 질문은 “이 숫자 맞아?” 입니다. 그래서 계산을 만드는 쪽에서 먼저 대사식을 세워 두고 전수로 돌렸습니다. 아래는 이 검증용 샘플 데이터의 결과입니다. 샘플은 가상의 보조부문 4곳(동력·수선·품질관리·자재운반)과 제조부문 3곳(절단·조립·도장), 2026년 1~9월 마감으로 만들었고 실제 고객사의 계정체계나 금액은 쓰지 않았습니다.
| 번호 | 대사식 | 검사 건수 | 차이 |
|---|---|---|---|
| R01 | 직접배부 — 보조부문 발생원가 = 제조부문 배부 합계 | 36 | 0 |
| R02 | 단계배부 — 배부 대상 원가(발생 + 수취) = 배부 합계 | 36 | 0 |
| R03 | 상호배부 — 연립 총원가 = 배부 합계 | 36 | 0 |
| R04 | 세 방식의 제조부문 배부 합계가 같다(월별) | 18 | 0 |
| R05 | 제조부문 총원가 = 고유원가 + 배부액(방식별) | 81 | 0 |
| R06 | 용역 비율 합계 = 100%(제공 부문·방식별) | 108 | 0 |
| R07 | 배부 명세 합계 = 부문별 비교 배부액 | 81 | 0 |
| R08 | 월별 추이 합계 = 부문별 비교 합계 = 보조부문 원가 | 9 | 0 |
정합성 대사 8건은 모두 차이가 없습니다(R06 의 최대 차이 0.0001 은 비율을 소수 4자리로 반올림한 값이며 허용 0.001 안입니다). 이와 별도로 의도적 예외 두 가지를 일부러 심어 두고 대사 차이와 분리해 따로 집계했습니다.
| 구분 | 무엇을 심었나 | 검사 건수 | 걸린 건수 |
|---|---|---|---|
| E01 | 장부 단계배부액이 재계산과 다른 배부 명세(3월 수선→조립 · 5월 동력→도장 · 8월 품질관리→절단) | 162 | 3 |
| E02 | 방식 간 격차율이 허용 1.00% 를 넘는 제조부문·월(5월 도장 · 7월 조립 · 7월 도장) | 27 | 3 |
두 예외가 겹치는 5월 도장을 한 곳으로 세면 점검 필요 제조부문·월은 5건입니다. 의도적 예외를 일부러 남긴 이유는, 점검 화면이 정말 이상한 자리를 잡아내는지를 같은 검증에서 함께 보기 위해서입니다. 화면 쪽은 이와 별도로 브라우저 자동화로 확인했습니다 — 점검 필요만 조회하면 5건이 남는지, 배부 방식 단계배부와 3월을 고르면 명세가 18건인지, 마감일을 5~6월로 좁히면 108건인지, Enter 키 조회가 동작하는지를 매번 다시 잽니다.
무엇으로 만들었나
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 | OpenUI5 1.120 · sap_horizon 테마 · sap.ui.table.Table 다섯 개를 탭으로 | 행이 수백 줄이어도 가로·세로 스크롤이 자연스럽고, 열 머리글이 고정되어 월마감 화면에 맞습니다. |
| 데이터 연결 | OData V2 서비스 한 개 · 앱은 모델 경로에만 바인딩 | 조회조건은 필터로, 정렬·건수는 모델 기능으로 처리합니다. 서비스 주소를 코드에 박지 않아 운영 서비스로 바꾸는 일이 설정 교체로 끝납니다. |
| 서비스 구성 | 다섯 개 결과집합(제조부문 비교 · 보조부문 잔액 · 배부 명세 · 월별 추이 · 대사 결과)과 파생 지표 계산 두 개 | 화면의 탭마다 결과집합을 따로 두어 키가 겹치지 않고, 격차율의 최댓값·최솟값 같은 파생 지표는 함수로 계산합니다. |
| 계산·판정 로직 | 직접·단계·상호배부 재계산 · 격차율 · 장부 대조 · 대사식 | 방식별 배부액을 최대잔여법으로 원 단위까지 맞춰 합계가 정확히 같아지게 하고, 상호배부는 연립 관계를 정수 반복으로 풉니다. |
| 오류 처리 | 서비스가 연결되지 않으면 안내 창 | 빈 화면이나 콘솔 오류로 두지 않고, 무엇이 안 됐는지 사용자 말로 알립니다. |
| 테마 | sap_horizon (SAP Horizon) | SAP 표준 Fiori 화면과 같은 색·글꼴·간격을 써서 표준 화면 옆에 놓아도 이질감이 없습니다. |
앱 정보표
| 항목 | 내용 |
|---|---|
| 업무 영역 | 관리회계(CO) · 제조원가 분석 |
| 관련 기준서·대상 영역 | 관련 기준서 없음(-) · 대상 영역: 제조원가 분석(보조부문 원가 배부) |
| SAP 표준 T-code | KSU5 · KSV5 · KSU1 · KSB1 · KB21N · S_ALR_87013611 |
| 화면 성격 | 월마감 제조원가 점검 조회 화면 |
| 데이터 연동 | OData V2 서비스(상대 경로, manifest 선언) |
| 테마 | sap_horizon |
실행 화면
실제로 돌아가는 화면 7종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 보는 자리인지 아래에 적었습니다. 숫자는 모두 같은 검증용 샘플 데이터에서 나온 것이라 화면끼리 서로 맞춰 보셔도 됩니다.
처음 열었을 때
조회조건과 요약, 표가 한 화면에 세로로 쌓입니다. 가장 먼저 눈에 들어와야 하는 것은 “오늘 확인할 곳이 몇 건인가” 입니다.

화면을 열면 기본 조건으로 바로 조회됩니다. 맨 위 파란 안내는 세 방식이 어떻게 다른지(직접은 제조부문 비율만, 단계는 용역 비중이 큰 보조부문부터, 상호는 주고받음을 연립으로) 한 번 적어 둔 것이고, 그 아래가 조회조건과 요약 타일입니다. 표의 “방식 간 격차율”은 세 방식 배부액의 최댓값과 최솟값 차이를 단계배부 총원가로 나눈 비율이며, 허용 1.00% 를 넘는 행만 주황색 “점검 필요”로 바뀝니다. 탭 이름 위의 작은 숫자(27 · 36 · 486 · 9 · 10)는 탭마다 몇 건이 조회됐는지입니다.

마감 때 가장 먼저 쓰는 모습입니다. 27건을 훑지 않고 5건으로 줄여 시작합니다. 5건은 3월 조립(장부 차이) · 5월 도장(격차율과 장부 차이 모두) · 7월 조립(격차율) · 7월 도장(격차율) · 8월 절단(장부 차이)입니다. 점검 결과 칸의 문구로 어느 조건에 걸렸는지 바로 구분되고, 다른 탭의 건수도 함께 줄어 보조부문 잔액 3건 · 배부 명세 3건 · 월별 추이 4건이 됩니다.
한 줄에서 근거까지 내려가기
숫자 하나를 눌러 그 숫자를 만든 줄까지 내려가는 흐름입니다. 마지막 화면은 이 모든 줄이 세 방식으로 어떻게 나뉘었는지 보여 줍니다.

예시는 7월 조립부문입니다. 직접배부액 129,651,148원, 단계배부액 138,612,575원, 상호배부액 133,199,917원으로 방식에 따라 최대 8,961,427원이 갈리고 격차율은 1.39% 입니다. 격차에 가장 크게 기여한 보조부문(수선)도 함께 표시되어, 어느 용역 수량 기준부터 확인할지 바로 정할 수 있습니다. 장부 배부액이 단계배부액과 같으면 장부와 재계산 차이는 0 입니다. 닫기 버튼으로 표로 돌아옵니다.

1월에는 수선(비중 24.39%)이 1순위, 자재운반이 2순위, 동력이 3순위, 품질관리가 4순위입니다. 다른 보조부문에 준 용역 비중이 큰 부문부터 먼저 나누기 때문입니다. 1순위 부문은 앞에서 받은 원가가 0 이라 대상 원가가 발생원가와 같고, 뒤 순서 부문일수록 수취원가가 쌓입니다. 세 방식의 배부 후 잔액은 모두 0 이어야 하며, 장부 배부 잔액이 0 이 아닌 달은 점검 필요입니다.

가장 아래 근거 단계입니다. 한 줄이 “제공 부문 → 받는 부문” 한 쌍이어서 합계 숫자가 의심스러우면 여기서 줄 단위로 확인합니다. 방식과 월, 제공 부문, 받는 부문, 마감일 범위로 좁힐 수 있고 마감일 조건은 서비스가 날짜 비교를 직접 처리합니다. 장부 배부액과 재계산이 1원을 넘게 다른 줄은 점검 필요로 나옵니다. 직접배부와 상호배부 줄은 장부에 반영하지 않는 비교용 재계산이라 장부와 대조하지 않습니다.
월로 보고, 검산으로 닫기
월별 흐름을 보고 마지막에 대사 결과로 숫자를 닫습니다.

1월부터 9월까지 9행입니다. 세 방식의 제조부문 배부 합계는 서로 같고 보조부문 원가와도 같아야 하므로, 한 달이라도 어긋나면 계산이 틀렸다는 신호입니다. 점검 필요 월(3 · 5 · 7 · 8월)은 해당 월의 제조부문 비교 행을 열어 어느 부문인지 좁혀 갑니다. 최대 격차율은 그 달의 제조부문 중 가장 큰 값입니다.

화면의 숫자가 스스로 맞는지 보여 주는 탭입니다. 숫자를 가져다 쓰기 전에 대사 차이 건수 타일이 0 인지 보면 됩니다. 의도적 예외(E01 · E02)는 대사 차이와 섞이지 않게 따로 줄을 세웠고, 걸린 건수가 3건씩이라는 사실이 점검 화면이 제대로 걸러 낸다는 증거가 됩니다.
화면 뒤에서 일어나는 일
조회 버튼을 누르면 앱은 조회조건을 필터로 바꿔 서비스에 한 번 요청하고, 탭마다 필요한 결과집합을 받아 표에 바인딩합니다. 계산은 화면이 아니라 서비스가 합니다 — 직접·단계·상호배부 재계산, 격차율, 장부 대조, 점검 판정이 모두 서비스 안에서 끝난 뒤 화면은 받은 값을 보여 주기만 합니다. 그래서 같은 조건으로 부르면 어느 화면에서든 같은 숫자가 나옵니다.
- 용역 비율 = 제공 부문이 받는 부문에 준 용역 수량 ÷ 배부 대상 수량 합계. 직접배부는 제조부문만, 단계배부는 아직 배부하지 않은 보조부문과 제조부문, 상호배부는 자신을 뺀 모든 부문이 대상입니다.
- 직접배부액 = 보조부문 발생원가 × 제조부문 용역 비율. 원 단위 끝수는 최대잔여법으로 맞춰 합계가 정확히 같게 합니다.
- 단계배부액 — 대상 원가(발생원가 + 앞 순서 보조부문에서 받은 배부액)에 비율을 곱합니다. 이미 배부한 보조부문에는 되돌려 배부하지 않습니다.
- 상호배부액 — 대상 원가에 다른 보조부문에서 받은 배부액을 더해, 서로 받고 주는 관계를 정수 반복 계산으로 풀어 모든 보조부문에서 동시에 성립하게 합니다.
- 제조부문 총원가 = 고유원가 + 방식별 배부액. 방식 간 격차율 = (배부액 최댓값 − 최솟값) ÷ 단계배부 총원가 × 100.
판정 규칙 — 어떤 때 점검 필요가 되나
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 제조부문·월에서 세 방식 배부액의 최댓값 − 최솟값이 단계배부 총원가의 1.00%(허용 격차율)를 넘음 | 점검 필요 · 격차 | 격차에 가장 크게 기여한 보조부문의 용역 수량 기준을 확인하고 배부방식 선택의 영향을 검토합니다. |
| 장부 단계배부액 − 재계산 단계배부액의 절댓값이 1원을 넘음 | 점검 필요 · 장부 차이 | 장부 배부에 쓴 용역 수량의 기준월과 전기 내역을 원천과 대조합니다. |
| 위 두 조건에 모두 해당 | 점검 필요 · 둘 다 | 두 조치를 함께 확인합니다. |
| 그 밖 | 정상 | 조치 없음 |
| 보조부문의 장부 배부합계가 단계배부 대상 원가와 다름(보조부문 행) | 점검 필요 | 배부되지 않았거나 과다 배부된 금액을 배부 명세에서 찾아 확인합니다. |
| 월 집계에서 점검 필요 제조부문이 1곳 이상(월 행) | 점검 필요 | 해당 월의 제조부문 비교 행을 열어 확인합니다. |
| 직접배부·상호배부 명세 행 | 비교용 재계산 | 장부 반영이 없어 장부와 대조하지 않고 방식 간 비교에만 씁니다. |
점검 필요는 “잘못 배부했다”는 뜻이 아닙니다. 용역 수량의 기준월이나 전기 내역처럼 원천에서 확인해야 할 자리가 있다는 표시이며, 원인을 단정하지 않습니다.
조회조건
| 조회조건 | 필수 | 대상 칸 | 조회 방식 |
|---|---|---|---|
| 회계연도 | 필수 | 회계연도 | 4자리, 기본 2026 · Gjahr eq |
| 제공 부문 | 선택 | 배부 명세·보조부문 잔액 | 전체면 조건 없음 · FromDept eq |
| 제조부문 | 선택 | 제조부문 비교·배부 명세 | 전체면 조건 없음 · MfgDept eq |
| 배부 방식 | 선택 | 배부 명세 | 직접 · 단계 · 상호 · Method eq |
| 마감 월 시작·종료 | 선택 | 마감 월 | 둘 다 있으면 범위 · Period ge … and Period le … |
| 마감일 시작·종료 | 선택 | 배부 명세 | 날짜 범위 — 서비스가 날짜 비교를 직접 처리 |
| 점검 결과 | 선택 | 전 탭 | 전체면 조건 없음 · CheckStatus eq |
결과 컬럼
| 탭 | 주요 컬럼 | 의미 |
|---|---|---|
| 제조부문 비교 | 방식 간 격차율 · 방식 간 최대 격차 · 격차 주 보조부문 · 직접/단계/상호 배부액 · 단계−직접 차이 | 같은 제조부문·월을 세 방식으로 나란히 비교하고 가장 갈리게 만든 보조부문을 짚습니다. |
| 보조부문 잔액 | 단계배부 순서 · 보조부문 간 용역 비중 · 발생원가 · 수취원가 · 대상 원가 · 방식별 배부 합계와 잔액 | 보조부문이 받은 원가를 모두 내보냈는지(잔액 0) 확인합니다. |
| 배부 명세 | 제공→받는 부문 · 용역 수량 · 배부 비율 · 배부 대상 원가 · 배부액 · 장부 배부액 · 장부−재계산 차이 | 한 쌍씩 근거를 보여 줍니다. |
| 월별 추이 | 보조부문 원가 · 방식별 배부 합계 · 장부 배부 합계 · 최대 격차율 | 월 단위로 이어서 봅니다. |
| 대사 결과 | 대사식 · 최대 차이 · 검사 건수 · 차이 건수 | 숫자 자체의 정합성을 보여 줍니다. |
좁은 화면에서 달라지는 것
이 화면은 열 수가 많은 표를 한 줄로 읽는 월마감 점검 화면이라 넓은 화면(1600px 기준)에서 검증했습니다. 표는 가로 스크롤을 지원하지만, 휴대폰 크기의 좁은 화면 배치는 이번 검증 범위에 넣지 않았고 확인 필요로 남겨 둡니다.
파일 구성
| 구분 | 내용 |
|---|---|
| 앱 본체 | index.html · manifest.json · Component.js · controller · view · model · css · i18n |
| 데이터 서비스 | OData 서비스 정의와 결과집합별 샘플 자료, 그리고 조회·단건·생성·수정·삭제·함수 계산을 구현한 서비스 모듈 |
| 설명서·영상 | 설명서 한 장과 소개 영상(1분 44초) · 영상 대표 이미지 |
| 검증 전용 | 검증용 샘플 화면 · 샘플 서버 스크립트 · 샘플 데이터 — 앱 본체는 이 영역을 읽지 않습니다 |
SAP 표준 기능 확장 포인트
이 앱은 SAP 표준을 대신하지 않습니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다. 어디까지가 표준이고 어디서부터 이 앱인지를 먼저 적습니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | 표준으로 되는 부분 | 표준에서 걸리는 자리 | 이 앱이 더하는 관점 |
|---|---|---|---|
| 보조부문 원가를 제조부문에 배분·배부 | KSU5(배분) · KSV5(배부) 실행 | 사이클에 정해 둔 한 가지 방식의 결과만 남습니다 | 같은 용역 수량으로 세 방식을 다시 계산해 나란히 봅니다 |
| 배부 결과 확인 | KSB1 로 전표 단위 개별 항목 조회 | 전표를 하나씩 열어야 부문·월 단위 흐름이 안 보입니다 | 제조부문·월·제공 부문 단위로 모아 보고 점검 필요만 걸러냅니다 |
| 방식을 바꿨을 때의 영향 | 사이클을 복사해 테스트 실행 | 매번 사이클을 고쳐 돌려야 하고 결과 비교는 사람이 합니다 | 세 방식 결과와 격차율이 항상 같이 있습니다 |
| 장부와 규칙 계산의 대조 | 표준에는 별도 화면이 없습니다 | 합계 대조는 엑셀로 합니다 | 장부 단계배부액과 재계산을 줄 단위로 맞춥니다 |
| 부문별 원가 합계 확인 | S_ALR_87013611 | 실적·계획·차이 리포트라 배부 방식 비교는 담지 않습니다 | 보조부문 발생원가를 같은 값으로 이어받아 배부 흐름을 얹습니다 |
T-code 별 연계 지점
| 표준 T-code | 이름 | 이 앱과의 연계 |
|---|---|---|
KSU5 | 배분(Assessment) 실행 | 배분한 결과를 이 화면의 장부 단계배부액과 맞춰 봅니다. 두 숫자가 다르면 배부 명세 탭에서 어느 줄인지 찾습니다. 이 앱 결과에서 확인이 필요한 줄이 나오면 KSU5 의 사이클 실행 로그와 대조합니다. |
KSV5 | 배부(Distribution) 실행 | 일차원가 그대로 나눈 배부 결과를 재계산 직접배부와 비교합니다. 직접배부 비교용 행은 장부 반영이 없으니 KSV5 결과와 방식 차이를 보는 용도입니다. |
KSU1 | 배분 사이클 변경 | 사이클의 단계 순서와 배부 기준(통계 지표)을 이 앱의 단계배부 순서와 대조합니다. 순서나 기준을 바꾸는 일은 표준에 남겨 둡니다. |
KSB1 | 코스트센터 실적 개별 항목 | 보조부문 발생원가와 배부 전표의 출처를 확인하는 자리입니다. 이 앱의 보조부문 잔액 탭에서 발생원가가 이상하면 KSB1 로 내려갑니다. |
KB21N | 직접 활동 배부 입력 | 활동 수량으로 직접 나눈 경우 용역 수량이 어디서 왔는지 확인합니다. |
S_ALR_87013611 | 코스트센터: 실적/계획/차이 | 부문별 발생원가 합계를 이 앱의 보조부문 원가와 맞춰 보는 대사 지점입니다. |
운영 전환 시 “기존 리포트를 없애야 하나” 에 대한 답은 아니오입니다. 법정 결산과 감사 대응에 쓰는 배분·배부 결과와 전표는 표준 화면에 그대로 남기고, 이 앱은 그 위에서 방식 비교와 점검 용도로 함께 씁니다. 두 화면의 숫자가 맞는지는 위 표의 대사 지점에서 맞춰 봅니다.
S/4HANA 분석 스택과의 자리
S/4HANA 에서는 CDS 뷰로 만든 분석 쿼리를 표준 Fiori 앱이 그대로 띄워 줍니다. 이 앱을 올리기 전에 표준 스택으로 먼저 되는지를 확인하는 편이 유지보수가 쌉니다.
| 표준 자리 | 무엇을 하나 | 이 앱과의 관계 |
|---|---|---|
Query Browser (F1068) | 분석 쿼리 뷰를 목록에서 찾아 바로 실행 | 아래 CDS 구성의 쿼리 뷰를 만들어 두면 보조부문 발생원가와 용역 수량은 이 앱 없이도 볼 수 있습니다. 방식별 재계산과 격차율이 필요 없다면 여기서 끝내도 됩니다. |
View Browser (F2170) | CDS 뷰의 구조와 의존 관계 탐색 | 원가·용역 수량의 표준 원천 뷰를 고를 때 씁니다. |
| Analysis for Microsoft Office | 같은 쿼리를 엑셀 피벗으로 | 엑셀로 내려 다시 가공하는 업무가 많다면 함께 열어 둡니다. |
| KPI Modeler / 카드 | 요약 지표를 런치패드 타일로 | 이 앱의 여섯 개 요약 지표(보조부문 원가 · 격차율 · 점검 필요 건수 등)를 같은 숫자로 타일에 띄울 수 있습니다. |
확장 포인트 — 운영에서 실제로 손대는 자리
- 용역 수량의 원천을 정한다. 제공 부문이 받는 부문에 준 용역 수량은 통계 지표나 활동 수량에서 가져옵니다. S/4HANA 에서의 저장 위치와 필드는 확인 필요이며, 이 값이 정해져야 방식별 비율이 나옵니다.
- 보조부문·제조부문 구분을 매핑 테이블로 둔다. 코스트센터 범주로 갈음할지 별도 매핑을 둘지 정합니다. 새 부문이 생길 때마다 개발자를 부르지 않게 매핑 테이블 한 곳에서 읽습니다.
- 단계배부 순서 기준을 회사 정책으로 확정한다. 샘플은 다른 보조부문에 준 용역 비중이 큰 부문부터입니다. 회사에 이미 정해 둔 순서가 있다면 그것을 따르고 이 앱의 순서를 맞춥니다.
- 허용 격차율을 정한다. 샘플은 1.00% 입니다. 제조부문의 규모와 마감 담당자가 볼 수 있는 건수에 맞춰 정합니다. 너무 낮으면 점검 필요가 쏟아지고, 너무 높으면 봐야 할 차이를 놓칩니다.
- 권한을 표준 객체로 건다. 코스트센터·회사코드 권한을 집계를 읽는 자리에 겁니다. 부문별 원가는 부서 간 비교가 가능한 정보라서 보는 사람을 정해야 합니다.
- 월마감 조회 시점을 정한다. 배분·배부 실행 이후에 조회하도록 마감 일정 안에 한 칸을 넣어 두면 장부 대조가 의미를 가집니다.
분석 지표 정의
| 지표 | 산식·판정 기준 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| 직접배부액 | 보조부문 발생원가 × 제조부문 용역 비율 | 제조부문 비교 · 배부 명세 | ACDOCA · 통계 지표(용역 수량) | 용역 수량의 원천 통계 지표 코드는 확인 필요 |
| 단계배부액 | (발생원가 + 앞 순서에서 받은 배부액) × 아직 배부하지 않은 부문 대상 용역 비율 | 제조부문 비교 · 보조부문 잔액 | ACDOCA · 배분 사이클 | 배부 순서 기준은 회사 정책 확인 필요 |
| 상호배부액 | (발생원가 + 다른 보조부문에서 받은 배부액) × 자신을 뺀 모든 부문 대상 용역 비율 | 제조부문 비교 | ACDOCA · 통계 지표 | 연립 계산을 정수 반복으로 푼 결과 |
| 방식 간 격차율 | (세 방식 배부액 최댓값 − 최솟값) ÷ 단계배부 총원가 × 100 | 제조부문 비교 · 월별 추이 | 위 세 지표 | 허용 격차율 1.00%(샘플 기준) |
| 장부−재계산 차이 | 장부 단계배부액 − 재계산 단계배부액 | 배부 명세 · 제조부문 비교 | 배부 전표 | 허용오차 1원 |
| 보조부문 잔액 | 배부 대상 원가 − 배부 합계 | 보조부문 잔액 | 위 지표 | 세 방식 모두 0 이어야 함 |
CDS 구성
이 사례의 화면은 서비스가 계산한 결과를 보여 줍니다. 운영 데이터로 올릴 때는 원가와 용역 수량을 읽는 일은 CDS 가, 방식별 재계산은 ABAP 클래스가 맡습니다. 아래는 그때 만드는 객체들을 레이어 순서대로 적은 것입니다.
코드는 스케치입니다. 필드 이름과 표준 뷰 이름은 릴리스·환경에 따라 다르므로 그대로 붙여 넣기 전에 View Browser(F2170) 로 실제 이름을 확인해야 합니다. 확인이 필요한 자리는 주석에 적어 두었습니다.
뷰 레이어 구성
| 레이어 | 객체 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | ZAUX_DEPTMAP | 코스트센터 → 보조·제조부문 구분 · 단계배부 순서 · 용역 단위 | 부문은 늘 늘어납니다. 코드에 박으면 늘어날 때마다 개발자를 부르게 됩니다. |
| 차원 | ZI_AuxDept | 부문 한 행 + 구분 + 순서 + 이름 | 큐브의 join 을 한 곳으로 모으고 값 도움말·텍스트가 이 뷰를 봅니다. |
| 큐브(용역) | ZI_AuxUsageQty | 제공 부문 → 받는 부문 → 월 용역 수량 | 세 방식이 같은 수량을 쓰게 합니다. |
| 큐브(원가) | ZI_AuxCostCube | 코스트센터·월 실적 원가(ACDOCA 위) | 장부 원가를 한 곳에서만 읽습니다. |
| 쿼리 | ZC_AuxCostQuery | 축 기본 배치와 필터 | 표준 Fiori 와 Analysis for Office 가 그대로 띄웁니다. |
| 권한 | ZI_AUXCOSTCUBE(DCL) | 회사코드 · 코스트센터 권한 | 집계를 읽는 자리에 걸어야 뺄셈으로 새지 않습니다. |
| 서비스 | ZR_AuxAllocCompare + 조회 클래스 | 직접·단계·상호배부 재계산과 격차율 | 순서와 연립 계산은 SQL 로 안 되므로 클래스가 맡습니다. |
① 부문 매핑 테이블
방식별 계산의 모든 대상이 이 표에서 정해집니다. 어느 코스트센터가 보조부문이고, 몇 번째로 배부하는지를 정하는 자리라 운영 전환에서 가장 먼저 합의해야 하는 항목입니다. 유효기간을 둔 이유는 중간에 부문 체계가 바뀌어도 과거 숫자가 흔들리지 않게 하기 위해서입니다.
" ────────────────────────────────────────────────────────────────
" ZAUX_DEPTMAP — 보조·제조부문 매핑
" 역할 : 코스트센터가 보조부문인지 제조부문인지, 단계배부 순서는 몇 번인지를 담는다
" 이렇게 나눈 이유 : 부문은 늘 늘어난다. 코드에 박으면 새 부문마다 개발자를 부르게 된다
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '보조·제조부문 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zaux_deptmap {
key client : abap.clnt not null;
key kokrs : kokrs not null; " 관리회계 영역
key kostl : kostl not null; " 코스트센터
key valid_to : abap.dats not null; " 유효 종료일 — 체계가 바뀌어도 과거 숫자가 흔들리지 않게
dept_type : abap.char(3); " AUX 보조부문 / MFG 제조부문
step_seq : abap.numc(2); " 단계배부 순서(정책으로 확정 — 확인 필요)
driver_unit : abap.unit(3); " 용역 수량 단위(kWh · 시간 · 건 등)
}
② 부문 차원 — ZI_AuxDept
부문 한 행에 구분과 순서, 이름을 붙이는 차원 뷰입니다. 텍스트는 표준 텍스트 뷰에 association 으로 걸어 값 도움말과 쿼리 머리글이 같은 이름을 보게 합니다. where 로 유효 종료일을 걸어 지난 체계를 걸러냅니다.
" ────────────────────────────────────────────────────────────────
" ZI_AuxDept — 부문 차원
" 역할 : 코스트센터 한 행 + 부문 구분 + 순서 + 이름
" 이렇게 나눈 이유 : 큐브에서 join 을 한 번만 걸고, 값 도움말·텍스트가 이 뷰 하나를 보게 한다
" ────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '보조·제조부문 차원'
@ObjectModel.representativeKey: 'CostCenter'
@Analytics.dataCategory: #DIMENSION
@Metadata.ignorePropagatedAnnotations: true
define view entity ZI_AuxDept
as select from zaux_deptmap as m
association [0..*] to I_CostCenterText as _Text " 표준 텍스트 뷰 — 이름은 환경에서 확인 필요
on _Text.ControllingArea = $projection.ControllingArea
and _Text.CostCenter = $projection.CostCenter
{
@ObjectModel.text.association: '_Text'
key m.kostl as CostCenter,
key m.kokrs as ControllingArea,
m.dept_type as DeptType, " AUX / MFG
m.step_seq as StepSeq,
m.driver_unit as DriverUnit,
_Text
}
where m.valid_to >= $session.system_date
③ 용역 수량 큐브 — ZI_AuxUsageQty
세 방식이 같은 수량 위에서 계산된다는 약속이 여기서 지켜집니다. 수량은 @Semantics.quantity.unitOfMeasure 로 단위에 묶어 서로 다른 단위가 합산되지 않게 합니다. 수량의 실제 원천(통계 지표 · 활동 수량)은 확인 필요이며, 적재 표의 이름은 예시입니다.
" ────────────────────────────────────────────────────────────────
" ZI_AuxUsageQty — 용역 수량 큐브
" 역할 : 제공 부문 → 받는 부문 → 월별 용역 수량. 세 방식의 비율은 모두 여기서 나온다
" 이렇게 나눈 이유 : 방식이 달라도 수량은 하나여야 한다. 수량이 둘이면 방식 차이와 수량 차이가 섞인다
" ────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '보조부문 용역 수량'
@Analytics.dataCategory: #CUBE
@ObjectModel.usageType: { serviceQuality: #X, sizeCategory: #L, dataClass: #TRANSACTIONAL }
define view entity ZI_AuxUsageQty
as select from zaux_usage as u " 통계 지표 수량을 적재한 표 — 저장 위치는 확인 필요
association [1..1] to ZI_AuxDept as _From on _From.CostCenter = $projection.ProviderCenter
association [1..1] to ZI_AuxDept as _To on _To.CostCenter = $projection.ReceiverCenter
{
key u.kokrs as ControllingArea,
key u.gjahr as FiscalYear,
key u.poper as FiscalPeriod,
key u.from_kostl as ProviderCenter,
key u.to_kostl as ReceiverCenter,
u.unit as DriverUnit,
@Semantics.quantity.unitOfMeasure: 'DriverUnit'
@DefaultAggregation: #SUM
u.qty as UsageQty,
_From,
_To
}
④ 발생원가 큐브 — ZI_AuxCostCube
배부할 원가와 장부 원가를 한 곳에서 읽습니다. 표준 인터페이스 뷰를 통해 ACDOCA 를 읽고 선도원장(0L)의 코스트센터 행만 집계합니다. 금액은 통화 코드에 묶어 #SUM 으로 집계합니다.
" ────────────────────────────────────────────────────────────────
" ZI_AuxCostCube — 보조·제조부문 발생원가 큐브
" 역할 : 코스트센터·월별 실적 원가. 보조부문의 발생원가와 제조부문의 고유원가가 모두 여기서 나온다
" 이렇게 나눈 이유 : 장부 원가를 한 곳에서만 읽는다. 배부 결과가 장부와 어긋났을 때 비교할 기준이 하나로 정해진다
" ────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '부문별 발생원가'
@Analytics.dataCategory: #CUBE
define view entity ZI_AuxCostCube
as select from I_JournalEntryItem as j " ACDOCA 위의 표준 인터페이스 뷰 — 필드 이름은 릴리스별로 확인 필요
association [0..1] to ZI_AuxDept as _Dept on _Dept.CostCenter = $projection.CostCenter
{
key j.CompanyCode as CompanyCode,
key j.FiscalYear as FiscalYear,
key j.FiscalPeriod as FiscalPeriod,
key j.CostCenter as CostCenter,
j.CompanyCodeCurrency as Currency,
@Semantics.amount.currencyCode: 'Currency'
@DefaultAggregation: #SUM
sum( j.AmountInCompanyCodeCurrency ) as ActualCost,
_Dept
}
where j.Ledger = '0L' " 선도원장
and j.CostCenter <> ''
group by j.CompanyCode, j.FiscalYear, j.FiscalPeriod, j.CostCenter, j.CompanyCodeCurrency
⑤ 분석 쿼리 — ZC_AuxCostQuery
이 쿼리 하나로 표준 앱이 코스트센터×월 원가표를 띄웁니다. 방식별 재계산이 필요 없는 사용자는 여기서 끝나도 됩니다. 필수 필터로 회계연도를 두어 전체 기간을 한 번에 읽는 일을 막습니다.
" ────────────────────────────────────────────────────────────────
" ZC_AuxCostQuery — 부문별 발생원가 분석 쿼리
" 역할 : 표준 Fiori 앱·Analysis for Office 가 그대로 띄우는 쿼리. 이 앱 없이도 원가와 용역 수량은 볼 수 있다
" 이렇게 나눈 이유 : 방식별 재계산이 필요 없는 사용자까지 이 앱을 쓰게 만들 이유가 없다
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '부문별 발생원가 쿼리'
@Analytics.query: true
@Metadata.allowExtensions: true
define view entity ZC_AuxCostQuery
as select from ZI_AuxCostCube
{
@AnalyticsDetails.query.axis: #FILTER
@Consumption.filter: { selectionType: #SINGLE, multipleSelections: false, mandatory: true }
key FiscalYear,
@AnalyticsDetails.query.axis: #COLUMNS
key FiscalPeriod,
@AnalyticsDetails.query.axis: #ROWS
key CostCenter,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 0
ActualCost
}
⑥ 권한 — ZI_AUXCOSTCUBE (DCL)
부문별 원가는 부서 간 비교가 가능한 정보입니다. 권한은 집계를 읽는 큐브에 걸어야 합니다. 회사코드는 F_BKPF_BUK, 코스트센터는 K_CCA 를 쓰는 것이 일반적이지만 필드 이름은 환경에서 확인해야 합니다.
" ────────────────────────────────────────────────────────────────
" ZI_AUXCOSTCUBE — 권한(DCL)
" 역할 : 회사코드·코스트센터 권한을 집계를 읽는 자리에 건다
" 이렇게 나눈 이유 : 드릴스루에만 걸면 전체 합계에서 남의 부문 숫자를 뺄셈으로 알아낼 수 있다
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '부문별 발생원가 권한'
@MappingRole: true
define role ZI_AUXCOSTCUBE {
grant select on ZI_AuxCostCube
where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' )
and ( CostCenter ) = aspect pfcg_auth( K_CCA, KOSTL, ACTVT = '03' ); " 권한 객체 필드는 환경에서 확인 필요
}
⑦ 배부방식 비교 — 사용자 정의 엔티티와 조회 클래스
단계배부는 순서에 따라 앞 부문에서 받은 원가가 뒤 부문의 대상 원가에 얹히고, 상호배부는 서로 주고받는 관계를 연립으로 풀어야 합니다. SQL 한 줄로 되지 않으므로 사용자 정의 엔티티를 만들고 조회 구현 클래스가 계산합니다. 아래는 직접배부의 최대잔여법(원 단위 끝수를 합계에 정확히 맞추는 처리)까지의 뼈대이며, 단계·상호 계산 본문은 길어서 주석으로 단계만 적었습니다.
" ────────────────────────────────────────────────────────────────
" ZR_AuxAllocCompare — 배부방식 비교 결과(사용자 정의 엔티티)와 조회 구현
" 역할 : 직접·단계·상호배부 재계산과 격차율을 돌려주는 서비스의 중심
" 이렇게 나눈 이유 : 단계·상호배부는 순서와 연립 계산이 필요해 SQL 한 줄로 되지 않는다
" CDS 가 수량과 원가를 가져오고, 계산은 ABAP 클래스가 맡는다
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '배부방식 비교'
@ObjectModel.query.implementedBy: 'ABAP:ZCL_AUX_ALLOC_QUERY'
define custom entity ZR_AuxAllocCompare
{
key FiscalYear : gjahr;
key FiscalPeriod : poper;
key MfgDept : kostl;
DirAlloc : abap.curr(15,0); " 직접배부액
StpAlloc : abap.curr(15,0); " 단계배부액
RecAlloc : abap.curr(15,0); " 상호배부액
GapRate : abap.dec(7,2); " 방식 간 격차율(%)
BookDiff : abap.curr(15,0); " 장부 − 재계산
CheckStatus : abap.char(5); " OK / CHECK
}
CLASS zcl_aux_alloc_query DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_rap_query_provider.
PRIVATE SECTION.
TYPES: BEGIN OF ty_row, dept TYPE kostl, ratio TYPE p LENGTH 9 DECIMALS 6, END OF ty_row,
tt_row TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY,
BEGIN OF ty_amt, dept TYPE kostl, amt TYPE p LENGTH 15 DECIMALS 0, END OF ty_amt,
tt_amt TYPE STANDARD TABLE OF ty_amt WITH EMPTY KEY.
METHODS direct_alloc
IMPORTING iv_cost TYPE p it_ratio TYPE tt_row
RETURNING VALUE(rt_amt) TYPE tt_amt. " 합계가 정확히 iv_cost 가 되도록 최대잔여법
ENDCLASS.
CLASS zcl_aux_alloc_query IMPLEMENTATION.
METHOD if_rap_query_provider~select.
DATA lt_out TYPE STANDARD TABLE OF zr_auxalloccompare WITH EMPTY KEY.
TRY.
DATA(lt_filter) = io_request->get_filter( )->get_as_ranges( ).
CATCH cx_rap_query_filter_no_range.
CLEAR lt_filter.
ENDTRY.
" 1) 필터의 회계연도·기간·제조부문으로 ZI_AuxCostCube · ZI_AuxUsageQty 를 읽는다
" 2) 방식별 비율을 만들고 direct_alloc 등으로 배부액을 구한다 (단계: 순서대로, 상호: 반복 수렴)
" 3) 격차율 = ( max − min ) / 단계배부 총원가 × 100, 장부 전표와의 차이로 CheckStatus 를 정한다
IF io_request->is_total_numb_of_rec_requested( ).
io_response->set_total_number_of_records( lines( lt_out ) ).
ENDIF.
io_response->set_data( lt_out ).
ENDMETHOD.
METHOD direct_alloc.
DATA(lv_sum) = REDUCE p( INIT s = 0 FOR r IN it_ratio NEXT s = s + r-ratio ).
DATA lv_given TYPE p LENGTH 15 DECIMALS 0.
LOOP AT it_ratio INTO DATA(ls) .
DATA(lv_exact) = iv_cost * ls-ratio / lv_sum.
APPEND VALUE #( dept = ls-dept amt = floor( lv_exact ) ) TO rt_amt.
lv_given = lv_given + floor( lv_exact ).
ENDLOOP.
" 남은 원 단위는 소수부가 큰 순서대로 한 원씩 나눠 준다(최대잔여법)
DATA(lv_left) = iv_cost - lv_given.
" … 소수부 내림차순 정렬 후 lv_left 건에 +1 …
ENDMETHOD.
ENDCLASS.
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 부문 매핑 | 어느 코스트센터가 보조·제조부문인지, 코스트센터 범주로 갈음할지 | 새 부문이 생길 때마다 개발을 요청하게 됩니다 | 원가회계팀 |
| 용역 수량 원천 | 통계 지표·활동 수량 중 무엇을 쓰고 언제 확정하는지 | 방식별 비율이 매달 달라지고 장부와 맞지 않습니다 | 원가회계팀 · 현업 |
| 단계배부 순서 | 용역 비중 순 외에 회사 정책 순서가 있는지 | 장부 단계배부와 재계산 순서가 달라 대사가 어긋납니다 | 원가회계팀 |
| 허용 격차율 | 점검 필요로 걸 기준 비율 | 점검 건수가 너무 많거나 너무 적어 쓸모가 없어집니다 | 원가회계팀장 |
| 권한 설계 | 회사코드·코스트센터별 조회 범위 | 전체 합계에서 남의 부문 숫자를 알아낼 수 있습니다 | 보안·권한 |
| 대사 체계 | 표준 T-code 결과와 맞출 항목과 주기 | 두 화면 숫자가 다를 때 누구 말이 맞는지 정할 수 없습니다 | 원가회계팀 · IT |
| 전송(TR) 순서 | 매핑 테이블 → 차원 → 큐브 → 쿼리 → DCL → 서비스 | 권한 없는 뷰가 먼저 운영에 들어가 숫자가 노출됩니다 | Basis |
| 서비스 활성화 | 서비스 게시와 앱 설정의 서비스 주소 교체 | 앱이 검증용 서비스를 계속 바라봅니다 | Basis · 개발 |
운영 데이터로 갈 때
코스트센터가 수백 개, 마감이 12개월이면 용역 수량 표는 수만 행이 됩니다. 이 정도 규모에서는 수량 집계는 CDS 에서 하고 서버 쪽 계산은 필요한 회계연도·제조부문만 읽도록 필터를 필수로 둡니다. 조회 응답은 월 단위 결과를 기준으로 하고, 배부 명세는 상세를 열 때만 읽는 것이 보통입니다. 응답 시간 기준(예: 조회 한 번에 수 초 이내)은 회사가 정해야 하며 이 글에서는 측정값을 제시하지 않습니다.
자주 묻는 질문
도입을 검토하실 때 가장 자주 나오는 질문을 네 묶음으로 정리했습니다.
숫자와 산식
직접배부 · 단계배부 · 상호배부는 어떻게 다릅니까?
직접배부는 보조부문 원가를 제조부문의 용역 비율로만 나눕니다. 단계배부는 다른 보조부문에 준 용역 비중이 큰 부문부터 차례로 나누며, 이미 나눈 부문에는 되돌려 배부하지 않습니다. 상호배부는 보조부문끼리 주고받은 용역을 모두 반영해 연립방정식으로 한 번에 풉니다. 보조부문 사이의 용역 주고받음이 작으면 세 결과가 비슷하고, 커질수록 갈립니다.
방식 간 격차율은 어떻게 계산합니까?
제조부문·월마다 세 방식 배부액의 최댓값에서 최솟값을 뺀 값을 단계배부 총원가로 나눠 백분율로 씁니다. 총원가는 그 부문의 고유원가에 단계배부액을 더한 값입니다. 허용 격차율은 이 검증용 샘플에서 1.00% 로 두었고, 실제 적용 때는 회사가 정합니다.
점검 필요로 표시되면 잘못 배부했다는 뜻입니까?
아닙니다. 방식 선택에 따라 제조부문 원가가 허용 격차율보다 크게 달라지거나 장부 배부액이 재계산과 다르다는 표시일 뿐이며, 원인은 용역 수량의 기준월이나 전기 내역처럼 원천에서 확인해야 합니다. 이 화면은 점검 도구이며 최종 판단은 회사와 감사인이 합니다.
세 방식 중 어느 것을 써야 합니까?
이 화면은 방식을 권고하지 않습니다. 어떤 방식을 장부에 쓸지는 회사의 원가 정책과 감사인 협의로 정합니다. 이 화면은 방식을 바꿨을 때 제조부문 원가가 얼마나 달라지는지를 같은 용역 수량 위에서 보여 주는 데까지입니다.
원 단위 끝수는 어떻게 맞춥니까?
배부액은 최대잔여법으로 정합니다. 각 몫을 내림해 합친 뒤 남은 원 단위를 소수부가 큰 순서로 한 원씩 나눠 주므로, 합계가 보조부문 발생원가와 정확히 같아집니다. 상호배부는 정수 고정소수점으로 반복 계산해 수렴한 값을 쓰기 때문에 실행할 때마다 같은 숫자가 나옵니다.
R06 의 최대 차이 0.0001 은 무엇입니까?
용역 비율을 소수 4자리로 반올림해 보여 주기 때문에 비율 합계가 100% 에서 0.0001 만큼 벗어날 수 있다는 뜻입니다. 허용 0.001 안이며, 금액 계산에는 반올림 전 비율을 쓰므로 배부액 합계는 어긋나지 않습니다.
의도적 예외는 왜 따로 둡니까?
점검 화면이 실제로 이상한 자리를 잡아내는지 같은 검증에서 함께 보기 위해서입니다. 장부 단계배부액이 재계산과 다른 줄 3건과 격차율이 허용치를 넘는 제조부문·월 3건을 일부러 두었고, 대사 차이 건수와 섞이지 않게 따로 집계합니다.
화면과 조작
조회는 어떻게 합니까?
회계연도(필수, 4자리)를 확인하고 조회 버튼을 누르거나 입력 칸에서 Enter 키를 누릅니다. 화면을 처음 열면 기본 조건으로 자동 조회됩니다. 초기화 버튼은 조회 버튼 옆에 있습니다.
점검 필요인 곳만 볼 수 있습니까?
점검 결과를 “점검 필요”로 고르고 조회합니다. 이 샘플에서는 제조부문 비교 5건, 보조부문 잔액 3건, 배부 명세 3건, 월별 추이 4건이 남습니다. 월마감 때 가장 먼저 쓰는 방법입니다.
행을 누르면 무엇이 나옵니까?
제조부문 · 보조부문 · 배부 명세 · 월 행을 누르면 상세 창이 열립니다. 세 방식의 배부액과 총원가, 방식 간 차이, 장부 배부액이 한곳에 모이고 아래에 그 조건의 배부 명세가 방식별로 나옵니다. 닫기 버튼으로 표로 돌아옵니다.
엑셀로 내려받을 수 있습니까?
현재 탭의 조회 결과를 UTF-8 CSV 로 내려받을 수 있습니다. 파일명은 기능명과 탭 이름이며, 한글이 깨지지 않도록 UTF-8 로 저장합니다.
마감일로 좁혀 볼 수 있습니까?
배부 명세 탭에서 마감일 시작·종료를 고르면 그 범위의 명세만 남습니다. 이 샘플에서 5~6월로 좁히면 108건입니다. 날짜 비교는 서비스가 직접 처리합니다.
휴대폰에서도 됩니까?
이 화면은 넓은 화면(1600px 기준)에서 검증했습니다. 좁은 화면의 배치는 이번 검증 범위에 넣지 않았으며 확인 필요로 남깁니다.
표준과 도입
SAP 표준 T-code 와는 어떤 관계입니까?
배분·배부 실행(KSU5 · KSV5)과 사이클 변경(KSU1), 전표 단위 확인(KSB1)은 표준이 계속 맡습니다. 이 화면은 그 결과를 같은 용역 수량으로 세 방식으로 다시 계산해 비교하고 장부와 대조하는 관점을 더해 확장합니다. 표준 화면을 없애는 것이 아닙니다.
어떤 회사에 맞습니까?
보조부문(동력·수선·품질관리·자재운반 등)이 여러 개고 서로 용역을 주고받는 제조회사의 원가회계팀, 그리고 월마감 때 배부 방식을 엑셀로 따로 시뮬레이션하고 있는 조직에 맞습니다. 보조부문 사이의 주고받음이 거의 없다면 세 결과가 비슷해 얻는 것이 적습니다.
도입 효과는 무엇입니까?
방식을 바꿔 보는 시뮬레이션이 엑셀 작업에서 조회로 바뀌고, 장부와 재계산의 차이를 합계가 아니라 줄 단위로 찾게 됩니다. 이 화면이 얼마나 시간을 줄이는지는 회사별로 다르므로 이 글에서는 수치로 단정하지 않습니다.
특정 회계기준에 따른 점검입니까?
아닙니다. 특정 기준서를 적용하는 화면이 아니라 제조원가 분석 목적의 점검 화면이며 관련 기준서 표기는 없음(-)입니다. 배부 기준은 회사 정책에 따르고 최종 판단은 회사와 감사인이 합니다.
용역 수량은 어디서 가져옵니까?
이 샘플에서는 가상의 용역 수량을 썼습니다. 운영에서는 통계 지표나 활동 수량에서 가져오며 S/4HANA 에서의 저장 위치와 필드는 확인 필요로 남겼습니다. 이 값이 정해져야 방식별 비율이 정해지므로 도입에서 가장 먼저 합의할 항목입니다.
운영 서비스로 연결하는 절차와 기간은 어떻습니까?
앱은 서비스 주소를 설정으로만 갖고 있어 서비스를 바꾸는 일 자체는 설정 교체입니다. 걸리는 시간은 부문 매핑과 용역 수량 원천, 권한, 대사 체계를 정하는 데 달려 있습니다. 기간은 회사별로 크게 다르므로 이 글에서 약속하지 않습니다.
운영과 보안
권한은 어떻게 겁니까?
회사코드와 코스트센터 권한을 집계를 읽는 CDS 큐브의 접근 제어에 겁니다. 드릴스루에만 걸면 전체 합계에서 남의 부문 숫자를 뺄셈으로 알아낼 수 있어서입니다. 권한 객체의 필드는 환경에서 확인해야 합니다.
부문 체계가 바뀌면 어떻게 합니까?
부문 구분은 매핑 테이블에서 읽고 유효 종료일이 붙어 있습니다. 새 부문은 행 하나를 추가하고 폐쇄한 부문은 유효 종료일을 닫으면 과거 숫자가 흔들리지 않습니다.
데이터가 매우 많아지면 어떻습니까?
수량 집계는 CDS 에서 하고, 서버 쪽 계산은 필요한 회계연도·제조부문만 읽도록 필터를 필수로 둡니다. 배부 명세는 상세를 열 때만 읽는 것이 보통입니다. 응답 시간 기준은 회사가 정하며 이 글은 측정값을 제시하지 않습니다.
장부 배부액이 재계산과 다를 때 어디부터 봅니까?
먼저 용역 수량의 기준월이 같은지 확인합니다. 단계·상호배부는 수량이 한 번 바뀌면 뒤 부문 결과가 모두 따라 바뀝니다. 그다음 전기 내역이 빠졌는지를 KSB1 로 확인하고, 배부 명세 탭에서 차이가 난 줄을 찾습니다.
이 화면의 판정을 감사 대응에 그대로 써도 됩니까?
점검 도구이므로 판단 근거를 정리하는 용도입니다. 점검 필요는 확인이 필요하다는 표시일 뿐 오류의 확정이 아닙니다. 법정 결산과 감사 대응에 쓰는 배분·배부 결과는 표준 거래에 두고 이 화면은 보완 관점으로 씁니다.