재무회계

SAP 재무원장 및 보고서 분석(다차원)

SAP 퍼블릭 클라우드의 CDS 분석 뷰에서 집계를 받아 파일로 적고, 복식부기와 재무상태표로 검증한 뒤, 재무상태표 · 손익계산서 · 현금흐름표를 현행 K-IFRS 와 IFRS 18 로 나란히 보고, 계정대분류·계정·거래처·이익센터·사업장을 축에 쌓아 기초·차변·대변·기말을 읽습니다. 셀을 누르면 그 조건의 전표 라인까지 내려갑니다

소개 영상소개 영상 · 블로그 목차 순서대로 · 자막 포함 — 작업 흐름 메뉴 · 재무제표 · IFRS 18 비교 · 다차원 분석 3분 16초 · 한국어 나레이션

주요 재생 지점

다차원 리포트를 만들 때 늘 걸리는 것은 축이 아니라 숫자의 출처입니다. 축은 화면에서 바꾸면 되지만, 그 숫자가 어디서 왔고 온전히 들어온 것인지는 화면만 봐서는 알 수 없습니다.

그래서 이 앱은 그 순서를 화면 앞으로 끌어냈습니다 — SAP 퍼블릭 클라우드에서 가져오고, 가져온 것을 검증하고, 그 다음에 분석합니다. 가져오기는 CDS 분석 뷰가 서버에서 묶어 준 집계를 받아 서비스에 파일로 적고, 검증은 복식부기(차변=대변)와 재무상태표(자산=부채·자본)를 다시 세며, 분석은 그 파일만 읽습니다.

화면 왼쪽에는 접고 펼 수 있는 작업 흐름 메뉴 다섯 개가 있습니다 — 데이터 가져오기 · 재무상태표 · 손익계산서 · 현금흐름표 · 다차원 분석. 카드마다 지금 상태와 핵심 숫자(행 수와 차변=대변, 자산=부채+자본, 영업이익 현행 → IFRS 18, 현금 순증감 일치)가 보이고, 누르면 그 화면으로 갑니다.

같은 데이터로 재무제표 세 가지를 만듭니다. 재무상태표는 1~12월 누적 잔액, 손익계산서는 1~12월 기간 금액, 현금흐름표는 기준월의 간접법입니다. 손익계산서와 현금흐름표는 비교 · 현행 K-IFRS · IFRS 18 세 보기로 바꿔 가며, IFRS 18(K-IFRS 1118) 도입으로 영업이익과 활동 구분이 어떻게 달라지는지 숫자로 보여 줍니다.

전표 13만 줄을 브라우저로 끌어오지 않습니다. 이 CDS 는 분석용이라 $select 에 적은 차원이 곧 GROUP BY 이고, 리포트가 쓰는 차원 전부로 묶으면 한 달이 4,555행으로 내려옵니다. 같은 숫자를 얻는 두 방법이지만 받는 양이 서른 배 다릅니다.
항목내용
업무 영역재무회계(FI)·관리회계(CO) — 총계정원장 다차원 분석
원천SAP 퍼블릭 클라우드 Z002_FI_101_O2_JE / Z002_FI_101_I_JE_CAL (CDS 분석 뷰, 전기일 구간 파라미터)
연결같은 사이트의 SAP 프록시 /backend/<시스템> — 인증은 프록시가 맡습니다
Namespacezui5.multidim
셸 구조왼쪽 작업 흐름 메뉴 5개(sap.tnt.ToolPage) — 데이터 가져오기(가져오기 · 검증 · 분석 3단계) · 재무상태표 · 손익계산서 · 현금흐름표 · 다차원 분석(6개 탭 + 레이아웃 보드)
저장가져온 집계는 서비스가 json/_sapcube.json 으로 적고, 적재 이력은 SapLoadSet 에 최근 50건
SAP 표준 T-codeFAGLL03 · FAGLB03 · FGI0 · S_ALR_87012277 · KE30
프런트엔드OpenUI5 1.108+ · sap.tnt · sap.ui.table(TreeTable) · sap.m.Wizard · 단일 OData V2 서비스
요약내용
가져오기전기일 구간 파라미터로 CDS 분석 뷰 호출 — 한 달 전표 134,822줄 → 집계 4,555행
저장1,000행씩 끊어 POST → 서비스가 파일로 적고 차변·대변 합계를 직접 세어 돌려줍니다
검증 2종복식부기 차변=대변 · 재무상태표 자산=부채·자본(기말잔액) — 계정 대분류별로도
차원 13종회계기간 · 분기 · 반기 · 계정대분류 · 계정중분류 · 손익그룹 · 계정 · 계정유형 · 거래처 · 전표유형 · 이익센터 · 원가센터 · 사업장
측정값 8종표시금액(증감) · 원장증감 · 그룹통화 증감 · 수량 · 기초잔액 · 차변 · 대변 · 기말잔액
축 상한행 축 3단계 · 열 축 2단계 · 열 조합 36개 · 집계 행 상한 기본 3만
드릴스루셀 → 그 조건으로 SAP 에서 전표 라인만 다시 조회(앞 5,000줄)
재무제표 3종재무상태표(1~12월 누적 잔액 · 자산=부채+자본 매달 점검) · 손익계산서(1~12월 기간 금액) · 현금흐름표(기준월 당월 · 누계, 간접법)
IFRS 18 비교손익계산서 — 영업 · 투자 · 재무 · 법인세 범주와 조정표 · 현금흐름표 — 영업이익 출발, 이자 · 배당 수취 → 투자, 이자 지급 → 재무
계산항목 3종매출총이익 · 영업이익 · 법인세비용차감전순이익 — 손익그룹 합계를 더하고 빼서

