SAP 재무제표 조회 — 계층 구조로 펼치고 전기와 비교하기
재무제표 버전에 따라 재무상태표와 손익계산서를 계층으로 펼치고, 전기 동기간 대비 증감과 구성비를 함께 보는 화면입니다.
재무제표는 계정을 나열한 표가 아니라 계층 구조입니다. 자산총계 아래 유동자산이 있고, 그 아래 현금과 매출채권이 있습니다.
어느 수준에서 보느냐에 따라 필요한 정보가 다릅니다. 경영진은 총계를, 담당자는 계정을 봅니다. 표준 재무제표 버전 구조를 그대로 이어받아 계층을 접고 펼치며 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 재무제표 버전 —
Version으로 항목 분류 체계 선택 - 계층 — 항목 코드(
ItemCode) · 레벨(Level) · 상위 코드(ParentCode) - 구분 — 재무상태표(BS)와 손익계산서(PL) 분류(
StatementType) - 집계 — 합계 항목 표시(
IsTotal)와 계정 범위(AccountRange) - 금액 — 당기(
CurrentAmount)와 전기(PriorAmount)
| 항목 | 내용 |
|---|---|
| 대응 T-code | S_ALR_87012284 (재무제표 조회) |
| 업무 영역 | 재무회계(FI) · 재무제표 · 보고 |
| Namespace | zui5.finstmt |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 계층 트리 테이블 |
| 화면 수 | 조회 화면 1개 |
| 데이터 | 재무제표 항목 2,088건 |
| 성격 | 조회형(Read-Only) — 집계는 표준 재무제표 버전을 따름 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·재무제표버전·연도·월로 조회하면 계층 구조가 펼쳐집니다 → 증감이 큰 항목을 찾아 내려가고 → 구성비로 비중을 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 재무제표버전을 고릅니다. 버전이 항목 분류를 정합니다.
- 회계연도·월을 지정합니다. 전기 동월이 자동으로 비교됩니다.
- 제표 구분으로 재무상태표와 손익계산서를 전환합니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 증감율이 큰 항목을 찾아 계층을 펼쳐 내려갑니다.
- 구성비로 전체에서 차지하는 비중을 확인합니다.
- 결과는 CSV 다운로드로 내려받아 보고 자료로 씁니다.
계층 집계와 비교 산식
하위 항목을 더해 상위가 되고, 전기와 비교해 변화를 봅니다.
합계 항목(IsTotal) 금액 = Σ(하위 레벨 항목 금액)
말단 항목 금액 = Σ(계정 범위에 속한 계정 잔액)
증감액 = 당기 금액 − 전기 금액
증감율 = 증감액 ÷ |전기 금액| × 100
구성비 = 항목 금액 ÷ 최상위 합계 × 100
재무상태표 검증 자산총계 = 부채총계 + 자본총계
구성비를 함께 두는 이유
증감율만 보면 작은 항목의 변화가 크게 보입니다. 100만원이 200만원이 되면 100% 증가지만 전체가 500억이면 의미가 없습니다. 구성비를 옆에 두면 그 항목이 전체에서 차지하는 비중이 보여, 주목할 만한 변화인지 판단이 됩니다.
계층 레벨과 사용자
| 레벨 | 예 | 주 사용자 |
|---|---|---|
| 레벨 0 | 자산총계 · 매출액 등 최상위 | 경영진 보고 |
| 레벨 1 | 유동자산 · 매출원가 등 대분류 | 월간 검토 |
| 레벨 2 | 현금및현금성자산 등 중분류 | 담당자 분석 |
| 말단 | 계정 단위 | 전표 추적 |
레벨 구성은 재무제표 버전 설정을 따르며, 공시 서식에 맞춰 정의합니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
재무제표버전 Version | 필수 | ZK01 등 항목 분류 체계 |
회계연도 Gjahr | 필수 | 대상 연도 |
월 Monat | 필수 | 기준 월 (누계) |
제표 구분 StatementType | 선택 | BS 재무상태표 / PL 손익계산서 |
| 표시 레벨 | 선택 | 펼칠 계층 깊이 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
항목 코드 ItemCode · 항목명 ItemName | 계층 항목 |
레벨 Level | 들여쓰기 깊이 |
상위 코드 ParentCode | 계층 연결 |
구분 Category · StatementType | 자산·부채·자본 / BS·PL |
합계 여부 IsTotal | 합계 항목은 강조 표시 |
계정 범위 AccountRange | 말단 항목의 계정 구간 |
당기 금액 CurrentAmount | 기준월 누계 |
전기 금액 PriorAmount | 전년 동월 누계 |
| 증감액 · 증감율 | 전기 대비 변화 |
| 구성비 | 최상위 합계 대비 비중 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
S_ALR_87012284 | 재무제표 조회 | 증감율·구성비를 열로 추가하고 계층 조작 개선 |
OB58 | 재무제표 버전 설정 | 항목 분류 체계 원천 |
FS10N | 계정 잔액 | 말단 항목 금액 |
ACDOCA | 유니버설 저널 | 집계 원천 |
T011 · T011T | 재무제표 버전과 항목 텍스트 | 계층 정의 |
도입 시 확인이 필요한 부분
재무제표 버전이 여러 개인 경우가 많습니다. K-IFRS 공시용, 세무용, 내부 관리용이 따로 있고 항목 구성이 달라 같은 데이터도 다르게 보입니다. 어느 버전으로 보고 있는지가 화면에 명확해야 하고, 계정이 어느 항목에도 속하지 않으면 합계가 맞지 않으므로 미할당 계정 점검이 필요합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCFINSTMT'
@EndUserText.label: '재무제표 계층 조회 (Z)'
define view Z_C_FINANCIAL_STATEMENT
with parameters p_version : versn
as select from acdoca as Line
inner join t011 as FsvItem on FsvItem.versn = :p_version
{
key Line.rbukrs as Bukrs,
key Line.gjahr as Gjahr,
key Line.poper as Monat,
key FsvItem.ergsl as ItemCode,
// 계정이 속한 재무제표 항목으로 묶어 집계
sum( Line.hsl ) as CurrentAmount
// 전기 금액은 같은 뷰를 전년도 조건으로 조회해 조인
// 증감액·증감율·구성비는 소비 뷰에서 계산
// 계층(Level·ParentCode)은 재무제표 버전 구조에서 가져옴
}
group by Line.rbukrs, Line.gjahr, Line.poper, FsvItem.ergsl
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 계층 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 계층 테이블 | sap.ui.table.TreeTable — 접기·펼치기 |
| 합계 강조 | 합계 항목은 굵게, 레벨별 들여쓰기 |
| 증감 표시 | sap.m.ObjectNumber — 증가·감소 부호 색 |
트리 테이블을 쓴 이유
재무제표는 2,000개가 넘는 항목을 담지만 한 번에 다 볼 일은 없습니다. 총계만 보다가 이상한 항목에서 내려가는 방식이 자연스럽습니다. 트리로 두면 필요한 가지만 펼쳐져, 전체를 스크롤하지 않고도 원하는 수준에 도달합니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.finstmt) · ko 로케일 |
view/Main.view.xml | 조회조건과 계층 테이블 |
controller/Main.controller.js | 조회 · 계층 구성 · 증감·구성비 계산 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 비율 · 레벨 들여쓰기 포맷터 |
localdata/finstmt.json | 재무제표 항목 2,088건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 합계 항목 금액 = 하위 항목 금액 합계 (전 계층) | 통과 |
| 자산총계 = 부채총계 + 자본총계 | 통과 |
| 증감액 = 당기 금액 − 전기 금액 | 통과 |
| 구성비 합계 = 100% (같은 레벨 내) | 통과 |
| 상위 코드가 실제 항목으로 존재 (계층 무결성) | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 계층 조작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
재무제표 버전을 바꾸면 무엇이 달라지나요?
항목 분류와 계층이 달라집니다. 같은 계정이 공시용 버전에서는 유동자산에, 관리용 버전에서는 다른 항목에 묶일 수 있어 어느 버전으로 보고 있는지 항상 확인해야 합니다.
어느 항목에도 속하지 않는 계정이 있으면요?
합계가 맞지 않습니다. 재무제표 버전에 계정 범위를 정의할 때 누락된 계정이 생기면 그 잔액이 어디에도 나타나지 않으므로, 미할당 계정 점검이 필요합니다.
월 누계인가요 당월인가요?
재무상태표는 시점 잔액이고 손익계산서는 기간 누계입니다. 기준월을 고르면 재무상태표는 그 시점 잔액을, 손익계산서는 연초부터 그 달까지의 누계를 보여 줍니다.
SAP 표준 기능과 어떻게 이어지나요?
재무제표 버전과 집계는 표준이 담당합니다. 이 화면은 그 계층을 트리로 조작할 수 있게 하고 전기 대비 증감율과 구성비를 열로 붙여, 보고 자료를 그대로 만들 수 있게 하는 확장입니다.