솔루션 홈
관리회계

SAP 핵심지표 요인분해 점검 — 이익률이 움직였다면, 어느 요인이 얼마나 밀었는가

영업이익률·매출총이익률 변동을 하위 요인 트리로 분해하고, 기여분 합계가 상위 지표와 맞물리는지 대사합니다

영업이익률이나 매출총이익률 같은 핵심 경영지표는 매달 계획 대비 몇 %p가 움직였는지까지는 쉽게 나옵니다. 어려운 쪽은 그다음입니다 — "그 변동이 매출 때문인지, 원가율 때문인지, 판관비 때문인지"를 스프레드시트로 쪼개다 보면 하위 요인을 다 더했을 때 상위 지표 변동액과 슬며시 어긋나는 경우가 생깁니다. 배분 기준이 바뀌었거나 요인 하나가 누락된 것인데, 눈으로는 잘 드러나지 않습니다.

핵심 경영지표를 레벨1(지표) → 레벨2(요인) → 레벨3(세부요인) 3단 트리로 분해하고, 레벨마다 하위 기여분 합계가 상위 노드 기여분과 정확히 맞물리는지 자동으로 대사하는 화면을 OpenUI5로 확장했습니다. 실제 구동 화면 2종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 계획·실적 데이터 — 코스트센터 계획/실적 집계, 범용 원장(ACDOCA) 표준 구조를 그대로 사용
  • 표준 화면 — 코스트센터 계획/실적 비교 리포트(S_ALR_87013611) · 코스트센터 실제 라인아이템(KSB1) · 수익성분석 조회(KE30/KE24)
항목내용
업무 영역관리회계(CO) · 사업계획·실적
관련 기준서- (대상 영역: 사업계획·실적 - 핵심지표 요인분해)
Namespacezui5.kpitree
셸 구조조회조건 영역(우측 조회) + 탭(요인 트리/정합성 점검), 상세 Dialog
화면 수조회 화면 1개(탭 2개) + 상세 다이얼로그
SAP 표준 T-codeS_ALR_87013611 · KSB1 · KE30 · KE24 (§7 참고)
성격조회·집계·대사형 — 최종 관리회계 판단은 회사·담당 부서 몫
UI 테마sap_horizon 단일 적용

실제 화면 2종 둘러보기

회계연도·기간·지표를 골라 조회하면 요인 트리가 뜹니다 → 정합성 점검 탭에서 하위 요인 합계와 상위 노드 기여분이 맞물리는지 확인 → 행을 클릭하면 대사 상세가 다이얼로그로 열립니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

Main.view.xml
핵심지표 요인분해 점검 메인화면 — 요인 트리
요인 트리 — 조회조건 영역 오른쪽 끝에 조회·초기화 버튼이 있고, 지표(레벨1)가 요인(레벨2)·세부요인(레벨3)으로 이어서 분해되어 표시됩니다.
정합성 점검
정합성 점검 탭 — 상위 기여분과 하위 합계 대사
정합성 점검 — 노드별로 상위 기여분과 하위 합계·차이를 보여주며, 의도적으로 구성한 예외 건이 "확인 필요"로 정상 표시되는 것을 확인할 수 있습니다.

조작 방법

  1. 회계연도 · 기간(월) · 지표 · 점검결과를 지정합니다.
  2. 입력 필드에서 Enter 키를 누르거나 조회조건 영역 오른쪽 끝의 조회 버튼을 누르면 재조회됩니다. 초기화 버튼은 조건을 비웁니다.
  3. 기간·지표·점검결과를 "전체"로 두면 해당 조건 없이 조회합니다.
  4. 정합성 점검 탭의 행을 클릭하면 대사 상세 다이얼로그가 열립니다.
  5. 정합성 점검 탭 우측 하단의 CSV 내려받기 버튼으로 현재 조회된 목록을 내려받을 수 있습니다.

요인 기여도 판정 로직

지표별로 등록된 계획값·실적값의 차이를 %p로 환산한 뒤, 요인·세부요인 단위로 배분된 기여분의 합계가 상위 노드 기여분과 일치하는지 대사합니다.