도입 포인트 — 이 앱을 사용해야 하는 이유

원장을 다차원으로 보려 할 때 걸리는 것은 축이 아니라 숫자의 출처입니다. 축을 늘리면 조회가 무거워지고, 가볍게 만들면 원장과 맞는지 알 수 없습니다. 이 앱은 그 둘을 떼어 놓았습니다 — SAP 퍼블릭 클라우드의 CDS 분석 뷰에서 집계를 한 번 받아 파일로 적고, 그 자리에서 복식부기와 재무상태표로 검증한 뒤, 검증된 그 파일만으로 13개 축을 돌립니다.

한 줄 요약 — SAP 퍼블릭 총계정원장을 집계로 한 번 가져와 검증해 두고, 그 데이터로 13개 축 · 8개 측정값 피벗을 돌리며, 셀에서 전표 라인까지 내려갑니다.

핵심 포인트 아홉 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 가져오기와 분석을 나눔SAP 에서 한 번 가져와 서버 파일로 적어 두고, 그 뒤의 조회·피벗·축 변경은 모두 그 파일에서 합니다. 축을 바꿀 때마다 운영 시스템을 다시 부르지 않습니다.축을 바꾸거나 화면을 다시 열 때마다 운영 ERP 를 조회해, 사람이 몰리는 시간에 부담이 겹칩니다.
② 집계는 SAP가 한다CDS 분석 뷰라 조회에 적은 차원이 그대로 GROUP BY 가 됩니다. 한 달 전표 134,822줄이 집계 4,555행으로 내려와, 브라우저는 전표를 끌어오지 않고도 모든 축을 돌립니다.전표를 그대로 내려받아 엑셀에서 더하므로, 줄이 늘면 파일이 먼저 한계에 닿습니다.
③ 두 가지 검증을 앱이 직접 한다복식부기(차변 합계 = 대변 합계)와 재무상태표(기말잔액으로 자산 합계 = 부채·자본 합계)를 받은 행에서 다시 세어 판정합니다. 계정 대분류가 자산이 아니면 모두 부채·자본 쪽으로 세어 원장 전체에서 등식이 맞습니다.받아 온 자료가 원장과 맞는지 따로 시산표를 뽑아 사람이 비교해야 합니다.
④ 왼쪽 작업 흐름 메뉴 다섯 개데이터 가져오기 → 재무상태표 → 손익계산서 → 현금흐름표 → 다차원 분석 순서가 카드로 서고, 카드마다 상태와 핵심 숫자(차변=대변, 자산=부채+자본, 영업이익 현행 → IFRS 18, 현금 순증감 일치)가 보입니다. 가져온 데이터가 없으면 데이터 가져오기로, 있으면 다차원 분석으로 열립니다.어떤 조회를 먼저 해야 하는지 담당자마다 달라, 쓰는 법을 따로 알려 줘야 합니다.
⑤ 축 13종 · 측정값 8종 피벗회계기간·분기·반기·계정대분류·계정중분류·손익그룹·계정·계정유형·거래처·전표유형·이익센터·원가센터·사업장을 끌어다 행 3단계·열 2단계에 놓습니다. 보는 각도가 늘어도 리포트는 하나입니다.보는 축마다 리포트를 따로 만들어, 리포트가 늘어나는 만큼 숫자가 어긋나는 자리도 늘어납니다.
⑥ 기초·차변·대변·기말을 한 화면에서표시금액·원장증감·그룹통화·수량에 기초잔액·차변·대변·기말잔액을 더해 여덟 가지를 함께 읽습니다. 기간 앞의 거래는 첫 기간의 기초로 접어 넣어, 잔액이 끊기지 않습니다.증감만 보이는 집계와 잔액만 보이는 조회를 번갈아 열어 머리로 이어 붙여야 합니다.
⑦ 셀에서 전표까지 내려간다숫자를 누르면 그 셀의 조건만으로 SAP 에서 전표 라인을 다시 읽어 보여 줍니다. 집계와 라인이 같은 조건에서 나오므로 금액이 어긋나지 않습니다.금액의 근거를 확인하려고 전표조회 화면으로 옮겨 조건을 손으로 다시 입력합니다.
⑧ 재무제표 세 가지를 같은 데이터로재무상태표는 1~12월 누적 잔액, 손익계산서는 1~12월 기간 금액, 현금흐름표는 기준월 간접법입니다. 손익계정 누계를 자본에 세워 모든 달에서 자산 = 부채 + 자본을 확인하고, 현금 순증감은 현금 계정의 장부 증감과 맞춰 봅니다.시산표를 내려받아 엑셀로 재무제표 양식에 옮기고, 현금흐름표는 정산표를 따로 만들어야 합니다.
⑨ 현행 K-IFRS ↔ IFRS 18 을 나란히손익계산서는 영업 · 투자 · 재무 · 법인세 범주로 다시 나누고 조정표로 두 영업이익의 차이를 줄마다 설명합니다. 현금흐름표는 영업이익에서 출발하고 이자 · 배당 수취를 투자로, 이자 지급을 재무로 옮깁니다. 비교 · 현행 · IFRS 18 세 보기로 바꿔 봅니다.IFRS 18 도입 영향을 보려면 계정을 하나씩 재분류한 엑셀을 따로 만들어야 합니다.

