SAP 재무제표 구성비 분석 점검 — 커진 항목과 줄어든 항목을 먼저 가른다
재무상태표·손익계산서 각 항목이 총액에서 차지하는 비중을 산출해 전기와 나란히 놓고, 구성비가 크게 움직인 항목부터 먼저 짚어 둡니다
재무상태표와 손익계산서는 금액 그 자체만 보면 규모가 커졌다는 것은 알 수 있어도, 구조가 어떻게 바뀌었는지는 잘 드러나지 않습니다. 매출채권이 늘어난 게 매출이 커져서인지 회수가 늦어져서인지는 금액만으로는 가려지지 않습니다. 이때 쓰는 방법이 구성비 분석(Common-Size Analysis)입니다. 재무상태표는 자산총계를, 손익계산서는 매출액을 100%로 두고 각 항목을 그 비중으로 다시 표현하면, 전기와 당기의 구조 차이가 금액 단위 없이 바로 비교됩니다.
실무에서는 표준 재무제표 리포트에서 항목별 금액은 바로 뽑을 수 있어도, 전기 대비 구성비 증감을 항목마다 다시 계산해 정리하는 작업은 매 결산마다 반복됩니다. 원장 데이터를 그대로 이어받아 항목별 구성비와 전기 대비 증감을 자동으로 산출하고, 구성비 합계와 차대가 맞는지까지 함께 대사하는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 원장 — 계정별 금액 집계(
ACDOCA)를 그대로 사용 - 계정 마스터 — 계정과목·계정명(
SKA1·SKAT)을 표시항목 매핑의 기준으로 사용 - 표준 화면 — 재무상태표(S_ALR_87012284) · 손익계산서(S_ALR_87012291) · G/L 계정 잔액(FS10N) · G/L 개별항목(FAGLL03)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 재무 분석 |
| 관련 기준서 | - |
| 대상 영역 | 재무 분석 — 재무제표 항목별 구성비(Common-Size) 산출과 전기 대비 증감 대사 |
| Namespace | zui5.fsmix |
| 셸 구조 | 조회조건 영역(우측 조회) + 대사 검증 요약 + 재무상태표·손익계산서 구성비 2개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | S_ALR_87012284 · S_ALR_87012291 · FS10N · FAGLL03 |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 회계 판단·공시 확정은 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회계연도·기간을 넣고 조회하면 대사 검증 요약과 재무상태표 구성비 명세가 한 화면에 뜹니다 → 탭을 옮겨 손익계산서 구성비를 보고 → 항목을 클릭해 원천 계정 내역까지 내려가 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 회계연도와 기간을 선택합니다. 화면을 열면 기본값(2026년 012기)으로 바로 조회 결과가 표시됩니다.
- 구성비 변동 임계값(%p)을 입력합니다. 선택 항목이며 이 값을 넘는 증감이 있는 항목만 "확인 필요"로 표시됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 임계값 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 탭을 옮겨 재무상태표 구성비와 손익계산서 구성비를 전환하고, 각 탭 상단의 대사 검증 요약에서 구성비 합계·100% 대비 차이·차대 검증·검증 상태를 먼저 확인합니다.
- 행을 누르면 그 항목의 원천 계정 내역이 상세 다이얼로그로 열립니다.
- 화면 하단 CSV 다운로드(UTF-8 BOM)로 현재 탭의 결과를 저장할 수 있습니다.
구성비 변동, 얼마나 움직이면 확인 필요인가
구성비 자체는 매 기간 조금씩 움직입니다. 문제는 어느 폭까지가 정상 범위이고, 어느 폭부터 원인을 들여다봐야 하는지입니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| |증감(%p)| ≤ 임계값 | 정상 | 추가 조치 없음 |
| |증감(%p)| > 임계값 | 확인 필요 | 해당 항목의 증감 원인을 원장(전표)에서 확인 |
| 구성비 합계 또는 차대 검증에서 차이 발견 | 확인 필요 | 기준금액·집계 범위를 재확인 후 재계산 |
이 화면이 대신 정하지 않는 것
판정 결과는 확인이 필요한 항목을 알리는 표시일 뿐, 회계 처리의 적정성을 단정하지 않습니다. 임계값은 확인 대상을 고르는 참고값이며 회사마다 다르게 정할 수 있습니다. 이 화면은 조회·점검 도구이고, 최종 판단은 회사와 감사인이 합니다.
금액에서 구성비 대사까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 기준금액을 정한다 — 재무상태표: 자산총계 / 손익계산서: 매출액 |
| 2단계 | 구성비를 구한다 — 구성비 = 금액 ÷ 기준금액 × 100 |
| 3단계 | 전기 대비 증감을 구한다 — 증감(%p) = 당기 구성비 − 전기 구성비 |
| 4단계 | 구성비 합계를 검증한다 — 유동자산합계 구성비 + 비유동자산합계 구성비 = 100%(손익계산서는 매출원가 구성비 + 매출총이익 구성비 = 100%) |
| 5단계 | 차대·손익을 대사한다 — 자산총계 − (부채총계 + 자본총계) = 0 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회계연도 | 필수 | 대사 검증 요약 단건 조회의 키로도 씁니다. |
| 기간 | 필수 | 대사 검증 요약 단건 조회의 키로도 씁니다. |
| 구성비 변동 임계값(%p) | 선택 | 기본값 2.00. 이 값을 넘는 증감만 확인 필요로 표시 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 대사 검증 요약 | 기준금액 · 구성비 합계 · 100% 대비 차이 · 차대 검증 · 검증 상태 |
| 재무상태표·손익계산서 구성비 명세 | 항목코드 · 항목명 · 구분 · 금액 · 기준금액 · 구성비(%) · 전기 구성비(%) · 증감(%p) · 상태 |
| 항목 상세 | 원천 계정 · 계정명 · 금액 · 계정 합계 · 항목 금액 대비 차이 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 구성비 산출과 전기 대비 증감 대사 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
S_ALR_87012284 | 재무상태표(표준 리포트) | 항목별 자산총계 대비 구성비와 전기 대비 증감을 함께 계산합니다 |
S_ALR_87012291 | 손익계산서(표준 리포트) | 항목별 매출액 대비 구성비(원가율·이익률)를 함께 계산합니다 |
FS10N | G/L 계정 잔액 조회 | 표시항목을 구성하는 계정 잔액을 기준으로 대사합니다 |
FAGLL03 | G/L 개별항목 조회 | 항목 상세 다이얼로그의 원천 계정 내역과 대응합니다 |
분석 지표 정의표
| 지표명 | 정의 | 판단 기준 | 비고 |
|---|---|---|---|
| 재무상태표 구성비 (Common-Size B/S) | 자산·부채·자본 각 항목 금액 ÷ 자산총계 × 100 | 전기 대비 증감(%p)이 임계값 초과 시 확인 필요 | 유동·비유동 소계 포함 |
| 손익계산서 구성비 (Common-Size P/L) | 수익·비용·이익 각 항목 금액 ÷ 매출액 × 100 | 전기 대비 증감(%p)이 임계값 초과 시 확인 필요 | 매출총이익·영업이익·세전이익·당기순이익 소계 포함 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
ACDOCA | GJAHR · POPER · RACCT · HSL | 계정별 금액 집계(Universal Journal) |
SKA1 · SKAT | SAKNR · TXT50 | 계정과목 · 계정명(표시항목 매핑의 기준) |
T001 | BUKRS · WAERS | 회사코드 · 통화 |
define view entity ZC_FsCompositionRatio
as select from ZI_FsItemAmount as amt
left outer join ZI_FsBaseAmount as base on base.Gjahr = amt.Gjahr
and base.Period = amt.Period
and base.FsType = amt.FsType
{
key amt.Gjahr as Gjahr,
key amt.Period as Period,
key amt.FsType as FsType,
key amt.ItemCode as ItemCode,
amt.Amount as Amount,
base.BaseAmount as BaseAmount,
division( amt.Amount, base.BaseAmount, 4 ) * 100 as Ratio
}
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.App + sap.m.Page(조회조건 패널 · 대사 검증 요약 패널 · sap.m.IconTabBar 2개 탭) |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 화면 블록마다 엔티티셋에 직접 바인딩합니다. 모델 설정은 useBatch:false · defaultCountMode:"Inline" |
| 조회조건 | sap.m.Select · sap.m.Input — 우측 끝에 조회·초기화 버튼, 임계값 입력 필드에서 Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다 |
| 정렬 | sap/ui/model/Sorter로 표시 순서(SortSeq)를 정렬 |
| 명세 표 | sap.m.Table — 행 클릭 시 상세 다이얼로그, 소계 행은 IsSubtotal 플래그로 구분 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 화면 상태 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.fsmix · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 검증 요약 · 2개 탭 |
view/DetailDialog.fragment.xml | 항목 상세 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액 · 구성비 · 상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 2개 회계연도 × 4개 기간 × 재무상태표/손익계산서 조합(16개)에 걸쳐 항목 금액이 이어지도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 구성비 합계 = 100%(유동+비유동 자산, 매출원가+매출총이익) | 통과(16개 조합, 차이 0) |
| 차대 검증 = 0(자산총계 − 부채총계 − 자본총계, 당기순이익 상·하향 재계산) | 통과(16개 조합, 차이 0) |
| 소계 증감(%p) = 하위 항목 증감(%p) 합(요인 분해) | 통과(32개 그룹, 차이 0) |
| 항목 금액 = 원천 계정 합계 | 통과(296개 항목, 차이 0) |
| 조회 조건 전달 — $filter 25건(재무상태표 1개 조합) · $orderby+$top 정렬 확인 · $inlinecount 일치 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 3/3 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면은 언제, 어떤 범위에 적용하나요?
별도의 시행일이나 적용 범위 제한은 없습니다. 회계연도와 기간을 선택하면 그 시점의 재무상태표·손익계산서 구성비를 바로 조회할 수 있는 상시 조회·점검 도구입니다.
구성비를 계산하는 기준금액은 어떻게 정하나요?
재무상태표는 자산총계, 손익계산서는 매출액을 100%로 두고 각 항목 금액을 그 기준금액으로 나눠 구성비를 산출합니다.
"확인 필요" 상태가 뜨면 무엇을 해야 하나요?
전기 대비 구성비 증감이 설정한 임계값을 넘었거나 구성비 합계·차대 검증에서 차이가 발견됐다는 뜻입니다. 행을 눌러 원천 계정 내역을 먼저 확인하는 것이 다음 단계이며, 이 화면은 조회·점검을 돕는 도구이고 최종 회계 판단은 회사와 감사인이 수행합니다.
샘플 데이터로 보기는 실제 데이터인가요?
아닙니다. 화면 동작을 확인할 수 있도록 구성한 검증용 샘플 데이터이며 실제 회계 데이터가 아닙니다.