SAP 기능별 비용 배분 기준 점검 — IFRS 18, 공통비를 기능에 나눈 기준이 동인과 맞는지·기준을 바꿨다면 사유와 전기 비교금액이 정리됐는지 장부와 견줘 보는 결산 화면
풀 단위 재계산 배분율 · 장부와의 차이 · 기준 변경 뒤 비교금액과 사유 · 회사가 판단할 동인의 분리 · 합계 대사 — 소개 영상과 실제 화면 6종, 그리고 CDS 코드까지
소개 영상블로그 목차 순서대로 · 자막 포함8개 장면조회 → 조건 좁히기 → 배분 상세 → 기능별 합계 → 대사 → 상세
도입 포인트 — 이 앱을 사용해야 하는 이유
영업비용을 기능별로 표시하는 회사에서 결산 때 가장 설명하기 어려운 숫자가 여러 기능이 함께 쓴 공통비입니다. 건물 임차료, 정보시스템 운영비, 인사·총무 지원비는 어느 한 기능의 비용이 아니어서 면적, 사용자 수, 인원 같은 동인으로 나누는데, 그 동인 수량은 해마다 바뀌는데 장부의 배분율은 전기 것을 그대로 쓰는 일이 흔합니다. 배분 기준을 바꾼 해에는 전기 비교금액을 새 기준으로 다시 만들고 사유를 남겨야 하는데, 이 일도 엑셀과 담당자의 기억에 기대어 처리됩니다. 이 앱은 공통비 풀을 한 화면에 모아, 동인 수량으로 다시 계산한 배분율이 장부와 같은지, 기준을 바꿨다면 비교금액 재작성과 변경 사유가 남아 있는지를 풀 단위로 다시 계산해 보여 줍니다.
핵심 포인트 여섯 가지
| 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 풀 단위 재계산 배분율 | 기능별 동인 수량을 풀 합계로 나눠 재계산 배분율을 구하고, 합이 풀 금액과 정확히 같도록 원 단위까지 맞춘 재계산 배분액을 만듭니다. | 담당자가 풀마다 엑셀에 동인을 붙여 넣고 비율을 손으로 다시 구합니다. |
| ② 장부와 바로 견주기 | 장부 배분율·배분액을 재계산 옆에 놓고 기능별 차이를 계산합니다. 최대 배분율 차이가 허용 범위를 넘으면 점검 필요로 올립니다. | 배부 결과 합계만 맞는지 보고 기능별로는 들여다보지 않습니다. |
| ③ 오래된 동인 찾기 | 장부 배분율이 전기 배분율과 같은데 재계산과 다른 풀이 드러납니다. 동인 자료를 갱신하지 않고 전기 비율을 그대로 쓴 흔적입니다. | 전기 사이클을 복사해 쓰다 보니 동인이 갱신되지 않은 줄 모릅니다. |
| ④ 기준 변경의 뒷정리 확인 | 배분 기준을 바꾼 풀에 대해 전기 비교금액을 새 기준으로 다시 만들었는지, 변경 사유를 기록했는지를 따로 잡습니다. | 기준을 바꾼 사실 자체를 결산 막바지에야 알게 됩니다. |
| ⑤ 판단이 필요한 동인은 확정하지 않는다 | 매출액 비례처럼 비용 발생과의 인과관계를 회사가 먼저 판단해야 하는 풀은 “확인 필요”로만 표시합니다. | 담당자마다 해석이 달라 같은 풀이 해마다 다르게 처리됩니다. |
| ⑥ 합계가 맞는지 매번 대사 | 장부·재계산 배분액 합계와 풀 금액, 기능별 합계와 직접비가 서로 맞는지 화면이 매번 검산합니다. | 합계가 어긋나면 어느 풀 때문인지 찾는 데 하루가 갑니다. |
사례로 보는 효과 — 합계는 맞는데 기능은 어긋난 풀 네 개
사례 자료는 가상의 두 회사(1000·2000)가 가진 공통비 풀 16개입니다. 풀 금액 합계는 7,130백만 원이고 기능별 직접비 22,180백만 원을 더한 영업비용은 29,310백만 원입니다. 장부 배분액 합계도 재계산 배분액 합계도 7,130백만 원으로 풀 금액과 정확히 같아서, 총액만 보면 아무 문제가 없습니다. 그런데 풀 단위로 가르면 이야기가 달라집니다.
- 배분율 재계산 차이(A03) 4개 — 인사·총무 지원비(회사 1000)는 장부와 재계산이 최대 12.17%p, 공통 설비 감가상각비(회사 2000)는 37.50%p 다릅니다. 이 풀 하나에서만 재배분 필요 금액이 153.8백만 원입니다.
- 기준 변경 뒤 비교금액 미재작성(A01) 2개 — 배분 기준을 바꿨는데 전기 비교금액이 새 기준으로 다시 만들어지지 않았습니다. 전력·수도 공통비(1000)와 물류센터 운영비(2000)입니다.
- 변경 사유 미기재(A02) 1개 — 본사 건물 임차료(1000)는 인원 수에서 사용 면적으로 기준을 바꾸고 비교금액도 다시 만들었지만 변경 사유가 남아 있지 않습니다.
- 동인 적정성 확인(A09) 2개 — 사내 복지시설 운영비를 매출액 비례로 나눈 두 풀은 회사가 동인의 적정성을 먼저 판단해야 합니다.
영업비용 합계 줄은 두 회사 모두 차이가 0입니다. 그래서 합계만 맞춰 보던 방식으로는 놓칩니다. 회사 1000만 봐도 매출원가는 장부가 재계산보다 111.1백만 원 적고, 판매비·관리비·연구개발비는 각각 54.7백만 원·11.4백만 원·45.0백만 원 많아 한쪽이 줄면 다른 쪽이 늘어 서로 상쇄합니다. 기능별 손익을 보는 사람에게는 이 어긋남이 그대로 숫자가 됩니다. 한편 허용 범위 안의 작은 차이(전력·수도 공통비 2000, 0.30%p)는 정상으로 두어 점검 대상이 불어나지 않게 했습니다.
풀 p, 기능 f 마다
재계산 배분율(p,f) = 동인 수량(p,f) ÷ 풀 p 의 동인 수량 합계 ·
재계산 배분액 = 풀 금액(p) × 재계산 배분율, 합이 풀 금액과 같도록 원 단위 조정 ·
차이 = 장부 배분액 − 재계산 배분액
기능별 합계는 이 풀·기능 줄을 모아서만 만들기 때문에 합계가 풀과 갈라질 자리가 없습니다.
도입하면 달라지는 것
- 결산 전 배분 점검 — 합계만 맞추던 일이 풀·기능 단위 확인으로 바뀌고, 상쇄된 어긋남이 드러납니다.
- 담당 부서와의 대화 — “이 풀의 동인이 갱신되지 않았습니다”를 풀 번호와 금액으로 바로 말할 수 있습니다.
- 해석이 갈리는 동인의 분리 — 회사가 판단할 풀은 확인 필요로 분리되어, 판단 근거를 남기는 일이 따로 관리됩니다.
- 다음 결산으로 이어지는 기준 — 같은 규칙으로 매번 계산하므로 담당자가 바뀌어도 결과가 같습니다.
이런 회사에 맞습니다
영업비용을 기능별로 표시하면서 공통비 풀이 여러 개이고 배분 기준을 해마다 손보는 회사, 배부 결과를 엑셀로 다시 계산해 확인하는 재무보고·관리회계 조직, 그리고 감사인에게 기능별 배분의 근거를 풀 단위로 설명해야 하는 회사에 맞습니다. 반대로 공통비가 거의 없거나 영업비용을 기능별로 나누어 보이지 않는 회사라면 이 앱의 값은 크지 않습니다.
숫자를 믿을 수 있는가 — 검증 결과
점검 도구에서 가장 비싼 질문은 “이 합계 맞아?”입니다. 그래서 만드는 쪽에서 먼저 대사식을 세워 두고 전수로 돌렸습니다. 아래는 이 사례 데이터의 결과입니다.
| 대사식 | 검사 건수 | 차이 |
|---|---|---|
| 풀별 장부 배분액의 기능 합 = 공통비 풀 금액 | 16 | 0 |
| 풀별 재계산 배분액의 기능 합 = 공통비 풀 금액 | 16 | 0 |
| 기능별 장부 합계 = 직접비 + 배분 장부액 | 8 | 0 |
| 회사별 기능 재계산 합계 = 직접비 + 공통비 풀 금액 | 2 | 0 |
| 풀별 (장부 − 재계산) 차이의 기능 합 = 0 | 16 | 0 |
| 영업비용 합계 줄 = 기능 줄의 합 | 2 | 0 |
| 참고: 재배분 필요 금액 = Σ max(0, 장부 − 재계산) | 16 | 5 (최대 153.8백만 원) |
정합성 대사 여섯 건은 모두 차이 0입니다. 참고 대사의 차이 5건은 점검 화면이라 일부러 넣은 예외 풀이며, 정합성 대사의 차이 건수와 섞이지 않게 구분해 둡니다.
도입 후 쓰는 순서
- 회계연도(필수)와 필요하면 회사·기능·현재 배분 기준·기준 변경·기준 확정일 구간을 골라 조회를 누릅니다. 공통비 풀 이름 칸에서 Enter 를 눌러도 됩니다.
- 맨 위 요약 여섯 칸으로 점검 규모를 봅니다. 점검 필요 풀 수는 서비스의 함수로 따로 받아 옵니다.
- 풀별 표에서 점검 필요와 확인 필요 풀을 훑고, 행을 눌러 기준 이력과 기능별 배분 내역을 확인합니다.
- 기능별 배분 상세 탭에서 재계산과 장부 배분율이 어디서 갈리는지, 기능별 비용 합계 탭에서 기능마다 얼마나 어긋났는지 봅니다.
- 대사 탭에서 정합성 대사 여섯 건이 0인지 확인한 뒤, 참고 대사의 차이 풀을 담당 부서와 확인합니다.
- 현재 탭의 결과는 CSV 로 내려받아 결산 점검 근거로 보관합니다.
실행 화면
실제로 돌아가는 화면 6종을 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 하는 자리인지를 아래에 적었습니다. 숫자는 모두 같은 자료에서 나온 것이라 화면끼리 맞춰 보셔도 됩니다.
처음 열었을 때