사례로 보는 효과

한 회사 한 달(2025년 10월) 원장으로 재어 본 값입니다. 전표 134,822줄이 집계 4,555행으로 내려오는 데 3.8초, 적재한 4,555행에서 차변 합계와 대변 합계가 같고, 기말잔액으로 센 자산 합계와 부채·자본 합계도 같았습니다. 같은 셀을 눌러 받은 전표 라인의 차변·대변 합계도 그 셀의 집계와 일치했습니다 — 집계와 라인이 같은 조건에서 나오기 때문입니다.

도입하면 달라지는 것

  • 보는 축이 달라져도 리포트를 새로 만들지 않습니다.
  • 모두가 같은 파일을 보므로 누가 열어도 숫자가 같습니다.
  • 축을 바꾸는 조회가 운영 SAP 을 부르지 않습니다.
  • 원장과 맞는지 묻기 전에 화면이 두 가지 검증으로 먼저 답합니다.
  • 금액의 근거를 셀에서 전표까지 한 번에 확인합니다.
  • 재무제표를 엑셀로 옮기지 않고, IFRS 18 영향을 결산 전에 숫자로 봅니다.

이런 회사에 맞습니다

SAP 퍼블릭 클라우드(S/4HANA Cloud)로 총계정원장을 쓰면서, 계정·거래처·이익센터·사업장별로 보는 축이 매달 달라지는 재무·관리회계 담당자와 결산 검증을 맡은 팀장, 그리고 원장과 맞는 숫자 하나로 보고받고 싶은 CFO 에게 맞습니다. IFRS 18(K-IFRS 1118) 도입을 앞두고 손익계산서와 현금흐름표가 어떻게 달라지는지 미리 보려는 결산 담당자에게도 맞습니다.

실제 화면 11종 둘러보기

데이터 가져오기 — 작업 흐름 첫 메뉴
데이터 가져오기 — 작업 흐름 첫 메뉴 — 회사코드 · 회계연도 · 1월~12월을 정하고 SAP 에서 가져옵니다. 왼쪽 작업 흐름 카드 ① 이 “다음 할 일 · 3단계” 로 서 있고, 가져오기 · 검증 · 분석 단계 막대가 지금 단계를 보여 줍니다.
데이터 검증 — 차변 = 대변 · 자산 = 부채 + 자본
데이터 검증 — 차변 = 대변 · 자산 = 부채 + 자본 — 저장된 집계로 복식부기와 재무상태표를 다시 셉니다. 계정 대분류별로도 나눠 보여 주고, 통과하면 카드 ① 이 초록 ✓ 로 바뀌며 행 수와 “차변 = 대변 ✓” 가 남습니다.
재무상태표 — 1~12월 누적 잔액
재무상태표 — 1~12월 누적 잔액 — 기초(전기말)와 달마다의 누적 잔액을 자산 · 부채 · 자본 → 중분류 → 계정 트리로 봅니다. 손익계정 누계는 자본의 “당기순손익” 줄에 세워 모든 달의 차이가 0 이고, 위 점검 줄이 그것을 알려 줍니다.
손익계산서 — 비교(현행 · IFRS 18 · 조정표)
손익계산서 — 비교(현행 · IFRS 18 · 조정표) — 현행 K-IFRS 손익계산서와 IFRS 18 손익계산서를 같은 1~12월 열에 위아래로 놓습니다. 맨 아래 조정표가 두 영업이익의 차이를 줄마다 설명합니다.
손익계산서 — IFRS 18 범주
손익계산서 — IFRS 18 범주 — 잡이익 같은 영업외손익은 기타영업수익으로 영업이익 안에 들어오고, 이자수익은 투자범주, 이자비용은 재무범주로 옮깁니다. “IFRS 18 범주” 열이 줄마다 범주를 표시합니다.
현금흐름표 — 비교

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

현금흐름표 — 비교 — 상세 설명은 데모를 신청하신 고객께 보여 드려요.
현금흐름표 — IFRS 18

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

현금흐름표 — IFRS 18 — 상세 설명은 데모를 신청하신 고객께 보여 드려요.
다차원 분석 — 경영 요약

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