판정 조건결과 상태사용자 조치
하위 요인 기여분 합계 = 상위 노드 기여분 (오차 0.005%p 미만)정상추가 조치 불필요
하위 요인 기여분 합계 ≠ 상위 노드 기여분확인 필요요인 트리 탭에서 해당 지표·기간의 하위 요인 값을 재확인

이 화면이 대신 정하지 않는 것

요인별 배분 가중치는 관리회계 판단의 결과물이지 이 화면이 만들어내지 않습니다. 이 화면은 등록된 요인 트리를 바탕으로 산술 정합성을 점검하는 도구이며, 요인 구분·배분 기준의 타당성에 대한 최종 판단은 회사와 담당 부서, 감사인이 합니다.

요인분해 산출 단계

단계내용
1단계지표(레벨1)의 계획값·실적값을 확정하고 변동액을 %p로 산출
2단계변동액을 레벨2 요인(매출액 효과·원가율 효과·판관비율 효과 등) 단위로 배분
3단계레벨2 요인의 기여분을 레벨3 세부요인 단위로 재배분
4단계레벨3→레벨2, 레벨2→레벨1 순으로 합계를 재계산해 상위 노드와 대조
5단계합계가 어긋나는 노드를 정합성 점검 탭에 "확인 필요"로 표시
레벨3(세부요인) 기여분 합계 = 레벨2(요인) 기여분
레벨2(요인) 기여분 합계 = 레벨1(지표) 기여분
레벨1(지표) 기여분 = 실적값 - 계획값 (%p 환산)

조회조건

필드필수설명
회계연도선택4자리 연도
기간(월)선택전체/06/07/08(전체 선택 시 조건 미전달)
지표선택전체/OPM(영업이익률)/GPM(매출총이익률)
점검결과선택전체/정상/확인 필요, Enter 키로 바로 조회

결과 컬럼

컬럼설명
지표ID · 지표명 · 기간(월)분해 대상 지표와 회계기간
레벨 · 요인명1(지표)/2(요인)/3(세부요인) 구분과 계층별 명칭
기여분(%p) · 계획값 · 실적값상위 노드 변동액에 대한 기여분과, 레벨1의 계획·실적 비율
상위 기여분 · 하위 합계 · 차이 · 점검결과대사식 좌변·우변 구성 요소와 정상/확인 필요 판정

SAP 표준 기능 매핑

SAP 표준 T-code연관 기능
S_ALR_87013611코스트센터 계획/실적 비교 리포트 — 레벨1 지표의 계획·실적값 참고
KSB1코스트센터 실제 라인아이템 — 원가율·판관비율 요인 집계 참고
KE30 / KE24수익성분석(CO-PA) 조회 — 매출·매출원가 요인 분해 참고

요구사항 매핑표

대상 영역요구사항대응 기능원천 데이터
사업계획·실적(핵심지표 요인분해)지표 변동의 원인 요인별 기여도 확인요인 트리 탭(레벨1~3 계층 분해)코스트센터·손익센터 계획/실적 집계
사업계획·실적(핵심지표 요인분해)요인분해 트리의 롤업 정합성 모니터링정합성 점검 탭(상위 기여분=하위 합계)요인 트리 산출 결과

도입 시 확인이 필요한 부분

지표 종류와 요인 트리의 계층 구성(레벨 수, 요인 명칭)은 회사의 관리회계 보고 체계에 맞춰 조정해야 합니다.

참고 CDS 뷰

운영 서비스로 연결할 때를 가정해 새로 스케치한 집계 뷰 예시입니다(운영 반영 시 권한 체크를 추가해야 합니다).

@AbapCatalog.sqlViewName: 'ZKPIFACTOR'
define view Z_I_KpiFactorTree
  as select from acdoca
    association [1..1] to csks as _Ccenter on acdoca.kostl = _Ccenter.kostl
{
  key acdoca.gjahr    as FiscalYear,
  key acdoca.poper    as Period,
      _Ccenter.kostl  as CostCenter,
      sum(case when acdoca.rldnr = '0L' then acdoca.hsl else 0 end) as ActualAmount,
      sum(case when acdoca.drcrk = 'H'  then acdoca.hsl else 0 end) as RevenueAmount
}
group by acdoca.gjahr, acdoca.poper, _Ccenter.kostl
// 요인별 기여분 배분은 별도 계층형 엔티티셋으로 관리

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 Toolbar + IconTabBar(2탭)
조회조건sap.m.Input · sap.m.Select — 우측 끝에 조회 버튼, Enter 키로 즉시 재조회
요인 트리 · 정합성 점검sap.ui.table.Table(각 엔티티셋에 개별 바인딩) — 정합성 점검 행 클릭 시 상세 다이얼로그
상세sap.m.Dialog — 선택 행의 바인딩 컨텍스트를 그대로 사용
공통 처리전역 오류 처리기(ErrorHandler) — 메타데이터·요청 실패를 메시지로 표시