공통비 점검은 “어느 풀의 배분이 어긋났는가”를 찾는 일이라 풀 표가 맨 앞에 있습니다. 점검 필요는 주황, 확인 필요는 파랑, 정상은 초록 상태 표시로 구분해 한눈에 훑을 수 있게 했습니다.
조건으로 좁히기

조회조건의 “전체”는 서버로 보내지 않는 조건입니다. 값을 고른 칸만 $filter 로 나가므로 서버가 받는 질의가 짧고, 조건을 풀면 곧바로 전체로 돌아옵니다.
풀 안을 들여다보기

장부 배분율이 전기 배분율과 같은데 재계산과 다르면 동인 자료를 갱신하지 않고 전기 비율을 그대로 쓴 풀일 가능성이 큽니다. 이 탭은 그 의심을 숫자로 확인하는 자리입니다.

공통비는 기능 사이에서 옮겨질 뿐 총액은 그대로라 합계 줄은 늘 0입니다. 어긋남은 기능 줄에서 서로 반대 방향으로 나타나므로 합계 줄만 보면 놓칩니다.
대사와 상세

정합성 대사는 모두 차이 0이어야 하고, 참고 대사의 차이는 점검 대상 그 자체입니다. 둘을 섞지 않으려고 구분(정합성/참고)을 컬럼으로 따로 두었습니다.