다차원 분석 — 경영 요약 — 상세 설명은 데모를 신청하신 고객께 보여 드려요.
레이아웃 보드와 다차원 리포트

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

레이아웃 보드와 다차원 리포트 — 상세 설명은 데모를 신청하신 고객께 보여 드려요.
셀에서 전표 라인으로 — 드릴스루

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

셀에서 전표 라인으로 — 드릴스루 — 상세 설명은 데모를 신청하신 고객께 보여 드려요.
메뉴 접기

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

메뉴 접기 — 상세 설명은 데모를 신청하신 고객께 보여 드려요.

사용 방법 — 가져오고, 검증하고, 재무제표와 다차원으로 봅니다

왼쪽 작업 흐름 메뉴를 위에서부터 따라가면 됩니다. 가져온 데이터가 없으면 앱이 데이터 가져오기로, 있으면 다차원 분석으로 열립니다.

  1. 데이터 가져오기 — 회사코드 · 회계연도 · 기간 From/To(기본 1월~12월)를 정하고 SAP 에서 가져오기를 누릅니다. 조회조건의 차원 조건(계정 · 이익센터 등)은 $filter 로 함께 내려보내므로, 조건을 걸면 받는 양도 줄어듭니다.
  2. 데이터 검증 — 같은 화면의 2단계로 이어집니다. 저장된 집계로 차변 · 대변과 자산 · 부채자본을 다시 셉니다. 통과하면 초록, 어긋나면 빨강이고 카드 ① 에도 결과가 남습니다.
  3. 재무상태표 — 1~12월 누적 잔액. 단위(원 · 천원 · 백만원) · 모두 펼치기/접기 · CSV 를 씁니다.
  4. 손익계산서 — 위 버튼으로 비교 · 현행 K-IFRS · IFRS 18 을 고릅니다. CSV 는 보고 있는 보기 그대로 내려받습니다.
  5. 현금흐름표 — 기준월을 고르고 같은 세 보기로 당월 · 누계를 봅니다.
  6. 다차원 분석 — 축을 끌어다 놓고, 셀을 눌러 전표까지 내려갑니다.

재무제표 세 화면과 다차원 분석은 모두 가져와 둔 같은 파일을 읽습니다 — 몰래 다시 받아 오지 않습니다. 새로 받을 때만 데이터 가져오기로 돌아갑니다. 1월부터 가져오지 않으면 그 앞 달은 기초(전기말) 한 칸에 접혀 있다고 화면이 알려 줍니다.

재무제표 세 가지와 IFRS 18 비교

재무제표 세 화면은 가져온 집계(SapCubeSet)만 읽어 화면에서 계산합니다. 계산은 화면과 떨어진 순수 함수(model/fs.js)라 node 에서도 같은 숫자를 다시 셀 수 있습니다.

재무제표계산점검
재무상태표m월 잔액 = 기초(구간 앞 행) + 1~m월 증감. 자산 · 부채 · 자본 → 중분류 → 계정 트리, 부채 · 자본은 부호를 뒤집어 양수로손익계정 누계를 자본의 “당기순손익” 줄에 세워 매달 자산 = 부채 + 자본
손익계산서m월 금액 = 그 달 증감. 수익은 대변, 비용은 차변을 + 로. 매출총이익 · 영업이익 · 세전이익 · 당기순이익은 계산 줄IFRS 18 과 세전이익 · 당기순이익 차이 0
현금흐름표간접법 — 기준월 당월과 가져온 첫 달부터 기준월까지 누계현금 순증감 = 현금및현금성자산 장부 증감

손익계산서 — 현행에서 IFRS 18 로

IFRS 18 줄규칙
매출액 · 매출원가 · 매출총이익 · 판관비현행과 같음(영업범주)
기타영업수익 · 기타영업비용영업외수익 · 비용 중 이자 · 배당 · 법인세가 아닌 계정 → 영업범주(IFRS 18 의 영업범주는 잔여 범주입니다)
영업이익(IFRS 18)매출총이익 − 판관비 + 기타영업수익 − 기타영업비용
투자범주 손익이자수익 · 배당금수익 → 소계 “재무 및 법인세비용 차감 전 이익”
재무범주 비용이자비용 → 법인세비용차감전순이익(현행과 같음)
법인세비용 → 당기순이익현행과 같음 — 법인세 계정은 어느 대분류에 있든 법인세비용으로 모읍니다

비교 보기의 조정표는 영업이익(현행) + 기타영업수익 − 기타영업비용 = 영업이익(IFRS 18) 을 달마다 세우고, 투자 · 재무범주로 옮긴 금액과 세전이익 · 당기순이익 차이(0)를 함께 적습니다.

현금흐름표 — 같은 원장 변동을 두 기준으로

항목현행 K-IFRS 1007IFRS 18
간접법 출발점당기순이익영업이익(IFRS 18)
이자 · 배당금 수취영업활동투자활동
이자 지급영업활동재무활동
법인세 납부영업활동영업활동
현금 순증감같음 — 활동 구분만 달라집니다

