SAP 코스트센터 계획 대비 실적 차이 분석 — 편성한 예산에서 지금 얼마나 벗어났는가
코스트센터 책임자는 매달 같은 질문을 받습니다. "계획보다 얼마나 더 썼나요?" 원가요소까지 내려가 차이를 신호등으로 먼저 짚어 주는 화면입니다.
코스트센터 책임자에게 예산은 한 번 편성하고 끝나는 숫자가 아닙니다. 달이 지날수록 "계획 대비 지금 어디쯤 와 있는가"를 누군가 계속 물어봅니다. 문제는 그 질문에 답하려면 코스트센터 합계만으로는 부족하다는 점입니다. 급여는 계획대로인데 소모품비만 튀었는지, 아니면 전체적으로 고르게 초과했는지는 원가요소 단위까지 내려가야 보입니다.
SAP 표준 원가 데이터 구조를 그대로 이어받아 코스트센터x원가요소 조합별로 계획액과 실적액을 대사하고, 차이율에 따라 신호등으로 우선순위를 매겨 OpenUI5 화면으로 확장한 것이 ZLCO06110입니다. 같은 코스트센터 데이터를 다루는 기존 화면들과는 축이 다릅니다 — 배부 사이클이 끝난 뒤 배부 완전성을 확인하는 화면이나 활동유형 단가 자체를 관리하는 화면과 달리, 이 화면은 편성된 계획과 실제 집행 사이의 간극 자체를 판정 대상으로 삼습니다. 실제 구동 화면 5종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 코스트센터 마스터 —
CSKS·CSKT(코드·명칭·책임자) - 원가요소 마스터 —
CSKU(2차원가요소 텍스트)·SKAT(1차원가요소/계정 텍스트) - 계획/실적 합계 —
COSP(1차원가요소)·COSS(2차원가요소=배분), WRTTP 01=계획/04=실적 구조 - 실적 라인아이템 —
COEP(전표번호·전기일·금액·적요) - 표준 리포트 —
S_ALR_87013611(계획/실적/차이),KSB1(실적 라인아이템 조회)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 관리회계(CO) · 코스트센터 회계 · 계획/실적 차이 분석 |
| Namespace | zui5.ccpvar |
| 셸 구조 | 조회조건 영역(우측 조회) + 코스트센터x원가요소 그리드, 상세 다이얼로그(월별 추이 + 실적 전표) |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 1개 |
| T-code 근거 | S_ALR_87013611(Cost Centers: Actual/Plan/Variance), KSB1 |
| 성격 | 조회·분석형 — 계획 편성과 실적 전기는 표준 트랜잭션이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 5종 둘러보기
회사코드·조회기간을 넣고 조회하면 코스트센터x원가요소별 계획/실적 차이가 신호등과 함께 뜹니다 → "예산 초과만" 같은 옵션으로 우선순위를 좁히고 → 행을 눌러 월별 추이와 실적 전표까지 드릴다운합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드 · 회계연도 · 조회기간(시작월~종료월)을 선택합니다. 시작월이 종료월보다 크면 오류 메시지가 뜹니다.
- 필요하면 코스트센터를 부분일치로 입력하거나 원가그룹(인건비·경비·배분)을 선택합니다.
- "차이 있는 항목만" · "예산 초과만" 옵션을 필요에 따라 켭니다.
- [조회] 버튼을 누르거나 입력 필드에서 Enter 키를 누릅니다 — 조회조건 오른쪽 끝에 [조회]/[초기화] 버튼이 있습니다.
- 결과 그리드에서 행(또는 상세 아이콘)을 클릭하면 해당 조합의 상세 다이얼로그가 열립니다.
- 메인 그리드·상세 다이얼로그 각각에서 [CSV 다운로드]로 결과를 내려받을 수 있습니다(UTF-8 BOM 포함).
차이율 신호등 — 언제 빨간불이 켜지는가
코스트센터x원가요소 조합마다 조회기간 누계 계획액과 실적액을 각각 합산해 차이(실적−계획)와 차이율(차이/계획×100)을 계산합니다. 계획이 0인데 실적이 있으면 차이율을 정의할 수 없으므로 별도로 "계획없음" 상태를 두어, 계획 미편성을 정상 범위와 혼동하지 않도록 했습니다.
| 조건 | 신호등 | 의미 |
|---|---|---|
| 계획 0 & 실적 0 | 정상(초록) | 집행 자체가 없는 조합 |
| 계획 0 & 실적 > 0 | 계획없음(무색) | 계획을 세우지 않은 항목에 실적 발생 — 별도 확인 필요 |
| 차이율 ±10% 미만 | 정상(초록) | 계획 범위 안에서 집행 중 |
| 차이율 +10~20% / −10~−20% | 주의(주황) | 초과주의 · 부진주의 — 추이를 지켜볼 조합 |
| 차이율 ±20% 이상 | 과다(빨강) | 예산초과 · 집행부진 — 우선 확인 대상 |
이 임계값(10%·20%)은 코스트센터 책임자가 매달 보는 값이 지나치게 많아지지 않도록 정한 기준선입니다. 도입 시에는 부문별 예산 통제 정책에 맞춰 임계값을 조정할 수 있습니다.
코스트센터x원가요소 조합 집계 파이프라인
코스트센터 합계만 보면 어느 원가요소가 차이를 만들었는지 보이지 않습니다. 그래서 이 화면은 처음부터 코스트센터와 원가요소를 하나로 묶은 조합 단위로 집계 파이프라인을 구성합니다.
| 단계 | 처리 내용 |
|---|---|
| ① 대상 코스트센터 선정 | 회사코드 일치 + 코스트센터 코드 부분일치로 대상을 좁힌다 |
| ② 유효 조합 산출 | 계획이 편성된 코스트센터x원가요소 조합만 대상으로 삼는다 — 코스트센터마다 실제로 쓰는 원가요소가 다르기 때문이다 |
| ③ 계획·실적 합산 | 조회기간 내 월별 계획을 조합별로 합산하고, 같은 기간 실적 전표(라인아이템)를 조합별로 합산한다 |
| ④ 차이·신호등 산출 | 차이·차이율을 계산하고 임계값에 따라 신호등 상태를 부여한다 |
| ⑤ 옵션 필터·정렬 | 옵션을 적용한 뒤 차이 절대값이 큰 순서로 정렬해 우선 확인할 조합이 위로 오게 한다 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대상 회사코드 |
| 회계연도 | 필수 | 기본값은 시스템 연도 |
| 조회기간(시작월~종료월) | 필수 | 시작월이 종료월보다 크면 오류 |
| 코스트센터 | 선택 | 부분일치, Enter 키로 즉시 조회 |
| 원가그룹 | 선택 | 전체 / 인건비 / 경비 / 배분 |
| 차이 있는 항목만 | 선택 | 차이 절대값이 0에 가까운 조합 제외 |
| 예산 초과만 | 선택 | 실적 > 계획인 조합만 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 코스트센터 · 코스트센터명 · 부문 | 관리·영업·생산부문으로 구분 |
| 책임자 | 코스트센터 책임자명 |
| 원가요소 · 원가요소명 · 원가그룹 | 인건비·경비·배분으로 구분 |
| 계획액 · 실적액 | 조회기간 누계, 우측정렬 천단위 콤마 |
| 차이 · 차이율 | 실적−계획, 통화단위와 신호등 색상 동반 표시 |
| 상태 | 정상 · 초과주의 · 부진주의 · 예산초과 · 집행부진 · 계획없음 |
| 상세 | 클릭 시 월별 추이 + 실적 전표 상세 다이얼로그 |
SAP 표준 기능 매핑
이 화면은 계획 편성이나 실적 전기를 대체하지 않습니다. 계획은 표준 계획 트랜잭션이 편성하고, 실적은 일상적인 전표 전기를 통해 표준 원가요소 합계 테이블에 그대로 쌓입니다. 이 화면은 그 데이터를 코스트센터 책임자 관점의 신호등 우선순위로 재구성해 조회·검증 관점을 확장한 것입니다.
| 테이블 · 오브젝트 | 역할 |
|---|---|
CSKS · CSKT | 코스트센터 마스터 · 텍스트(코드 · 책임자 · 유효기간) |
CSKU · SKAT | 원가요소 텍스트(2차원가요소 · 1차원가요소/계정) |
COSP | 1차원가요소 계획/실적 합계(WRTTP 01=계획, 04=실적, 월별 12컬럼) |
COSS | 2차원가요소(배분 등) 계획/실적 합계 — 구조는 COSP 와 동일 |
COEP | 실적 라인아이템(전표번호 · 전기일 · 금액 · 적요) |
S_ALR_87013611 | 표준 리포트 — Cost Centers: Actual/Plan/Variance |
KSB1 | 코스트센터 실적 라인아이템 조회 |
도입 시 확인이 필요한 부분
차이율 임계값(10%·20%)과 원가그룹 분류(인건비/경비/배분) 기준은 회사 예산 통제 정책에 따라 달라집니다. 또 코스트센터그룹·원가요소그룹은 실제 운영에서 계층(세트) 구조를 쓰므로, 도입 시에는 그 계층을 그대로 반영해 그룹 조회 기능을 확장하는 것을 권장합니다.
참고 CDS 뷰
운영 서비스로 연결할 때는 계획·실적 합계와 라인아이템을 함께 서빙하는 뷰로 구성하는 방법을 제안합니다.
@AbapCatalog.sqlViewName: 'ZLCCPVARV'
@EndUserText.label: '코스트센터 계획/실적 차이 (Z)'
define view Z_C_CostCtrPlanActualVar
as select from cosp as Plan
inner join coep as Act on Act.objnr = Plan.objnr
and Act.gjahr = Plan.gjahr
and Act.wrttp = '04'
inner join csks as CC on CC.kostl = Plan.kostl
left outer join csku as CE on CE.kstar = Plan.kstar
{
key Plan.kostl,
key Plan.kstar,
Plan.gjahr,
CC.verak,
CE.ktext as KstarText,
Plan.wkg001, Plan.wkg002, Plan.wkg003, Plan.wkg004,
Plan.wkg005, Plan.wkg006, Plan.wkg007, Plan.wkg008,
Act.wkgbtr as ActualLineAmount,
Act.belnr, Act.budat, Act.sgtxt
}
where Plan.wrttp = '01' and Plan.versn = '0'
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 원가요소 그룹 계층과 버전(VERSN) 사용 범위에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.f.DynamicPage — 조회조건은 헤더 영역, 결과는 content 영역 |
| 조회조건 | sap.m.Select · sap.m.Input · sap.m.CheckBox — 오른쪽 끝에 조회/초기화 버튼 |
| 결과 그리드 | sap.ui.table.Table — 14개 컬럼(10개 초과)이라 sap.m.Table 대신 사용 |
| 상세 다이얼로그 | sap.m.Dialog + sap.m.Table(월별 추이 · 실적 전표, 소량 표시) |
| 강조 표시 | RowSettings.highlight / ColumnListItem.highlight — None/Success/Warning/Error MessageType 값만 사용 |
| Enter 키 조회 | Input 에 submit, Select/CheckBox 에 change 이벤트로 onPAI 단일 진입점 호출 |
| CSV 다운로드 | BaseController 공통 함수, UTF-8 BOM 포함 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment |
Component.js | 디바이스 모델 초기화 · 라우터 |
manifest.json | 앱 디스크립터 — 앱 ID(zui5.ccpvar) · ko 로케일 |
view/Main.view.xml + fragments | 조회조건 · 결과 그리드 · 상세 다이얼로그 |
controller/Main.controller.js | 조합 집계 · 필터 · 상세 드릴다운 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
model/formatter.js | 금액 · 퍼센트 · 신호등 포맷 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/*.json | 코스트센터 · 원가요소 마스터, 계획, 실적 라인아이템 |
검증 결과
화면 구성에 쓴 데이터는 코스트센터 8개 · 원가요소 9개 · 계획 424건 · 실적 라인아이템 1,154건이며, 회사코드 1000 기준 계획 합계 약 39.8억 원 · 실적 합계 약 41.2억 원(차이율 +3.5%)입니다.
| 검증 항목 | 결과 |
|---|---|
| 계획 마스터의 모든 (코스트센터,원가요소,월) 조합에 대응하는 실적 라인아이템 존재 | 통과 |
| 실적 라인아이템 합계 = 화면 표시 실적액(조합별 전수 대조) | 통과 |
| python · node 두 언어로 독립 구현한 집계 로직의 합계·필터 결과 일치 | 통과 |
| 차이율 임계값(±10%·±20%)에 따른 신호등 분포 확인 | 통과 |
| manifest 참조 · i18n 키 누락 | 0건 |
| 조회 버튼 위치 — 조회조건 영역 내부(하단 Bar 아님) | 통과 |
| Enter 키 조회 동작 | 통과 |
| 적용 테마 sap_horizon(부트스트랩 · 런타임 값 대조) | 통과 |
| 화면 렌더링 — 실브라우저에서 조회 → 필터 → 상세 실동작 후 캡처 | 5/5 |
코스트센터 · 책임자 · 금액은 모두 검증용 데이터입니다.
자주 묻는 질문
계획을 세우지 않은 조합도 화면에 나오나요?
실적은 있는데 계획이 0인 코스트센터x원가요소 조합은 차이율을 계산하지 않고 '계획없음' 상태로 따로 표시합니다. 계획 미편성 상태를 임의로 0%나 100%로 계산해 정상 범위와 섞이지 않도록 하기 위해서입니다.
차이 있는 항목만과 예산 초과만 옵션을 같이 켜면 어떻게 되나요?
두 조건을 모두 만족하는 조합만 남습니다. 차이가 발생했고 그중에서도 실적이 계획을 초과한 경우만 골라 봅니다.
코스트센터마다 나오는 원가요소 개수가 다른 이유는 무엇인가요?
코스트센터별로 실제 사용하는 원가요소 집합이 다르기 때문입니다. 계획이 편성된 조합만 대상으로 삼아, 관리부문에는 감가상각비, 생산부문에는 배분원가처럼 실제로 쓰이는 조합만 보여 줍니다.
SAP 표준 기능과 어떻게 이어지나요?
코스트센터별 계획·실적 데이터는 표준 원가요소 합계 테이블에 그대로 쌓이고, 표준 실행(S_ALR_87013611, KSB1)이 그 데이터를 ALV 리스트로 보여 줍니다. 이 화면은 같은 데이터 구조를 이어받아 신호등 기반 우선순위 판정과 라인아이템 드릴다운을 더해 조회·검증 관점을 확장한 것입니다.
코스트센터 계획 대비 실적, 지금 쓰는 SAP 위에서 확장해 보세요
월말에 코스트센터 담당자를 일일이 붙잡고 확인하는 대신, 신호등으로 먼저 좁혀 놓으면 결산 준비 시간이 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.
| 관련 글 | 차이점 |
|---|---|
| SAP 원가 배부결과 검증 | 배부 사이클이 끝난 뒤 배부 완전성(잔액 0)을 확인 — 이 화면은 배부 이후 계획 대비 실적 차이 자체를 판정 |
| SAP 활동유형 단가 관리 | 활동유형 단가 마스터 자체를 관리 — 이 화면은 원가요소별 계획/실적 차이를 조회 |
| SAP 예산관리 시스템 | 예산 편성·집행 통제 솔루션 — 이 화면은 편성된 계획과 실적 사이의 차이를 원가요소 단위로 짚는 단일 조회 화면 |