솔루션 홈
일반회계

SAP 월별 수익·비용 명세서 — 계층으로 접고 전표까지 펼치기

판관비·영업외수익·영업외비용·노무비를 계층 구조로 보여 주고, 계정의 월 금액에서 전표 한 줄까지 내려가는 화면입니다.

손익계산서를 보다가 '판매비와 관리비 62억'에서 멈추면, 그 다음 질문은 언제나 같습니다. 어디에 썼나.

급여인지 복리후생비인지, 그중에서도 어느 계정인지, 그 계정의 3월 금액이 왜 튀는지까지 내려가야 답이 됩니다. 이 화면은 계정 계층을 따라 큰 덩어리부터 보여 주고, 필요할 때 계정 단위로 펼쳐, 월 금액을 누르면 그달 전표 목록까지 이어집니다. 한 화면 안에서 62억이 전표 한 줄로 분해됩니다.

SAP 표준 구조를 그대로 이어받은 부분

  • 계정 계층 — ZTFIF0100(수익비용 계정코드)에 등록된 건만 출력
  • 금액 집계 — FAGLFLEXT 에서 RYEAR = 입력연도, RBUKRS = 입력 회사코드
  • 전표 상세 — BKPF · BSEG, 취소전표 제외
  • 계정 텍스트 — SKAT · 전표유형 텍스트 T003T
항목내용
업무 영역재무회계(FI) · 손익 명세
Namespacezui5.pnldetail
셸 구조조회조건 영역(우측 조회) + 월별 명세 + 전표 상세
화면 수조회 화면 1개 + 전표 상세 패널
데이터계정 노드 55개 (계정 37) · 전표 326건 · 명세서 4종
성격조회형(Read-Only)
UI 테마sap_horizon 단일 적용

실제 화면 7종 둘러보기

명세서를 고르면 중분류까지 보입니다 → 하위레벨 보임으로 계정을 펼치고 → 월 금액을 눌러 전표까지 내려갑니다.

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

Main.view.xml
판관비 명세서 — 중분류까지
판관비 명세서 — 중분류까지 — 기본은 대분류와 중분류만 보여 줍니다. 급여·퇴직급여·복리후생비처럼 덩어리 단위로 월 추이가 먼저 잡힙니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
상위 클릭
상위 레벨 클릭 — 안내
상위 레벨 클릭 — 안내 — 중분류의 월 금액을 눌러도 전표가 열리지 않습니다. 합계이기 때문입니다. 계정 레벨에서만 전표를 볼 수 있다고 알려 줍니다.
하위 전개
하위레벨 보임 — 계정까지
하위레벨 보임 — 계정까지 — 체크하면 8자리 계정이 중분류 아래로 펼쳐집니다. 임원급여·급료와임금처럼 실제 계정 단위로 월 금액이 나옵니다.
전표 상세
월 금액 클릭 — 전표 목록
월 금액 클릭 — 전표 목록 — 계정의 월 금액을 누르면 그달 전표가 아래에 열립니다. 전표유형·증빙일·전기일·통화·금액이 이어지고, 취소전표는 제외됩니다.
전표 이동
전표번호 클릭 — 전표 조회로
전표번호 클릭 — 전표 조회로 — 전표번호를 누르면 전표 조회 화면으로 넘어갑니다. 명세서에서 전표까지 한 흐름으로 이어집니다.
영업외 수익
영업외 수익 — 대변에서 차변 차감
영업외 수익 — 대변에서 차변 차감 — 수익 명세서는 집계 방향이 반대입니다. 조회조건 옆에 어떤 부호로 계산되는지 표시해 두었습니다.
노무비/경비
노무비/경비 — 제조원가 항목
노무비/경비 — 제조원가 항목 — 명세서를 바꾸면 계층과 금액이 함께 바뀝니다. 같은 화면으로 네 가지 명세서를 돌려 봅니다.