계정은 이름으로 가릅니다. 현금(현금 · 보통예금 · 당좌예금 · 외화예금, 장기 · 정기 · 금융상품 제외), 투자(유형 · 무형자산 · 투자 · 대여금 · 보증금 · 장기 금융상품 등), 재무(차입금 · 사채 · 리스부채와 자본 계정), 그 밖의 재무상태표 계정은 영업(운전자본)입니다. 감가상각누계액의 변동은 감가상각비 조정으로 영업활동에 더합니다. 비교 보기 위쪽 카드가 활동별로 두 기준의 차이를 요약합니다.

SAP 퍼블릭 연계 — 어디를 어떻게 부르나

숫자는 SAP 퍼블릭 클라우드의 총계정원장에서 옵니다. 부르는 주소는 하나입니다.

GET /backend/DEV100/sap/opu/odata/sap/Z002_FI_101_O2_JE
    /Z002_FI_101_I_JE_CAL(p_bukrs='1000',
        p_budat_from=datetime'2025-10-01T00:00:00',
        p_budat_to=datetime'2025-10-31T00:00:00')/Results
    ?$format=json&$select=<차원들>,<측정값들>&$top=5000&$skip=0

같은 사이트의 SAP 프록시(/backend/<시스템>)를 거칩니다. 인증은 프록시가 맡으므로 이 화면은 키를 들고 있지 않습니다. 세션이 풀리면 프록시가 로그인 화면을 돌려주는데, 그때는 받은 HTML 을 데이터인 척 쓰지 않고 다시 로그인하라고 알립니다. 주소·회사코드·기본 기간·상한은 manifest.json 의 zui5.multidim.sap 한 곳에만 적혀 있어, 운영 전환은 그 값만 바꿉니다.

파라미터 두 개가 원장의 모양을 만든다

CDS 가 전기일 구간을 받아 라인마다 구간 앞은 기초(dmbtr_begin), 구간 안은 차변·대변(dmbtr_s·dmbtr_h), 둘을 더한 기말(dmbtr_ending)을 계산해 줍니다. 그래서 이 화면은 기초를 따로 구하지 않습니다 — 받은 줄을 더하면 그대로 나옵니다. 구간 앞의 줄은 조회 범위의 첫 달에 기초로 접어 세웁니다. 자기 달에 세우면 조회하지 않은 달이 표에 생기고, 그 달의 기초는 또 그 앞에 있어 끝이 없기 때문입니다.

집계는 SAP가 한다

이 CDS 는 분석용이라 메타데이터의 모든 항목이 차원(sap:aggregation-role="dimension") 아니면 측정값으로 나뉘어 있습니다. 그래서 $select 에 적은 차원이 곧 GROUP BY 입니다.

$select 에 적은 차원돌아오는 행
hkont (계정)388행
hkgrp1 (계정 대분류)13행
계정 · 이익센터 · 원가센터1,726행
이 리포트가 쓰는 차원 전부 + 이름4,555행
(같은 한 달의 전표 라인)134,822줄

전표 13만 줄을 브라우저로 끌어와 세는 것과, 서버에 묶어 달라고 하는 것은 같은 숫자를 얻는 두 방법이지만 받는 양이 서른 배 다릅니다. 그래서 리포트는 집계로, 전표는 셀을 눌렀을 때만 부릅니다. 전표 조회에는 belnr·buzei 를 함께 골라 더 묶이지 않게 합니다.

받는 양에는 상한을 둡니다(기본 10만 행 — 1월~12월을 한 번에 받기 때문입니다). 상한에서 멈추면 표 위에 일부만 받았다고 적습니다 — 일부를 전체인 척 보여 주지 않기 위해서입니다. 끝났는지는 받은 줄 수가 아니라 $inlinecount 로 판정합니다. 게이트웨이가 응답 크기 때문에 한 번에 덜 주는 경우가 있고, 그때 멈추면 조용히 일부만 집계하게 됩니다.

가져온 것은 파일로 — 조회가 SAP 을 부르지 않는 이유

가져오기는 받은 집계를 1,000행씩 끊어 이 앱의 서비스로 보냅니다. POST /SapLoadSet 을 begin → chunk×N → end 로 세 번에 나눠 부르는 구조입니다.

  • begin — 조회 범위와 열 이름을 넘기고 적재 번호를 받습니다.
  • chunk — 값 배열만 보냅니다. 열 이름을 줄마다 되풀이하지 않으므로 보내는 양도, 적히는 파일도 3분의 1입니다.
  • end — 서비스가 파일로 적고 받은 행에서 직접 차변·대변 합계를 세어 돌려줍니다. 화면이 보내 준 합계를 믿지 않습니다.

