SAP 일개표 — 하루가 끝났을 때 무엇이 움직였나
계정을 일계표 그룹으로 묶어 전일이월에서 금일 증감을 거쳐 금일잔액에 이르는 하루치 흐름을 한 장으로 보는 화면입니다.
월말 재무제표는 한 달이 끝나야 나옵니다. 그런데 자금 담당자는 오늘 하루 무엇이 움직였는지를 그날 알아야 합니다. 계정 잔액을 전부 늘어놓으면 숫자가 잘게 흩어지고, 재무제표는 하루 단위로 보기에 무겁습니다.
그래서 계정을 일계표 그룹으로 묶고 각 그룹이 전일이월 → 금일증가 → 금일감소 → 금일잔액으로 어떻게 변했는지를 한 줄씩 세웁니다. 그룹만 보면 큰 흐름이, 하위레벨을 펼치면 어느 계정이 움직였는지가 드러납니다. 표준 총계정원장 데이터를 그대로 이어받아 이 관점을 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 4종을 함께 공개합니다.
SAP 표준 데이터를 그대로 이어받은 부분
- 이월 집계 — 총계정원장 월별 누계(
FAGLFLEXT)의HSLVT·HSL01~12를 그대로 사용 - 당일 증감 — 전표 라인(
BSEG)과 헤더(BKPF)에서 취소전표(XREVERSAL)를 제외하고 집계 - 그룹 체계 — 일계표 구분코드(
ZTFIF0080) · 세부계정(ZTFIF0090) 표준 구조 유지 - 마스터 텍스트 — 계정(
SKAT) · 기능영역(TFKBT)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI-GL) · 일일 자금·손익 보고 |
| Namespace | zui5.dailysheet |
| 셸 구조 | 조회조건 영역(우측 조회) + 일개표 단일 테이블(그룹 · 계정 · 총계) |
| 화면 수 | 조회 화면 1개 |
| 데이터 | 일계표 그룹 8종 · 계정 19개 |
| 성격 | 조회형(Read-Only) — 전기와 집계는 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 4종 둘러보기
회사코드와 일자만 넣고 조회하면 그룹과 계정이 함께 나옵니다 → 하위레벨을 접어 그룹 흐름만 보고 → 증감 없는 계정을 숨겨 오늘 움직인 계정만 남깁니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 일자를 넣습니다. 둘 다 필수이며 비어 있으면 조회를 중단하고 안내합니다.
- 기본은 하위레벨 보임 상태라 그룹 아래에 계정이 들여쓰기로 붙습니다. 체크를 풀면 그룹 줄만 남아 큰 흐름이 먼저 보입니다.
- 증감 없는 계정 숨김으로 오늘 움직임이 없는 계정을 걷어냅니다. 하루 동안 무엇이 바뀌었는지만 보고 싶을 때 씁니다.
- 조회조건 입력필드에서 Enter 를 눌러도 바로 조회됩니다. 날짜를 하루씩 바꿔 가며 볼 때 편합니다.
- 맨 아래 총계 줄에서 전일이월 · 금일증가 · 금일감소 · 금일잔액의 전체 합을 확인합니다.
- 결과는 CSV 다운로드로 내려받습니다. 그룹·계정·총계 구분이 한 컬럼으로 들어가 엑셀에서 다시 묶기 쉽습니다.
금일잔액 산출 규칙
세 값이 정해지면 네 번째가 따라옵니다. 일개표의 모든 줄은 이 식 하나로 검증됩니다.
금일잔액 = 전일이월 + 금일증가 − 금일감소
전일이월 = 회계연도 초 이월(HSLVT)
+ 전월까지 월별 누계(HSL01 ~ 전월) ← FAGLFLEXT
+ 당월 1일 ~ 전일 전표 순액 ← BSEG ⋈ BKPF
금일증가 = 조회일자 전표 중 그룹 차/대 구분과 같은 방향
금일감소 = 조회일자 전표 중 반대 방향
* 취소전표(XREVERSAL)는 어느 쪽에서도 제외
| 항목 | 산식 · 규칙 |
|---|---|
전일이월 Carry | 회계연도 초 이월 + 전월까지 월별 누계 + 당월 1일~전일 전표 순액 |
금일증가 Up | 조회일자 전표 중 그룹 차/대 구분과 같은 방향의 금액 |
금일감소 Down | 조회일자 전표 중 반대 방향의 금액 |
금일잔액 Balance | 전일이월 + 금일증가 − 금일감소 |
| 순증감 | 금일증가 − 금일감소. 잔액이 이월보다 늘었는지 줄었는지를 색으로 표시 |
| 그룹 집계 | 소속 계정의 네 값을 각각 합산. 그룹 잔액도 같은 식이 성립 |
전일이월을 두 소스에서 만드는 이유
회계연도 초부터 전월 말까지는 이미 월별로 집계된 누계를 쓰는 것이 빠릅니다. 그런데 당월 1일부터 전일까지는 아직 월 집계가 닫히지 않았으므로 전표 라인에서 직접 더해야 합니다. 두 구간을 합쳐야 "어제까지의 잔액"이 나옵니다.
일계표 그룹 8종
그룹은 회사가 하루 단위로 무엇을 보고 싶은지에 따라 정합니다. 자산·부채 흐름과 손익 흐름을 함께 세워 자금과 실적을 한 장에서 읽도록 구성했습니다.
| 그룹 | 명칭 | 차/대 | 포함 계정 |
|---|---|---|---|
| D100 | 현금·예금 | 차변 | 보통예금-국민 · 보통예금-신한 · 현금 |
| D200 | 매출채권 | 차변 | 외상매출금-국내 · 외상매출금-수출 · 받을어음 |
| D300 | 재고자산 | 차변 | 원재료 · 제품 |
| D400 | 매입채무 | 대변 | 외상매입금 · 미지급금 |
| D500 | 차입금 | 대변 | 단기차입금 · 장기차입금 |
| D600 | 매출 | 대변 | 제품매출 · 상품매출 |
| D700 | 매입·제조원가 | 차변 | 원재료비 · 외주가공비 |
| D800 | 판매관리비 | 차변 | 복리후생비 · 지급수수료 · 보험료 |
그룹의 차/대 구분은 그 묶음이 증가할 때 어느 쪽으로 기표되는지를 뜻합니다. 자산·비용 그룹은 차변, 부채·수익 그룹은 대변입니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
일자 Budat | 필수 | 조회일자. 이 날이 금일, 전날까지가 이월 구간 |
| 하위레벨 보임 | 선택 | 그룹 아래 계정 표시 여부 |
| 증감 없는 계정 숨김 | 선택 | 오늘 전표가 없는 계정 제외 |
일자는 하루 기준입니다. 이 날짜가 금일이 되고, 그 전날까지가 전일이월 구간이 됩니다.
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 일개표 그룹 / 계정과목 | 키 컬럼. 그룹은 코드+명칭, 계정은 들여쓰기 |
그룹코드 DailyCode | 그룹 줄에만 표시 |
계정과목 코드 · 명 Hkont | 계정 줄에만 표시 |
차/대 구분 Shkzg | 차변 / 대변 — 그룹 정의에서 상속 |
직접/간접 Direct | 계정 성격 구분 |
기능영역 Fkber | 생산 · 영업 · 관리 |
전일이월 Carry | 어제까지의 잔액, 우측정렬 |
| 금일증가 · 금일감소 | 조회일자 당일 차·대변 금액 |
| 순증감 | 증가 − 감소. 방향을 색으로 표시 |
금일잔액 Balance | 전일이월 + 증가 − 감소 |
그룹 줄과 계정 줄, 총계 줄이 같은 표에 섞여 나오므로 행 강조로 구분합니다. 계정 줄은 계정과목을 들여쓰기해 그룹 아래에 붙은 것이 보이게 했습니다.
SAP 표준 기능 매핑
전표 전기와 총계정원장 집계는 표준이 담당합니다. 이 화면은 그 데이터를 회사가 정한 그룹으로 다시 묶어 하루 단위로 세우는 확장입니다.
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FAGLB03 관점 | G/L 계정 잔액 조회 | 월 단위 잔액 대신 하루 단위로 이월·증감·잔액을 나눠 표시 |
FBL3N 관점 | 개별항목 조회 | 라인 나열 대신 일계표 그룹으로 묶어 흐름 중심으로 재구성 |
FAGLFLEXT | 총계정원장 월별 누계 | 전일이월의 전월까지 구간을 제공 |
BSEG ⋈ BKPF | 전표 라인과 헤더 | 당월 1일~전일 구간과 금일 증감을 제공 |
F.01 관점 | 재무제표 | 하루 단위로 보기 무거운 재무제표를 그룹 8종으로 압축 |
운영 데이터 소스 매핑
| 항목 | SAP 원천 | 비고 · 산식 |
|---|---|---|
| 일계표 그룹 | ZTFIF0080 | 그룹코드 · 그룹명 · 차대구분 |
| 세부계정 | ZTFIF0090 | 그룹 ↔ 계정 매핑 · 직접/간접 |
| 계정 명칭 | SKAT | 계정과목 텍스트 |
| 전일이월(전월까지) | FAGLFLEXT | HSLVT + HSL01~전월 합산 |
| 전일이월(당월분) · 금일증감 | BSEG ⋈ BKPF | XREVERSAL 공란 조건 |
| 기능영역 | FKBER · TFKBT | 코드와 명칭 |
도입 시 확인이 필요한 부분
일계표 그룹과 세부계정 구성은 회사마다 다릅니다. 어떤 계정을 어느 그룹에 넣을지, 직접·간접을 어떻게 나눌지가 보고서의 성격을 결정하므로 재무팀과 그룹 정의를 먼저 확정해야 합니다. S/4HANA 환경이면 FAGLFLEXT 대신 ACDOCA 기반 표준 CDS 로 이월을 집계하는 편이 성능상 유리합니다.
참고 CDS 뷰
운영 서비스로 연결할 때는 일계표 그룹 매핑을 조인해 계정 단위로 이월·증감을 나누어 집계하는 뷰를 제안합니다.
@AbapCatalog.sqlViewName: 'ZCDAILYSHEET'
@EndUserText.label: '일개표 (Z)'
define view Z_C_DAILY_SHEET
as select from acdoca as Line
inner join ztfif0090 as Map on Line.rbukrs = Map.bukrs
and Line.racct = Map.hkont
left outer join ztfif0080 as Grp on Map.bukrs = Grp.bukrs
and Map.daily_code = Grp.daily_code
left outer join skat as AcctText on Line.racct = AcctText.saknr
and AcctText.spras = 'K'
{
key Line.rbukrs as Bukrs,
key Grp.daily_code as DailyCode,
key Line.racct as Hkont,
Grp.daily_code_nm as DailyCodeNm,
AcctText.txt50 as HkontNm,
Map.shkzg as Shkzg,
Line.rfarea as Fkber,
// 전일이월 : 조회일자 이전 전표의 순액
sum( case when Line.budat < $parameters.p_date then Line.hsl else 0 end ) as Carry,
// 금일증가 / 금일감소 : 조회일자 당일 차·대변
sum( case when Line.budat = $parameters.p_date and Line.drcrk = 'S'
then Line.hsl else 0 end ) as DailyUp,
sum( case when Line.budat = $parameters.p_date and Line.drcrk = 'H'
then Line.hsl else 0 end ) as DailyDown
}
group by Line.rbukrs, Grp.daily_code, Line.racct,
Grp.daily_code_nm, AcctText.txt50, Map.shkzg, Line.rfarea
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 릴리즈와 일계표 그룹 정의에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 일개표 테이블 |
| 조회조건 | sap.m.Input · sap.m.DatePicker · sap.m.CheckBox — 우측 끝에 조회 |
| 결과 테이블 | sap.ui.table.Table — 그룹·계정·총계를 한 목록에, 첫 컬럼 고정 |
| 단계 구분 | RowSettings.highlight + 라벨 들여쓰기 포맷터 |
| 차대·순증감 | sap.m.ObjectStatus — 방향을 색으로 표시 |
| 요약 표시 | sap.m.MessageStrip · sap.m.ObjectStatus |
| CSV | Blob + UTF-8 BOM — 구분 컬럼 포함 |
트리 대신 평면 목록에 구분을 둔 이유
그룹과 계정은 2단이라 트리 컨트롤을 쓸 만큼 깊지 않습니다. 대신 그룹·계정·총계를 한 목록에 순서대로 세우고 행 강조와 들여쓰기로 단계를 표시하면, 스크롤 한 번으로 전체를 훑을 수 있고 CSV 로 내려받을 때도 구조가 그대로 남습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.dailysheet) · ko 로케일 · sap_horizon |
Component.js | 선택조건 모델 · 결과 모델 초기화 |
view/Main.view.xml | 조회화면 + 일개표 테이블 |
controller/Main.controller.js | 조회 · 하위레벨 전환 · 합계 · CSV |
model/ModelMock.js | localdata JSON 읽기 — 그룹 집계와 트리 구성 |
model/formatter.js | 금액 · 일자 · 라벨 · 차대 · 순증감 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/dailysheet.json | 일계표 그룹·계정 시뮬레이션 데이터 |
일계표 그룹 구성이 바뀌어도 데이터와 ModelMock 두 곳만 손보면 화면 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 데이터는 일계표 그룹 8종에 계정 19개를 배치하고 하루치 증감을 생성한 것입니다.
| 데이터 | 규모 | 구성 |
|---|---|---|
| 일계표 그룹 | 8행 | 자산·부채 흐름 5종 + 손익 흐름 3종 |
| 세부계정 | 19행 | 그룹당 2~3개, 직접/간접 구분 포함 |
| 전일이월 합계 | 8,989,000,000원 | 금일증가 208,000,000 · 금일감소 251,000,000 · 금일잔액 8,946,000,000 |
| 검증 항목 | 결과 |
|---|---|
| 금일잔액 = 전일이월 + 금일증가 − 금일감소 (전 행) | 통과 |
| 금일감소가 이월+증가를 넘지 않음 · 모든 금액 0 이상 | 통과 |
| 그룹 집계 = 소속 계정 합계 (4개 값 모두) | 통과 |
| 그룹 잔액 = 그룹 이월 + 증가 − 감소 · 전체 합계 = 그룹 합계 | 통과 |
| 계정은 하나의 그룹에만 속함 · 그룹 정의와 일치 | 통과 |
| 자산·비용 그룹은 차변, 부채·수익 그룹은 대변 | 통과 |
| 차/대 · 직접/간접 코드와 명칭 일치 · 기능영역 보유 | 통과 |
| 조회일자 · 전일 · 당월 1일 관계 정합 | 통과 |
| 화면 렌더링 — 실브라우저 조회 → 레벨 전환 → 필터 실동작 후 캡처 | 4/4 |
| 테마 런타임 확인 | sap_horizon |
계정과 금액은 모두 검증용 데이터이며, 계정 체계는 프로젝트 표준을 따랐습니다.
자주 묻는 질문
전일이월을 왜 두 테이블에서 만드나요?
회계연도 초부터 전월 말까지는 총계정원장에 월별 누계가 이미 집계돼 있어 그대로 쓰는 것이 빠릅니다. 반면 당월 1일부터 전일까지는 월 집계가 아직 닫히지 않아 전표 라인에서 직접 더해야 합니다. 두 구간을 합쳐야 어제까지의 잔액이 완성됩니다.
일계표 그룹은 누가 정하나요?
재무팀이 정합니다. 어떤 계정을 어느 그룹에 넣을지가 보고서의 성격을 결정하기 때문입니다. 그룹과 세부계정은 별도 테이블로 관리하므로 프로그램을 고치지 않고 구성을 바꿀 수 있습니다.
하위레벨을 접으면 무엇이 달라지나요?
그룹 줄만 남습니다. 계정 단위로 내려가면 숫자가 잘게 흩어져 하루 흐름이 잘 안 보이는데, 그룹만 보면 현금이 늘었는지 재고가 줄었는지가 먼저 눈에 들어옵니다. 원인을 찾을 때 다시 펼쳐 확인하는 순서로 씁니다.
차/대 구분은 어디에 쓰나요?
그 그룹이 증가할 때 어느 쪽으로 기표되는지를 뜻합니다. 자산·비용은 차변, 부채·수익은 대변입니다. 이 구분이 있어야 같은 전표 금액을 그룹마다 증가로 볼지 감소로 볼지 판단할 수 있습니다.
SAP 표준 기능과 어떻게 이어지나요?
전표 전기와 총계정원장 집계는 표준이 담당하고 데이터도 표준 구조 그대로입니다. 이 화면은 그 데이터를 회사가 정한 일계표 그룹으로 다시 묶어 하루 단위로 이월·증감·잔액을 세운 조회 전용 화면입니다.