왜 이 풀이 점검 필요인지 동인 수량부터 배분액까지 설명할 수 있어야 담당자가 숫자를 믿습니다. 풀 안에서 기능별 차이를 합하면 0이라는 점은 대사 005 가 매번 확인합니다.
조회조건 한눈에 보기
| 조회조건 | 필수 | 서버로 보내는 질의 |
|---|---|---|
| 회계연도 | 필수 | Gjahr eq '2026' |
| 회사 | 선택 | Bukrs eq '1000' |
| 기능 | 선택 | FuncCode eq 'F01' |
| 현재 배분 기준 | 선택 | BasisCode eq 'AREA' |
| 기준 변경 | 선택 | ChangeFlag eq 'Y' |
| 기준 확정일 시작·종료 | 선택 | BasisDate ge datetime'…' and BasisDate le datetime'…' |
| 공통비 풀 | 선택 | substringof('임차',PoolName) |
| 점검 코드 | 선택 | CheckCode eq 'A03' |
| 점검 결과 | 선택 | CheckStatus eq 'CHECK' |
점검 코드
| 코드 | 결과 | 뜻 | 담당자가 할 일 |
|---|---|---|---|
| A01 | 점검 필요 | 배분 기준을 바꿨는데 전기 비교금액이 새 기준으로 다시 만들어지지 않음 | 비교기간 금액 재작성 여부 확인 |
| A02 | 점검 필요 | 기준을 바꾸고 비교금액은 다시 만들었지만 변경 사유가 기록되어 있지 않음 | 변경 사유 기록 |
| A03 | 점검 필요 | 장부 배분율이 동인 재계산과 허용 범위(0.50%p)를 넘게 다름 | 동인 갱신 여부와 재배분 필요 금액 검토 |
| A09 | 확인 필요 | 매출액 비례로 나눈 공통비 — 동인의 적정성은 회사가 판단 | 인과관계 판단 근거 확인(기준은 확정하지 않음) |
| A00 | 정상 | 위 어디에도 해당하지 않음 | 조치 없음 |
한 풀에 둘 이상 해당하면 우선순위가 높은 코드 하나만 표시합니다.
SAP 표준 기능 확장 포인트
이 앱은 SAP 표준을 대체하지 않습니다. 표준이 이미 잘하는 일은 표준에 맡기고, 표준이 끊기는 자리만 이어 붙이는 쪽으로 만들었습니다. 어디까지가 표준이고 어디서부터 이 앱인지를 먼저 적습니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | SAP 표준 | 표준에서 걸리는 자리 | 이 앱이 하는 일 |
|---|---|---|---|
| 공통비를 기능에 배부 | KSU5 · KSV5 | 사이클을 실행하면 배부 전표는 만들어지지만, 쓴 동인이 최신인지는 사이클이 묻지 않습니다 | 동인 수량으로 다시 나눈 결과를 장부 배부 결과와 풀 단위로 견줍니다 |
| 풀 금액의 원천 확인 | KSB1 | 원가 요소별 개별 항목이라 풀 단위로 모아 보려면 따로 조합해야 합니다 | 풀 금액과 기능별 배분액을 한 줄에 놓습니다 |
| 기능별 비용 계정 확인 | FAGLL03 | 계정 단위라 “이 풀에서 이 기능으로 얼마가 갔는가”를 묻기 어렵습니다 | 기능별 비용 합계 탭에 직접비와 배분액을 나눠 보여 줍니다 |
| 배분 기준 변경 이력 관리 | — | 표준에 없습니다. 변경 사유와 비교금액 재작성은 보통 문서나 엑셀에 남깁니다 | 기준 변경·재작성·사유 기록 여부를 풀 줄에 표시하고 코드로 가릅니다 |
| 합계 대사 | — | 배분 결과와 동인 재계산을 맞추는 일은 사람이 합니다 | 정합성 대사 여섯 건을 매번 계산합니다 |
T-code 별 연계 지점
기존 거래를 없애지 않고 이 앱과 나란히 두는 것이 안전합니다. 이 앱이 가리킨 풀을 표준 거래에서 확인하는 순서입니다.
| T-code | 이름 | 연계 |
|---|---|---|
KSU5 | 배부 사이클 실행 | 점검 필요로 나온 풀의 배부 사이클에서 동인 통계 값이 최신인지 확인합니다. 배부를 쓰지 않고 분배나 다른 방식을 쓰는 회사는 구성 확인이 필요합니다. |
KSV5 | 분배 사이클 실행 | 분배 사이클을 쓰는 풀이라면 분배 기준 비율이 동인과 맞는지 같은 방식으로 견줍니다. |
KSB1 | 원가 요소별 개별 전표 조회 | 풀 금액을 이루는 원천 항목을 따라가 풀 금액이 맞는지 확인합니다. |
FAGLL03 | 총계정원장 개별항목 조회 | 기능별 비용 계정에서 배부 전표가 어느 기능으로 얼마 넘어갔는지 따라갑니다. |
OData 구성
화면은 서비스 정의(manifest)에 선언된 OData V2 서비스 하나만 바라봅니다. 서비스 경로는 앱 안에서 상대 경로로만 쓰고, 엔티티셋 네 개와 함수 하나를 내보냅니다.
| 엔티티셋 | 용도 | 키 |
|---|---|---|
PoolSet | 공통비 풀별 점검 결과 | Gjahr, Bukrs, PoolCode |
AllocSet | 풀마다 기능별 동인 수량과 재계산·장부 배분 비교 | Gjahr, Bukrs, PoolCode, FuncCode |
FuncSet | 기능별 비용 합계(영업비용 합계 줄 포함) | Gjahr, Bukrs, FuncCode |
ReconSet | 정합성·참고 대사 결과 | Gjahr, ReconNo |
FlagCount(함수) | 점검 필요 풀(A01·A02·A03) 수 — 반환 Edm.Int32 | 파라미터 Gjahr, Bukrs |
조회조건은 $filter 로만 보내고, 정렬·페이징은 $orderby·$top·$skip, 총건수는 $inlinecount=allpages 로 받습니다. 기준 확정일 같은 날짜 조건은 서비스가 직접 비교하며, “전체”를 뜻하는 별도 코드값은 서버로 보내지 않습니다.
이 앱이 하지 않는 것
- 동인이 적정한지, 어떤 기준으로 나눌지 판단하지 않습니다. 코드는 점검 신호이고 판단은 회사와 감사인의 몫입니다.
- 배부 전표를 만들거나 장부 금액을 고치지 않습니다. 이 앱은 조회·점검 전용입니다.
- 기준서 문단번호를 인용하지 않습니다. 원문을 확인하기 전에는 적지 않는다는 원칙입니다.
CDS 구성
이 사례의 화면은 공통비 풀 16개와 기능별 배분 64줄을 서비스가 들고 계산합니다. 데모라서 되는 일이고, 운영 데이터에서는 공통비 풀과 동인 통계 값을 CDS 로 모아 같은 모양으로 내려 줍니다. 아래는 그때 만드는 뷰들을 레이어 순서대로 적은 것입니다.
코드는 스케치입니다. 필드 이름과 표준 뷰 이름은 릴리스·환경에 따라 다르므로 그대로 붙여 넣기 전에 View Browser 로 실제 이름을 확인해야 하고, 확인하지 못한 자리는 주석에 “확인 필요”라고 적었습니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | cost_alloc_policy | 허용 배분율 차이 · 매출액 비례 풀 처리 설정 | 허용값을 코드에 박으면 정책이 바뀔 때마다 개발자를 부르게 됩니다. |
| 원천 | CostPoolSrc · CostDriverSrc | 풀 금액·배분 기준 이력과 기능별 동인 수량·장부 배분액을 읽음 | 원천이 회사마다 다릅니다. 이 뷰 둘만 바꾸면 위쪽은 그대로입니다. |
| 계산 | CostAllocExpect · CostPoolCheck | 재계산 배분율 · 점검 코드 | 점검 규칙을 한 곳에서만 정의합니다. |
| 집계 | CostFuncTotal | 기능별 장부·재계산 합계 | 화면이 아니라 DB 에서 모읍니다. |
| 권한 | CostPoolCheck (DCL) | 회사코드 권한 | 집계를 읽는 자리에 걸어야 뺄셈으로 새지 않습니다. |
① 정책 테이블
허용 오차와 점검 대상 기준을 코드가 아니라 설정으로 둡니다. 운영 전환에서 가장 먼저 합의해야 하는 항목입니다.
" 공통비 배분 점검 정책 (투명 테이블 스케치)
@EndUserText.label : '공통비 배분 점검 정책'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
define table cost_alloc_policy {
key mandt : mandt not null;
key bukrs : bukrs not null;
key gjahr : gjahr not null;
rate_tol : abap.dec(5,2); " 허용 배분율 차이(%p) — 사례는 0.50
sale_basis_chk : abap.char(1); " 매출액 비례 풀을 확인 필요로 둘지 — 회사 판단
}
② 공통비 풀 원천 뷰
풀 금액과 배분 기준 이력을 읽는 자리입니다. 공통비를 어디서 관리하느냐에 따라 이 뷰만 달라집니다.
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '공통비 풀 원천'
define view entity CostPoolSrc
as select from cost_pool_master as m " 확인 필요 : 실제 풀 관리 객체 이름
{
key m.gjahr as Gjahr,
key m.bukrs as Bukrs,
key m.pool_code as PoolCode,
m.pool_name as PoolName,
m.basis_code as BasisCode, " 현재 배분 기준
m.prev_basis as PrevBasisCode, " 전기 배분 기준
m.restate_flg as RestateFlag, " 비교기간 재작성 — 확인 필요
m.reason_flg as ReasonFlag, " 변경 사유 기록 — 확인 필요
m.basis_date as BasisDate, " 기준 확정일
@Semantics.amount.currencyCode : 'Waers'
m.pool_amt as PoolAmt,
m.waers as Waers
}
③ 동인 수량 원천 뷰
기능별 동인 수량과 장부에 실린 배분액을 읽습니다. 동인 통계 값을 어디서 가져오는지는 회사마다 다릅니다.
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '기능별 동인 수량과 장부 배분'
define view entity CostDriverSrc
as select from cost_driver_stat as d " 확인 필요 : 동인 통계 값 구성
inner join cost_alloc_booked as b
on b.gjahr = d.gjahr and b.bukrs = d.bukrs
and b.pool_code = d.pool_code and b.func_code = d.func_code
{
key d.gjahr as Gjahr,
key d.bukrs as Bukrs,
key d.pool_code as PoolCode,
key d.func_code as FuncCode,
d.driver_qty as DriverQty,
@Semantics.amount.currencyCode : 'Waers'
b.booked_amt as BookedAmt,
b.waers as Waers
}
④ 재계산 배분 뷰
동인 수량으로 배분율과 배분액을 다시 계산합니다. 창 함수로 풀 합계를 한 번에 구합니다.
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '동인 재계산 배분'
define view entity CostAllocExpect
as select from CostDriverSrc as a
inner join CostPoolSrc as p
on p.Gjahr = a.Gjahr and p.Bukrs = a.Bukrs and p.PoolCode = a.PoolCode
{
key a.Gjahr, key a.Bukrs, key a.PoolCode, key a.FuncCode,
a.DriverQty,
" 재계산 배분율 = 동인 수량 / 풀 동인 합계 (소수 둘째 자리)
cast( a.DriverQty * 100.0
/ sum( a.DriverQty ) over( partition by a.Gjahr, a.Bukrs, a.PoolCode )
as abap.dec(9,2) ) as ExpectRate,
@Semantics.amount.currencyCode : 'Waers'
a.BookedAmt,
p.PoolAmt,
a.Waers
" 원 단위 나머지 조정(가장 큰 나머지 순서)은 서비스에서 처리 — 확인 필요
}
⑤ 점검 계산 뷰
점검 코드를 정하는 핵심 뷰입니다. 우선순위는 화면의 판정 규칙과 같아야 합니다.
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '공통비 배분 점검 계산'
define view entity CostPoolCheck
as select from CostPoolSrc as p
inner join cost_alloc_policy as t on t.bukrs = p.Bukrs and t.gjahr = p.Gjahr
association [0..1] to CostRateGap as _g
on _g.Gjahr = p.Gjahr and _g.Bukrs = p.Bukrs and _g.PoolCode = p.PoolCode
{
key p.Gjahr, key p.Bukrs, key p.PoolCode,
p.BasisCode, p.PrevBasisCode,
_g.MaxRateDiff,
case
when p.BasisCode <> p.PrevBasisCode and p.RestateFlag = 'N' then 'A01'
when p.BasisCode <> p.PrevBasisCode and p.ReasonFlag = 'N' then 'A02'
when _g.MaxRateDiff > t.rate_tol then 'A03'
when p.BasisCode = 'SALE' and t.sale_basis_chk = 'X' then 'A09'
else 'A00'
end as CheckCode
}
⑥ 기능 집계 뷰
기능별 직접비와 배분액을 모아 장부 합계와 재계산 합계를 만듭니다. 화면이 아니라 DB 에서 모읍니다.
@Analytics.dataCategory : #CUBE
@EndUserText.label : '기능별 비용 합계'
define view entity CostFuncTotal
as select from CostAllocExpect as e
inner join func_direct_cost as d
on d.gjahr = e.Gjahr and d.bukrs = e.Bukrs and d.func_code = e.FuncCode
{
key e.Gjahr,
key e.Bukrs,
key e.FuncCode,
@Semantics.amount.currencyCode : 'Waers'
max( d.direct_amt ) as DirectAmt,
@Semantics.amount.currencyCode : 'Waers'
sum( e.BookedAmt ) as AllocBooked,
@Semantics.amount.currencyCode : 'Waers'
sum( cast( e.PoolAmt * e.ExpectRate / 100 as abap.curr(18,0) ) ) as AllocExpect,
e.Waers
}
group by e.Gjahr, e.Bukrs, e.FuncCode, e.Waers
⑦ 권한
회사코드 권한을 집계를 읽는 자리에 걸어 두어 합계에서 빼는 방식으로 다른 회사 숫자가 새지 않게 합니다.
@EndUserText.label : '공통비 배분 점검 권한'
@MappingRole : true
define role CostPoolCheckRole {
grant select on CostPoolCheck
where ( Bukrs ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
창 함수와 형 변환 문법은 릴리스마다 다를 수 있어 확인이 필요합니다. 위 코드는 구조를 보여 주는 스케치입니다.
운영 전환에서 정해야 할 항목
| 항목 | 정하는 내용 | 왜 먼저인가 |
|---|---|---|
| 허용 배분율 차이 | 0.50%p 를 쓸지, 풀 규모별로 달리할지 | 점검 필요의 건수가 이 값 하나로 갈립니다. |
| 동인 통계 값의 원천 | 면적·인원·물량·시간을 어느 객체에서 가져올지 | 원천이 정해져야 서비스가 같은 값을 읽습니다. |
| 매출액 비례 풀 | 확인 필요로만 둘지, 제외할지 | 회사가 먼저 판단해야 하는 항목이라 감사인과 합의가 필요합니다. |
| 비교기간 재작성 기록 | 어디에 남기고 어떻게 읽을지 | A01 판정이 이 기록에 달려 있습니다. |
| 변경 사유 기록 | 사유를 남기는 위치와 형식 | A02 판정이 이 기록에 달려 있습니다. |
자주 묻는 질문
도입 상담과 데모에서 자주 받는 질문들입니다. 세 묶음으로 나눠 적었습니다.
계산과 판정
공통비 풀의 재계산 배분율은 어떻게 계산합니까?
풀마다 기능별 동인 수량(면적·인원·물량·시간 등)을 모아 풀 합계로 나눈 비율입니다.
배분액은 풀 금액에 이 비율을 곱해 구하되, 원 단위로 쪼개면 합이 풀 금액과 어긋나므로 가장 큰 나머지 순서로 남는 금액을 나눠 합이 풀 금액과 정확히 같게 맞춥니다.
“점검 필요”가 나오면 기준서 위반이라는 뜻입니까?
아닙니다. 이 화면은 점검 도구이며 최종 판단은 회사와 감사인이 합니다. “점검 필요”는 장부가 동인 재계산과 다르거나 기준 변경의 정리가 비었다는 신호일 뿐입니다. 확인해 보니 장부가 맞았다면 그것으로 끝입니다.
허용 범위 0.50%p 는 어떻게 정했습니까?
이 사례의 점검 기준일 뿐 기준서가 정한 숫자가 아닙니다. 회사의 중요성 판단에 따라 달라질 수 있어 서비스 로직의 기준값 한 곳만 바꾸면 되도록 만들었고, 운영 전환에서 감사인과 먼저 합의할 항목에 넣었습니다.
한 풀에 둘 이상의 점검 코드가 해당하면 어떻게 됩니까?
우선순위가 높은 코드 하나만 표시합니다. 기준 변경 뒤 비교금액 미재작성(A01), 변경 사유 미기재(A02), 배분율 재계산 차이(A03), 동인 적정성 확인(A09) 순입니다. 규칙 표는 설명서에 실었습니다.
재배분 필요 금액은 무엇을 뜻합니까?
점검 대상 풀에서 장부 배분액이 재계산 배분액보다 큰 기능의 초과액을 합한 값입니다. 다시 나누면 다른 기능으로 옮겨질 금액의 크기를 가늠하는 숫자이며, 사례에서는 313.8백만 원입니다.
영업비용 합계 줄은 왜 차이가 0입니까?
공통비는 기능 사이에서 옮겨질 뿐 총액이 달라지지 않기 때문입니다. 그래서 합계만 보는 점검으로는 배분 오류가 드러나지 않고, 기능 줄에서 한쪽은 늘고 한쪽은 줄어 서로 상쇄합니다.
매출액 비례로 나눈 공통비는 왜 “확인 필요”입니까?
매출액은 비용이 생기는 원인과 직접 이어진 동인이 아닐 수 있어 적정한지는 회사가 먼저 판단해야 하는 영역이기 때문입니다. 화면은 기준을 단정하지 않고 인과관계를 확인하라고만 표시합니다.
범위와 한계
어느 기준서를 근거로 합니까?
IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호)에서 영업비용을 기능별로 표시하는 회사가 공통비를 나누는 기준을 일관되게 적용하고, 기준을 바꾸면 사유와 비교정보를 정리해야 한다는 요구를 점검 관점으로 옮긴 것입니다. 문단번호는 원문을 확인하기 전에는 적지 않았고 화면과 설명서에도 번호를 적지 않았습니다.
배분 기준을 바꾸면 꼭 비교금액을 다시 만들어야 합니까?
그 판단은 회사와 감사인이 합니다. 이 화면은 기준을 바꾼 풀에 대해 비교금액 재작성 여부와 변경 사유 기록 여부를 빠졌다는 신호로만 보여 주고, 재작성이 필요한지는 단정하지 않습니다.
배분 자체를 대신 해 줍니까?
아닙니다. 배부와 분배는 표준 사이클이 하는 일이고 이 앱은 그 결과를 동인으로 다시 계산해 견주는 조회·점검 전용 앱입니다. 전표를 만들거나 장부 금액을 고치지 않습니다.
동인 자료의 정확성도 점검합니까?
하지 않습니다. 동인 수량은 주어진 값으로 보고, 그 값으로 다시 나눈 배분율과 장부의 차이만 봅니다. 동인 자체가 맞는지는 회사가 별도로 확인해야 합니다.
여러 단계로 배부하는 구조도 다룹니까?
사례는 공통비 풀에서 기능으로 한 번에 나누는 구조로 단순화했습니다. 보조 부문을 거쳐 여러 단계로 나누는 구조는 운영에서 단계별 풀로 나눠 같은 방식으로 점검해야 합니다.
통화가 여러 개인 회사는 어떻게 합니까?
사례는 한 통화로 단순화했습니다. 운영에서는 회사코드 통화를 유지한 채 집계 뷰에서 통화별로 나누거나 환산 기준을 정한 뒤 합산해야 하며, 통화가 섞인 금액은 그대로 더하지 않습니다.
샘플 데이터는 실제 회사 것입니까?
아닙니다. 가상의 회사코드(1000·2000)와 공통비 풀로 만든 검증용 샘플 데이터이며, 실제 고객사의 비용이나 배분 기준을 쓰지 않았습니다.
도입과 운영
기존 공통비 배분 업무를 없애야 합니까?
없애지 않습니다. 배부 사이클은 그대로 두고, 이 앱은 결산 전에 그 결과를 동인으로 다시 계산해 견주는 점검 단계로 끼워 넣는 것이 보통입니다.
실제 데이터를 연결하려면 무엇이 필요합니까?
manifest 가 가리키는 서비스가 같은 엔티티셋 네 개와 FlagCount 함수를 내보내면 화면은 그대로 씁니다. 필요한 값은 풀 금액, 기능별 동인 수량, 장부 배분율·배분액, 직접비이고, 동인 통계 값은 회사별 관리 방식이 달라 확인이 필요합니다.
권한은 어떻게 걸립니까?
CDS 에 접근 제어(DCL)를 붙여 회사코드 권한을 그대로 따르게 합니다. 권한은 상세 팝업만이 아니라 집계를 읽는 자리에 걸어야 합계에서 빼는 방식으로 다른 회사 숫자가 새지 않습니다.
서비스가 응답하지 않으면 화면은 어떻게 됩니까?
오류 처리기가 서비스 정의를 못 읽은 경우와 요청이 실패한 경우를 나눠 메시지로 알려 주고, 결과가 비면 “조건에 맞는 공통비 풀이 없습니다”를 알림으로 보여 줍니다. 화면이 하얗게 멈추지 않습니다.
어떤 UI 라이브러리를 씁니까?
OpenUI5 표준 컨트롤(조회조건 · 상태 표시 · 탭 · 표 · 대화상자)만 씁니다. 테마는 sap_horizon 이고, 외부 차트 라이브러리는 쓰지 않아 반입 심사가 필요 없습니다.
CSV 는 무엇이 내려갑니까?
현재 보고 있는 탭의 결과가 UTF-8(BOM) 형식으로 내려가 엑셀에서 한글이 깨지지 않습니다. 풀 탭은 조건에 맞는 전체 줄이 담겨 결산 점검 근거로 보관할 수 있습니다.
숫자가 기존 점검표와 다르면 어떻게 확인합니까?
순서가 있습니다. ① 회계연도와 회사 범위가 같은지 봅니다. 가장 흔한 원인입니다. ② 동인 수량의 기준 시점이 같은지 봅니다. ③ 상세 팝업에서 기능별 재계산 배분액 합이 풀 금액과 같은지 봅니다. ④ 그래도 다르면 장부 배분율의 원천이 같은 파일인지 확인합니다.
이 앱 하나로 배분 기준 점검이 끝납니까?
끝나지 않습니다. 이 앱이 찾아 주는 것은 풀 단위의 불일치 후보이고, 그 후보가 실제 오류인지 판단하고 배분을 고치는 일은 사람이 합니다. 점검 시간을 줄이고 누락을 줄이는 도구입니다.
검토용 자료는 어떻게 받습니까?
왼쪽 목차 아래 “검토용 자료 다운로드”를 누르면 이 글의 화면과 핵심 내용을 담은 PowerPoint 파일이 브라우저에서 바로 만들어집니다. 서버에 파일을 남기지 않습니다.
현재 SAP 환경에서 적용할 수 있는지 확인하고 싶습니다
동인 통계 값을 어디서 관리하는지, 공통비를 어떤 사이클로 나누는지에 따라 원천 뷰 하나만 달라집니다. 왼쪽 목차의 “문의하기”로 환경을 알려 주시면 함께 확인해 드립니다.