적재 중인 묶음은 메모리가 아니라 줄 단위 임시 파일에 쌓습니다. 라우터가 서비스 모듈을 다시 읽어도 받아 둔 것이 사라지지 않게 하기 위해서입니다. 저장 파일 이름에 밑줄을 붙인 데에도 까닭이 있습니다 — OData 라우터는 json 폴더에 엔티티셋과 같은 이름의 파일이 있으면 그 파일을 그대로 내려보냅니다. SapCubeSet.json 으로 두면 서비스가 아니라 그 파일이 나가고, 그 파일은 열 이름 + 값 배열 꼴이라 화면이 읽지 못해 조회가 "200 OK" 인데 실패합니다.

조회는 그 파일만 읽습니다. SAP 이 내려가 있어도, 프록시 세션이 풀려 있어도 리포트는 열리고, 여러 사람이 같은 숫자를 봅니다. 전표 라인은 파일에 없습니다(집계만 적어 둡니다) — 셀을 누르거나 전표 라인 탭에서 표시 행 수를 고르면 그때 SAP 에서 그 조건으로 읽습니다.

데이터 검증 — 복식부기와 재무상태표

받아 온 것이 온전한지는 두 가지로 봅니다.

검증등식어긋나면
복식부기차변 합계 = 대변 합계받은 범위가 잘렸습니다
재무상태표자산 합계 = 부채·자본 합계 (기말잔액)빠진 계정이 있습니다

편은 계정 대분류로 가릅니다 — 자산이면 자산 쪽, 그 밖은 모두 부채·자본 쪽입니다(부채·자본은 물론 매출·매출원가·판매비·영업외·가계정까지). 손익 계정의 기말이 곧 당기순이익이고 그것은 자본에 쌓이므로, 이렇게 갈라야 원장 전체에서 등식이 정확히 맞습니다. 부채·자본은 원장에 음수로 들어 있어 읽는 사람이 더하기로 읽도록 부호를 뒤집어 보여 줍니다.

검증은 계정 대분류별로도 나눠 보여 줍니다. 전체 합이 맞아도 한 분류만 어긋나면 그 범위에서 잘렸을 가능성이 크기 때문입니다. 같은 검증이 분석 화면의 조회조건 안에도 그대로 서고, 두 곳이 같은 함수로 같은 큐브에서 세기 때문에 숫자가 어긋날 자리가 없습니다.

피벗이 만들어지는 다섯 단계

피벗은 다섯 단계로 만들어집니다.

  1. 행 묶기 — 행 축 차원 조합으로 큐브 행을 묶어 트리를 만듭니다(최대 3단계).
  2. 열 세우기 — 열 축 조합을 세웁니다(최대 2단계·36조합). 비우면 합계열만 섭니다.
  3. 칸 채우기 — 고른 측정값을 그 교차점에서 더합니다.
  4. 계산항목 붙이기 — 매출총이익·영업이익·세전이익은 어떤 계정에도 전기되지 않는 단계라, 손익그룹 합계를 더하고 빼서 행(또는 열)으로 붙입니다.
  5. 합계와 구성비 — 합계열과 구성비를 세우고, 같은 값을 차트로 그립니다.

축을 바꾸는 일은 서비스를 다시 부르는 일이 아닙니다. 한 번 읽어 둔 큐브를 화면에서 다시 묶을 뿐이라, 드래그 한 번에 표가 다시 섭니다. 분기·반기는 전표에 없는 파생 차원이라 회계기간에서 만들어 붙이고, 셀에서 전표로 내려갈 때는 그 차원을 회계기간 범위로 바꿔 겁니다.

차원 13종과 측정값 8종

데모를 신청하신 고객께 공개되는 내용입니다

CDS 뷰 구성, 데이터 모델, 점검 · 산출 규칙처럼 실제 구현에 가까운 상세 설계는 이 앱의 데모를 신청하신 고객께만 보여 드리고 있습니다. 양해 부탁드립니다.

데모를 신청해 주시면 확인 후 바로 열람할 수 있도록 열어 드리고, 이미 신청하셨다면 신청하신 Google 계정으로 로그인하시면 이 자리에 내용이 표시됩니다.

셀에서 전표로 — 드릴스루

셀을 누르면 그 행의 차원 경로와 그 열의 조합으로 $filter 를 만들어 SAP 에 전표 라인을 다시 조회합니다. 손익그룹처럼 SAP 에 없는 항목은 그 그룹에 드는 계정 대분류 값으로 펼쳐 겁니다.

hkgrp1 eq '04_매출' and prctr eq '1100'
  and (yearperiod ge '2025010' and yearperiod le '2025010')

회계기간이 조회 첫 달이면 아래끝을 걸지 않습니다 — 그 셀에는 기초가 들어 있고, 아래끝을 걸면 기초가 빠져 셀 금액과 전표 합이 어긋나기 때문입니다. 앞 5,000줄만 가져오며, 끊었을 때는 가져온 줄의 합이 아니라 셀 금액을 적습니다. 앞 몇 줄의 합은 셀과 다르기 때문입니다.

브라우저 확장 없이 검증하기

이 앱에는 작은 개발 서버와 자동 점검이 함께 들어 있습니다. 브라우저 확장이나 사람의 손 없이도 화면을 끝까지 눌러 볼 수 있습니다.