조작 방법

  1. Company codeFiscal Year 를 넣고 볼 명세서를 고릅니다.
  2. 기본은 대분류·중분류만 나옵니다. 월 추이에서 튀는 덩어리를 먼저 찾습니다.
  3. 하위레벨 보임을 체크하면 8자리 계정까지 펼쳐집니다.
  4. 계정의 월 금액을 클릭하면 그달 전표 목록이 아래에 열립니다.
  5. 전표번호를 누르면 전표 조회 화면으로 이동합니다.
  6. Excel 다운로드로 계층과 12개월 금액을 원 단위로 내려받습니다.

명세서 부호와 계층 규칙

명세서마다 집계 부호가 다르고, 계층은 세 단계로 나뉩니다.

명세서 4종과 집계 부호 (사양서)

  월별 판매비/일반관리비 명세서   차변 − 대변
  월별 영업외 수익 명세서         대변 − 차변
  월별 영업외 비용 명세서         차변 − 대변
  월별 노무비/경비 명세서         차변 − 대변

     where RYEAR  = 입력연도
       and RBUKRS = 입력 회사코드

계정 계층 (ZTFIF0100)

  2자리  대분류   예) 51 판매비와 관리비
  4자리  중분류   예) 5101 급여          ← 하위 계정 금액의 합
  8자리  계정     예) 51010100 임원급여  ← 실제 잔액

  계층구조로 ZTFIF0100 에 있는 건만 출력
  하위레벨 보임을 켜면 8자리 계정까지 전개

전표 상세

  8레벨 계정의 월 금액을 클릭하면 해당 월 전표 목록 출력
  취소전표는 제거
  전표번호 클릭 시 전표 조회 화면으로 이동
항목산식 · 규칙
대상 계정ZTFIF0100 에 등록된 계정과 그 하위
금액 원천FAGLFLEXT — 연도·회사코드 기준
비용 명세서차변 − 대변
수익 명세서대변 − 차변
4레벨 금액하위 8레벨 계정 금액의 합
전표 상세8레벨 계정의 월 금액에서만 열림
취소전표상세 목록에서 제외

상위 합계를 화면에서 계산하는 이유

계층이 회사마다 바뀌는 값이라 뷰에 고정하면 계정 하나가 추가될 때마다 뷰를 고쳐야 합니다. 계정 단위 금액만 읽어 오고 합계는 계층을 따라 화면에서 더하면, 설정 테이블에 계정을 넣는 것만으로 명세서가 바뀝니다.

계층 3단계

큰 덩어리에서 계정으로, 계정에서 전표로 내려갑니다.

레벨구분금액 의미표시 조건
2자리대분류합계만 표시항상 보임
4자리중분류하위 계정 합계항상 보임
8자리계정실제 잔액하위레벨 보임을 켜야 표시 · 전표 드릴다운 가능

필요한 깊이만 펼치기 때문에 화면이 넘치지 않으면서도 전표까지 닿습니다.

조회조건

필드필수설명
Company code필수대상 회사코드
Fiscal Year필수조회 회계연도
명세서필수판관비 / 영업외수익 / 영업외비용 / 노무비·경비
하위레벨 보임선택8자리 계정까지 전개

결과 컬럼

컬럼의미 · 표시
계정코드 / 계정명레벨에 따라 들여쓰기. 대분류는 강조
연간 합계12개월 합계
1월 ~ 12월월별 금액 (백만원 단위 표시)

보조 기능

컬럼의미 · 표시
전표유형전표유형 코드와 명칭
Doc. Date · Posting Date증빙일과 전기일
Doc. Number전표번호 — 클릭 시 전표 조회로 이동
CUR · Amount(TC) · Amount(LC)거래통화와 금액, 현지통화 금액
Account · Account Name · Text계정과 적요

SAP 표준 기능 매핑

금액과 전표는 표준 구조에서 읽고, 계층만 설정 테이블로 관리합니다.