서비스 경로는 manifest.jsondataSources 에 상대 경로로 선언한 OData V2 모델을 그대로 바인딩하며, 조회조건은 sap.ui.model.Filter 로 조립해 $filter 로만 전달합니다. 조건을 "전체"로 둘 때는 필터를 아예 생성하지 않습니다. 요인 트리는 상위 노드 아래로 하위 요인이 이어지도록 정렬 조건을 함께 구성했습니다.

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon
Component.js컴포넌트 초기화, 전역 오류 처리기 연결
manifest.json앱 디스크립터 — zui5.kpitree · OData dataSources · ko 로케일
view/Main.view.xml조회조건 + 탭(요인 트리/정합성 점검)
view/DetailDialog.fragment.xml정합성 점검 상세 다이얼로그
controller/Main.controller.js조회·필터 조립·다이얼로그 로직
controller/BaseController.js공통 처리(CSV 내려받기 등)
model/ErrorHandler.js전역 오류 처리
model/formatter.js기여분·비율·점검상태 서식
i18n/i18n_ko.propertiesko 로케일 리소스

검증 환경 구성 상세는 이 글에서 다루지 않습니다. 운영 전환 시에는 화면과 판정 로직은 그대로 두고 데이터 계층만 실제 서비스 호출에 맞추면 됩니다.

검증 결과

화면 구성에 쓴 데이터는 레벨3→레벨2→레벨1 순의 기여분 합계 관계가 항상 검증되도록 구성했습니다.

검증 항목결과
대사식 전수 검증(하위 요인 기여분 합계=상위 노드 기여분, 24개 점검 행)통과(차이 0건, 의도적 예외 2건 별도 표시)
표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출0건
화면 렌더링 — 실브라우저에서 조회 → 탭 전환 → 행 클릭 상세까지 실동작 후 캡처2/2
조회 버튼 위치 · sap_horizon 테마 적용 · Enter 키 조회확인
OData 계약 — 동사 경로 미사용, $filter·$orderby·$top·$inlinecount 로만 조회조건·페이징 전달확인

화면 수치는 모두 검증용으로 구성한 가상 데이터입니다.

자주 묻는 질문

이 화면은 언제부터, 어떤 범위에 사용할 수 있나요?

별도의 법정 시행일은 없습니다. 사내 관리회계 프로세스에서 산출하는 핵심 경영지표(영업이익률·매출총이익률 등)의 월별 변동 요인 분석을 대상 범위로 합니다.

"확인 필요" 표시는 오류가 확정되었다는 뜻인가요?

아니요. 이 화면은 분류·집계·대사를 돕는 조회·점검 도구이며, 표시된 차이의 원인 확정과 최종 판단은 회사와 감사인이 합니다.

화면에서 보이는 데이터는 실제 운영 데이터인가요?

아니요. 이 글과 화면 캡처에 쓰인 수치는 화면 동작과 대사 로직을 확인하기 위해 구성한 검증용 샘플 데이터이며, 실제 경영지표 데이터가 아닙니다.

요인별 기여분은 어떻게 계산되나요?

지표(레벨1)의 실적값에서 계획값을 뺀 변동액을 100분율(%p)로 환산한 뒤, 이를 레벨2 요인과 레벨3 세부요인 단위로 순차 배분합니다. 하위 요인 기여분의 합계가 상위 노드 기여분과 다르면 화면에 "확인 필요"로 표시됩니다.

이익률이 흔들렸다면, 원인 요인부터 트리로 짚어보세요

요인 트리를 미리 구성해 두면, 지표가 움직였을 때 매출·원가율·판관비 중 어디부터 봐야 하는지 바로 좁혀집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

관리회계사업계획·실적요인분해KPI 트리영업이익률매출총이익률기여도분석OpenUI5