node test/devserver.js 8099   # 앱 + OData(service.js) + SAP 분석뷰 흉내
node test/devcheck.js          # 가져오기 → 검증 → 조회 → 드릴스루까지 자동으로

devserver.js 는 앱 폴더를 서빙하고 /odata/multidim_srv/* 를 이 앱의 service.js 로 넘기며, /backend/<시스템>/* 는 SAP 분석 뷰를 흉내 냅니다 — $select 에 적힌 차원으로 묶어 돌려주므로 집계가 서버에서 일어나는 것까지 같습니다. 라우터가 "엔티티셋 이름의 json 파일이 있으면 그 파일이 이긴다" 는 규칙도 그대로 흉내 냅니다. devcheck.js 는 그 화면을 열어 가져오기·검증·조회·측정값 전환·전표 드릴스루를 눌러 보고, 콘솔 오류나 4xx 응답, 화면에 뜬 오류 창이 하나라도 있으면 실패로 끝납니다.

이 점검이 실제로 버그를 잡았습니다. 저장 파일 이름을 엔티티셋 이름과 같게 두었더니 조회가 "200 OK 인데 실패" 로 끝났는데, 로컬에서 그 규칙을 흉내 내자 같은 증상이 재현됐고 고친 뒤 다시 통과했습니다.

좁은 화면과 휴대폰

휴대폰에서는 레이아웃 보드를 접어서 열고, 금액 단위를 백만원으로 시작합니다. 원 단위 열은 한 화면에 두 개도 들어가지 않기 때문입니다. 창 크기는 레이아웃이 아니라 그 기기의 사정이라 저장하지 않고 열 때마다 정합니다. 조회조건을 접으면 검증 표시도 함께 접히고, 접힌 머리줄에 1000 · 2025 · 0L · 10월~10월 · 적재 4,555행 · 검증 일치 처럼 한 줄이 남습니다 — 접어 둔 채로도 무엇을 보고 있는지 알 수 있어야 하기 때문입니다.

검증 결과

로컬 개발 서버 + 컨테이너 Chromium 으로 매 배포마다 다음을 확인합니다.

점검결과
왼쪽 메뉴작업 흐름 카드 5개 · 데이터 없으면 데이터 가져오기로 시작 · 가져오기 후 검증 단계로 이동 · 카드 눌러 화면 이동
가져오기집계 적재 · 차변 합계 = 대변 합계 · 차이 0
재무상태표자산 합계 = 부채·자본 합계 · 차이 0 · 대분류별 구분 표시
재무제표재무상태표 1~12월 매달 자산 = 부채 + 자본 · 손익계산서 현행 · IFRS 18 · 비교 세 보기 · 세전이익 차이 0 · 현금흐름표 순증감 = 현금 장부 증감
조회파일에서 큐브 생성 · 피벗 렌더 · 측정값 전환(기말잔액)
드릴스루셀 조건으로 전표 라인 조회 · 셀 금액과 합계 일치
접기조회조건과 검증 표시가 함께 접히고 머리줄에 요약
오류콘솔 오류 0 · 4xx 응답 0 · 오류 창 0

실데이터로도 확인했습니다 — 2025년 10월 한 달, 집계 4,555행, 차변 합계와 대변 합계가 40,188,855,181원으로 같았고, 드릴스루한 셀(자산 10월)은 전표 35,282줄과 셀 금액 45,677,205원이 맞물렸습니다.

자주 묻는 질문

전표 13만 줄을 다 받아 오나요?

아닙니다. 이 CDS 는 분석용이라 $select 에 적은 차원이 곧 GROUP BY 입니다. 리포트가 쓰는 차원 전부로 묶으면 한 달이 4,555행으로 내려옵니다. 전표 라인은 셀을 눌렀을 때 그 조건으로만 받습니다.

조회할 때마다 SAP 을 부릅니까?

부르지 않습니다. 가져오기가 받은 집계를 서비스가 파일로 적고, 조회는 그 파일만 읽습니다. 그래서 SAP 이 내려가 있어도 리포트는 열리고, 여러 사람이 같은 숫자를 봅니다. 새로 받으려면 왼쪽 메뉴의 데이터 가져오기에서 다시 가져옵니다.

검증은 왜 두 가지입니까?

복식부기(차변=대변)는 받아 온 범위가 잘렸는지를, 재무상태표(자산=부채·자본)는 빠진 계정이 있는지를 잡습니다. 차변과 대변이 같아도 특정 대분류가 빠지면 재무상태표가 어긋납니다. 그래서 둘을 함께 보고, 계정 대분류별로도 나눠 보여 줍니다.

대분류가 자산·부채·자본이 아닌 계정은 어느 쪽으로 셉니까?

모두 부채·자본 쪽입니다. 매출·매출원가·판매비·영업외·가계정이 여기 듭니다. 손익 계정의 기말이 곧 당기순이익이고 그것은 자본에 쌓이므로, 이렇게 갈라야 원장 전체에서 자산 = 부채 + 자본 이 정확히 맞습니다.

기초잔액은 어떻게 나옵니까?

CDS 가 전기일 구간을 받아 라인마다 계산해 줍니다. 구간 앞의 줄은 기초에, 구간 안의 줄은 차변·대변에 들어가고 둘을 더한 것이 기말입니다. 화면은 구간 앞의 줄을 조회 범위의 첫 달에 기초로 접어 세웁니다. 월별 열로 펼치면 그 달 몫만 보이므로 잔액은 합계 열에서 읽습니다.

예산 대비 차이는 왜 없습니까?

이 서비스에는 계획(ACDOCP) 자료가 없습니다. 계획을 0 으로 두고 비교하면 실적 전액이 차이로 보여 보고가 틀립니다. 그래서 예산이 없는 범위에서는 계획 대비를 비워 두고, 차이 요인분해도 쓰지 않습니다.

축을 바꾸면 서비스를 다시 부릅니까?

아닙니다. 한 번 읽어 둔 큐브를 화면에서 다시 묶습니다. 그래서 드래그 한 번에 표가 다시 섭니다. 다시 부르는 때는 조회를 누를 때와 셀에서 전표로 내려갈 때뿐입니다.

셀 금액과 전표 합계가 다르면?

드릴스루는 앞 5,000줄만 가져옵니다. 끊었을 때는 가져온 줄의 합이 아니라 셀 금액을 적고, 끊었다는 사실을 함께 띄웁니다. 다 가져온 경우에는 가져온 줄을 더해 적으므로 셀과 같은지 눈으로 확인할 수 있습니다.

운영 시스템으로 바꾸려면 어디를 고칩니까?

manifest.json 의 zui5.multidim.sap 한 곳입니다. 프록시 주소와 시스템 이름만 바꾸면 됩니다. 인증은 프록시가 맡으므로 화면 코드에는 키가 없습니다.

사람이 없는 시간에도 돌릴 수 있습니까?

가져오기는 브라우저 세션으로 프록시를 지나므로 사람이 화면을 열어야 합니다. 다만 받아 둔 파일은 서버에 남아 있어, 그 뒤의 조회와 분석은 누가 열든 같은 숫자를 봅니다.

재무제표는 어디서 숫자를 가져옵니까?

다차원 분석과 같은 파일입니다. 데이터 가져오기가 저장한 집계를 읽어 화면에서 계산하므로 SAP 을 다시 부르지 않고, 세 재무제표와 다차원 분석의 숫자가 서로 어긋나지 않습니다.

재무상태표가 1월부터 보이지 않습니다.

가져온 범위가 1월부터가 아니면 그 앞 달은 기초(전기말) 한 칸에 접혀 있습니다. 화면 위에 그 사실을 적어 두며, 데이터 가져오기에서 1월~12월로 받으면 달마다 보입니다.

IFRS 18 범주는 어떻게 정합니까?

매출 · 매출원가 · 판관비는 영업범주 그대로이고, 영업외손익은 계정 이름으로 가립니다. 이자수익 · 배당금수익은 투자범주, 이자비용은 재무범주, 법인세는 법인세비용이며, 그 밖의 영업외손익(잡이익 · 외환차손익 등)은 기타영업수익 · 비용으로 영업범주에 들어갑니다.

현금흐름표의 현금 · 투자 · 재무는 어떻게 가릅니까?

계정 대분류만으로는 나눌 수 없어 계정 이름으로 가립니다. 현금 · 예금은 현금, 유형 · 무형자산 · 투자 · 대여금 · 보증금은 투자, 차입금 · 사채 · 리스부채와 자본은 재무, 그 밖은 영업(운전자본)입니다. 회사 계정 체계에 맞춰 규칙을 조정할 수 있습니다.

현행과 IFRS 18 의 당기순이익이 다를 수 있습니까?

다르지 않습니다. 범주만 바뀌고 금액은 그대로이므로 세전이익 · 당기순이익 차이는 0 이어야 하고, 비교 보기의 조정표 마지막 줄이 그것을 달마다 보여 줍니다. 현금흐름표도 순증감은 두 기준이 같습니다.

#SAP 퍼블릭 ERP #SAP S/4HANA Cloud #총계정원장 #다차원 원장분석 #CDS 분석 뷰 #Multi-dimensional Report #큐브 #드릴스루 #복식부기 검증 #재무상태표 검증 #기초잔액 #기말잔액 #OpenUI5 #재무회계 #재무상태표 #손익계산서 #현금흐름표 #IFRS 18

원장을 보는 축이 매번 달라진다면, 리포트를 늘리기보다 축을 바꾸게 만드는 편이 낫습니다

계정별·사업부별·거래처별로 리포트를 따로 만들면 숫자가 어긋나는 지점이 함께 늘어납니다. 퍼블릭의 CDS 분석 뷰 위에 큐브를 한 번 올려 두면 축은 보는 사람이 바꾸고, 셀에서 전표까지 한 번에 내려갑니다. 현재 SAP 환경에서 어떻게 적용되는지 함께 확인해 드립니다.

도입 문의