표준역할이 화면에서의 확장
FAGLFLEXT총계정원장 합계월별 금액 집계 원천
ZTFIF0100수익비용 계정코드계층 구조 정의
BKPF · BSEG전표 헤더·라인전표 상세 조회
FB03전표 조회전표번호 클릭 시 이동
S_ALR_87012284 관점재무제표상위 레벨 금액과 대조
FS10N 관점계정 잔액계정 단위 월별 잔액 확인

운영 데이터 소스 매핑

항목SAP 원천비고
계층ZTFIF0100HKONT 와 하위 계정
금액FAGLFLEXTRYEAR · RBUKRS · 월별 차·대변
계정 텍스트SKAT계정 명칭
전표BKPF · BSEG전표유형 · 일자 · 통화 · 금액 · 적요
전표유형 텍스트T003T전표유형 명칭

도입 시 확인이 필요한 부분

계정 계층 테이블의 레벨 체계를 먼저 정해야 합니다. 여기서는 2·4·8자리를 썼지만 계정과목표 자릿수에 따라 달라집니다. 또 명세서별 부호는 계정 성격에 따르므로, 혼합 계정(차감 계정 등)이 있으면 계정 단위로 부호를 지정할 수 있게 설계하는 편이 안전합니다.

참고 CDS 뷰

월별 금액을 조회할 때는 총계정원장 합계에 계층 정보를 붙인 뷰가 편합니다.

@AbapCatalog.sqlViewName: 'ZCPNLMONTH'
@EndUserText.label: '월별 수익·비용 명세 (Z)'
define view Z_C_PNL_MONTHLY
  as select from faglflext as Total
    inner join      ztfif0100 as Tree     on Total.racct = Tree.hkont
    left outer join skat      as AcctText on  Total.racct = AcctText.saknr
                                          and AcctText.spras = 'K'
{
  key Total.rbukrs    as Bukrs,
  key Total.ryear     as Gjahr,
  key Total.racct     as GlAccount,
      AcctText.txt50  as GlAccountName,
      Tree.level      as HierarchyLevel,
      Tree.parent     as ParentAccount,
      // 비용은 차변 − 대변, 수익은 대변 − 차변
      case when Tree.report = 'NOI'
           then Total.hslvt * -1 else Total.hslvt end as CarryForward,
      Total.hsl01     as Month01,
      Total.hsl02     as Month02,
      Total.hsl03     as Month03,
      Total.hsl04     as Month04,
      Total.hsl05     as Month05,
      Total.hsl06     as Month06,
      Total.hsl07     as Month07,
      Total.hsl08     as Month08,
      Total.hsl09     as Month09,
      Total.hsl10     as Month10,
      Total.hsl11     as Month11,
      Total.hsl12     as Month12
}

월별 금액을 조회할 때 쓰는 참고용 설계입니다. 상위 레벨 합계는 뷰에서 계산하지 않고 화면에서 롤업합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 월별 명세 · 전표 상세
조회조건sap.m.Input · RadioButtonGroup · CheckBox
월별 명세sap.ui.table.Table — 계정·연간합계 2컬럼 고정, 월 12컬럼
계층 표현들여쓰기 + ObjectStatus 강조 + RowSettings.highlight
드릴다운cellClick 의 columnId 로 클릭한 월을 판정
전표 이동sap.m.Link — 전표번호
ExcelBlob + UTF-8 BOM — 계층과 12개월 그대로

월 금액을 백만원으로 줄여 보여 주는 이유

12개월을 한 줄에 놓으면 원 단위로는 숫자가 잘립니다. 백만원 단위로 줄이면 열두 달 추이가 한눈에 들어오고, 정확한 금액이 필요할 때는 전표 상세에서 원 단위로 확인합니다. Excel 다운로드는 원 단위 그대로 내보냅니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.pnldetail) · ko 로케일 · sap_horizon
Component.js조회조건 모델 · 결과 모델 초기화
view/Main.view.xml조회화면 + 월별 명세 + 전표 상세
controller/Main.controller.js조회 · 명세서 전환 · 드릴다운 · 전표 이동 · Excel
model/ModelMock.js계층 전개 · 상위 합계 롤업 · 전표 상세 조회
model/formatter.js백만원 축약 · 들여쓰기 · 레벨 강조 · 금액 포맷터
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/pnldetail.json계정 계층·월 금액·전표 시뮬레이션 데이터

