SAP 코스트센터 배부·배분 현황 — 보낸 쪽과 받은 쪽이 맞는가
배부와 배분 사이클의 발신·수신 전표를 조회하고, 차대 검증과 전월 대비 급변동을 확인하는 화면입니다.
공통비는 그대로 두면 어느 제품 원가에도 들어가지 않습니다. 그래서 발생한 곳에서 쓴 곳으로 옮기는 작업이 배부입니다.
배부는 보낸 만큼 받아야 합니다. 어느 한쪽이 빠지면 원가가 사라지거나 두 배가 됩니다. 그런데 배부 전표는 건수가 많아 하나씩 확인하기 어렵습니다. 표준 배부 구조를 그대로 이어받아 발신과 수신을 함께 검증하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 사이클 — 사이클 ID(
CycleId)와 유형(CycleType) 배부·배분 - 세그먼트 — 세그먼트 ID(
SegmentId)와 배부 기준 설명 - 라인 유형 — 발신·수신 구분(
LineType) - 코스트센터 — 발신·수신 코스트센터(
CostCenter) - 전표 — 전표번호(
Belnr)와 전기일(Budat) · 귀속월(Zzim)
| 항목 | 내용 |
|---|---|
| 대응 T-code | KSU5 (배부) · KSV5 (배분) · KSB1 |
| 업무 영역 | 관리회계(CO-CCA) · 원가배부 |
| Namespace | zui5.ccalloc |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 배부 라인 목록 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 배부 라인 192건 · 코스트센터 8건 |
| 성격 | 조회형(Read-Only) — 배부 실행은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·귀속월·배부유형으로 조회하면 배부 라인이 나옵니다 → 발신과 수신 합계가 맞는지 검증하고 → 전월 대비 급변동한 세그먼트를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 고릅니다.
- 귀속월 범위를 지정합니다. 전월 대비를 보려면 두 달을 함께 봅니다.
- 배부유형으로 배부와 배분을 나눕니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 발신 합계와 수신 합계가 일치하는지 확인합니다.
- 전월 대비 급변동한 세그먼트를 확인합니다.
- 결과는 CSV 다운로드로 내려받아 원가 검토 자료로 씁니다.
검증 규칙
배부는 보낸 금액과 받은 금액이 같아야 합니다.
세그먼트별 검증
Σ(발신 라인 금액) = Σ(수신 라인 금액)
차이 ≠ 0 → 배부 오류 — 사이클 설정 확인
전월 대비 변동
변동률 = (당월 − 전월) ÷ 전월 × 100
변동률이 큰 세그먼트 → 기준 변경 또는 원가 급변 확인
배부(Assessment) 2차 원가요소로 집계해 이전
배분(Distribution) 1차 원가요소를 그대로 이전
배부와 배분을 구분하는 이유
배분은 원가요소를 그대로 옮기므로 받는 쪽에서 원래 비용이 무엇이었는지 보입니다. 배부는 여러 비용을 하나의 2차 원가요소로 묶어 보내므로 내역이 사라집니다. 추적이 필요하면 배분, 단순하게 가려면 배부를 씁니다.
배부 처리 4단계
| 단계 | 내용 | 결과 |
|---|---|---|
| ① 사이클 정의 | 발신·수신과 배부 기준 설정 | 사이클과 세그먼트 |
| ② 실행 | 월말에 배부 실행 | 발신·수신 전표 |
| ③ 검증 | 차대 일치와 급변동 확인 | 검증 결과 |
| ④ 반영 | 수신 코스트센터에서 원가 활용 | 제품 원가 반영 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 법인 |
회계연도 Gjahr | 필수 | 대상 연도 |
귀속월 Perio | 필수 | 월 범위 From~To |
배부유형 CycleType | 선택 | 배부 / 배분 |
사이클 CycleId | 선택 | 특정 사이클만 |
| 코스트센터 | 선택 | 발신 또는 수신 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
귀속월 Zzim · 기간 Perio | 배부 대상 기간 |
사이클 CycleId · 유형 CycleType | 배부 / 배분 |
세그먼트 SegmentId · SegmentText | 배부 기준 설명 |
라인 유형 LineType | 발신 / 수신 |
코스트센터 CostCenter | 보내는 곳 또는 받는 곳 |
전표번호 Belnr · 전기일 Budat | 배부 전표 |
| 금액 | 배부 금액 |
| 발신 합계 · 수신 합계 | 세그먼트별 집계 |
| 차이 | 발신 − 수신. 0이 아니면 경고 |
| 전월 대비 | 변동률 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
KSU5 | 코스트센터 배부 실행 | 발신·수신 검증을 얹어 조회 |
KSV5 | 코스트센터 배분 실행 | 같은 구조로 조회 |
KSB1 | 코스트센터 실제 라인 | 전표 라인 원천 |
COEP | CO 전표 라인 | 조회 원천 |
CSKS · CSKT | 코스트센터 마스터 | 명칭 |
T811 계열 | 사이클 설정 | 세그먼트 정의 |
도입 시 확인이 필요한 부분
사이클 실행 순서가 중요합니다. 1차 배부 결과가 2차 배부의 입력이 되는 구조면 순서가 바뀌면 결과가 달라집니다. 또 배부를 여러 번 실행하면 중복될 수 있어 재실행 시 기존 전표를 취소하는지 확인해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCCCALLOC'
@EndUserText.label: '코스트센터 배부 현황 (Z)'
define view Z_C_CC_ALLOCATION
as select from coep as Line
left outer join csks as CCtr on Line.objnr = CCtr.objnr
{
key Line.kokrs,
key Line.belnr as Belnr,
key Line.buzei,
Line.gjahr, Line.perio,
Line.budat,
CCtr.kostl as CostCenter,
Line.kstar as CostElement,
Line.wtgbtr as Amount,
// 발신은 음수, 수신은 양수로 기록됨
case when Line.wtgbtr < 0 then '발신' else '수신' end as LineType
// 사이클·세그먼트 정보는 배부 설정 테이블과 조인
// 세그먼트별 발신 합계 = 수신 합계 검증은 소비 뷰에서
}
where Line.vrgng in ( 'KSU5', 'KSV5' )
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 배부 라인 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 라인 테이블 | sap.m.Table — 세그먼트 그룹, 발신·수신 소계 |
| 검증 표시 | sap.m.ObjectStatus — 일치 / 차이 발생 |
| 변동 표시 | 전월 대비 변동률 색 구분 |
세그먼트별로 소계를 넣은 이유
배부 검증은 사이클 전체가 아니라 세그먼트 단위로 해야 합니다. 전체 합계는 맞는데 한 세그먼트에서 남고 다른 세그먼트에서 모자라면 상쇄돼 보이지 않습니다. 세그먼트마다 발신·수신 소계를 두면 그런 상쇄가 드러납니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.ccalloc) · ko 로케일 |
view/Main.view.xml | 조회조건과 배부 라인 테이블 |
controller/Main.controller.js | 조회 · 발신·수신 검증 · 변동률 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 변동률 · 상태 색 포맷터 |
localdata/ccalloc.json | 배부 라인 192건 |
localdata/costcenters.json | 코스트센터 8건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 세그먼트별 발신 합계 = 수신 합계 | 통과 |
| 전표별 차변 합계 = 대변 합계 | 통과 |
| 발신 라인과 수신 라인이 같은 전표에 존재 | 통과 |
| 전월 대비 변동률 = (당월 − 전월) ÷ 전월 | 통과 |
| 코스트센터 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
배부와 배분 중 무엇을 써야 하나요?
받는 쪽에서 원래 비용 항목을 알아야 하면 배분, 단순히 금액만 넘기면 되면 배부입니다. 배분은 원가요소가 그대로 유지돼 추적이 되지만 라인 수가 많아집니다.
발신과 수신이 안 맞으면 무엇을 봐야 하나요?
사이클 설정의 수신자 규칙을 봅니다. 수신 코스트센터가 없거나 배부 기준값이 0이면 보낼 곳이 없어 금액이 남습니다.
배부를 다시 실행하면 중복되나요?
설정에 따라 기존 전표를 취소하고 다시 만들거나 추가됩니다. 재실행 정책을 확인하지 않으면 원가가 두 배로 잡힐 수 있습니다.
SAP 표준 기능과 어떻게 이어지나요?
배부 실행은 KSU5·KSV5 가 담당하고 결과는 CO 전표로 남습니다. 이 화면은 그 전표를 세그먼트 단위로 묶어 발신·수신 검증과 전월 대비 변동을 보여 주는 확장입니다.