검증 결과

화면 구성에 쓴 데이터는 명세서 4종의 계정 계층과 월별 금액입니다.

데이터규모구성
계정 계층55개 노드대분류 4 · 중분류 14 · 계정 37
명세서4종판관비 · 영업외수익 · 영업외비용 · 노무비/경비
전표 상세326건취소전표 제외 · 원화·외화 혼재
검증 항목결과
명세서 4종 · 각 명세서마다 대분류 1개통과
계층 레벨이 2·4·8 이며 계정 자리수와 일치통과
4레벨의 부모는 2레벨, 8레벨의 부모는 4레벨통과
자식 계정코드가 부모 코드로 시작 (계층 정합성)통과
모든 계정에 12개월 금액 존재 · 음수 없음통과
4레벨 금액 = 하위 8레벨 합통과
전표의 계정이 8레벨에 존재 · 명세서 일치통과
증빙일 ≤ 전기일 · 전기일의 월이 해당 월과 일치통과
KRW 는 TC=LC · 취소전표 미포함통과
화면 렌더링 — 판관비 → 계층 전개 → 전표 상세 → 명세서 전환7/7

계정명·금액은 모두 검증용 데이터입니다.

자주 묻는 질문

왜 처음에는 계정까지 안 보여 주나요?

계정을 모두 펼치면 판관비만 해도 수십 줄이 됩니다. 월 추이를 보려면 급여·복리후생비 같은 덩어리 단위가 먼저 잡혀야 하고, 어느 덩어리가 튀는지 확인한 뒤에 그 안을 들여다보는 순서가 자연스럽습니다. 사양서에도 하위 레벨은 클릭 시 출력하도록 돼 있습니다.

수익 명세서만 집계 방향이 다른 이유는?

수익 계정은 대변에 쌓이기 때문입니다. 비용처럼 차변에서 대변을 빼면 음수로 나옵니다. 그래서 영업외 수익만 대변에서 차변을 빼도록 사양서에 지정돼 있고, 화면에도 어떤 부호로 계산되는지 표시해 두었습니다.

중분류 금액을 눌러도 전표가 안 열리는 이유는?

중분류는 하위 계정 금액의 합이라 대응하는 전표가 없습니다. 어느 계정의 전표인지 특정할 수 없기 때문입니다. 하위레벨 보임을 켜고 계정 단위에서 눌러야 그달 전표가 열립니다.

취소전표를 빼는 이유는?

취소전표는 원전표와 짝을 이뤄 금액이 상쇄됩니다. 목록에 넣으면 같은 금액이 플러스와 마이너스로 두 번 보여 무엇을 봐야 할지 흐려집니다. 집계 금액에도 이미 반영되지 않으므로 상세에서도 빼는 편이 일관됩니다.

SAP 표준 기능과 어떻게 이어지나요?

금액은 FAGLFLEXT에서, 전표는 BKPF·BSEG에서 그대로 읽습니다. 계층만 커스텀 테이블로 관리해 회사가 원하는 명세서 형태를 만드는 구조입니다. 전표번호를 누르면 표준 전표 조회로 이어지고, 상위 레벨 금액은 재무제표 조회와 대조할 수 있습니다.

손익 명세, 지금 쓰는 SAP 위에서 확장해 보세요

계층으로 접었다 펴고 전표까지 이어지면 비용 분석이 질문 하나당 한 번의 조회로 끝납니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

손익명세서판매비와관리비영업외수익노무비FAGLFLEXT계정 계층OpenUI5