솔루션 홈
리스회계

SAP 리스부채 상각 스케줄 — 부채와 사용권자산을 한 화면에서 맞춰 보기

리스는 계약 하나에서 부채와 자산이 동시에 움직입니다. 부채는 이자가 붙고 리스료만큼 줄고, 자산은 정액으로 상각됩니다. 그 둘을 기준월에 나란히 세우고 잔액이 앞으로 낼 리스료를 정확히 설명하는지까지 확인하는 화면입니다.

리스계약은 한 건에서 두 개의 잔액을 동시에 만듭니다. 리스부채는 유효이자율법으로 이자가 붙고 리스료만큼 줄어들고, 사용권자산은 기간에 걸쳐 정액으로 상각됩니다. 출발점은 같지만 줄어드는 속도가 달라 매달 잔액이 벌어지고, 결산에서는 그 차이를 설명할 수 있어야 합니다. 감가상각 현황 화면은 자산 쪽만, 차입금 상환스케줄 화면은 금융부채 쪽만 보여 주기 때문에 리스는 두 화면을 오가며 맞춰 보게 됩니다. 이 화면은 같은 계약의 부채와 자산을 한 줄에 세워 그 수고를 없앱니다.

여기에 한 가지를 더 얹었습니다. 월별 항등식(기초 − 원금상환 = 기말)은 이자율이 잘못 들어가도 성립하므로, 잔액이 앞으로 낼 리스료를 정확히 설명하는지를 따로 확인합니다. 기준월 시점에 확정된 리스료로 잔여 회차를 다시 할인해 현재가치를 구하고 기말 리스부채와 대사하는 방식입니다. 채권·채무 장단기 재분류 화면이 만기 기준으로 계정을 가르는 일을 한다면, 이 화면은 같은 유동/비유동 구분을 상환 스케줄에서 직접 계산해 보여 준다는 점이 다릅니다. SAP 표준 데이터 구조를 그대로 이어받아 OpenUI5 화면으로 확장한 화면입니다. 실제 구동 화면 8종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 리스계약 마스터와 조건 — 계약(VICNCN)과 조건(VICDCOND) 구조를 그대로 사용
  • 정기전기 — 리스료 지급 전표는 표준 정기전기(RERAPP)가 생성
  • 사용권자산 — 자산 마스터(ANLA)와 상각 실적(ANLC)
  • 전표 — 헤더(BKPF)와 라인(ACDOCA)의 계정·차대·금액
  • 텍스트 — 계정(SKAT) · 코스트센터(CSKT) · 회사코드(T001)
항목내용
업무 영역재무회계(FI) · 리스회계 · 사용권자산/리스부채
Namespacezui5.lease
셸 구조조회조건 영역(우측 조회) + 계약별 결과 테이블, 월별 스케줄·전표 상세 Dialog
화면 수조회 화면 1개 + 상세 다이얼로그 1개
대응 T-codeRECN(리스계약 조회) · RERAPP(정기전기) · AW01N(사용권자산) · FBL3N(리스부채 계정 원장)
T-code 선정 근거계약·조건은 RECN, 월 리스료 전기는 RERAPP, 자산 상각은 AW01N, 잔액 대사는 FBL3N 이 각각 원천이 됩니다
성격조회·검증형 — 계약 등록과 정기전기는 표준 트랜잭션이 담당
UI 테마sap_horizon 단일 적용

실제 화면 8종 둘러보기

회사코드와 기준년월을 넣고 조회하면 계약별 잔액이 한 줄로 뜹니다 → 오른쪽 구간에서 유동·비유동과 사용권자산을 확인하고 → 상세에서 월별 스케줄과 전표까지 되짚습니다.

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

Main.view.xml
조회조건 초기 화면
조회조건 초기 화면 — 회사코드·기준년월·자산유형·계약번호·계약명·코스트센터·계약상태와 표시옵션이 세 열로 놓입니다. 조회·초기화 버튼은 하단 바가 아니라 조회조건 영역 오른쪽 끝에 붙어, 조건을 다 넣은 자리에서 바로 누를 수 있습니다.
조회 결과
계약별 리스부채·사용권자산 현황
계약별 리스부채·사용권자산 현황 — 조회조건 입력필드에서 Enter 를 눌러도 바로 조회됩니다. 계약번호·계약명·자산유형·코스트센터·리스기간·잔여기간·증분차입이자율에 이어 당월 이자비용과 원금상환이 같은 줄에 놓이고, 위쪽 메시지에 건수와 잔액 요약이 나옵니다.
잔액 컬럼
리스부채 잔액·유동/비유동·사용권자산
리스부채 잔액·유동/비유동·사용권자산 — 같은 표의 오른쪽 구간입니다. 기말 리스부채가 유동(1년내)과 비유동으로 갈리고, 사용권자산 장부가와 계약상태, 잔여PV 검증 결과가 나란히 붙습니다. 부채와 자산의 잔액이 다른 이유는 감소 방식이 다르기 때문입니다.
상세
리스계약 상세 — 개시일 측정치와 월별 스케줄
리스계약 상세 — 개시일 측정치와 월별 스케줄 — 계약 헤더에 개시일 리스부채·개시일 사용권자산·선급리스료·초기직접원가와 기준월 기말잔액, 유동/비유동, 누적 이자비용이 함께 놓입니다. 아래로 계약 전 기간의 월별 상각 스케줄이 이어집니다.
재측정
조건변경 재측정 — 리스료가 바뀐 달
조건변경 재측정 — 리스료가 바뀐 달 — 리스료가 바뀌면 그 달에 잔여 회차를 새 금액으로 다시 할인해 부채를 재측정하고, 직전 기말잔액과의 차액을 조정액으로 남깁니다. 같은 금액이 사용권자산에 가산되고 잔여 기간으로 다시 상각됩니다.
전표
리스 전표 — 이자비용·원금상환·상각 라인
리스 전표 — 이자비용·원금상환·상각 라인 — 상세 아래쪽 전표 패널입니다. 리스료 지급 전표(이자비용·리스부채·보통예금)와 사용권자산 상각 전표(감가상각비·상각누계액)가 차·대 구분과 함께 최근 12개월분 놓입니다.
만기임박
계약상태 필터 — 만기임박 계약만
계약상태 필터 — 만기임박 계약만 — 잔여기간이 6개월 이하인 계약만 추립니다. 재계약할지 반납할지 판단이 필요한 계약을 결산 전에 먼저 보기 위한 조건입니다.
회사코드 전환
회사코드 전환 — 생산법인 리스계약
회사코드 전환 — 생산법인 리스계약 — 회사코드를 바꾸면 조회 상태에서 즉시 재조회됩니다. 생산법인은 기계장치 리스 위주라 계약 수는 적지만 계약당 잔액이 크고, 비유동 비중이 높게 나타납니다.

조작 방법

  1. 회사코드기준년월을 고릅니다. 두 값은 필수이며, 기준년월 기본값은 당월입니다. 이 달 기준으로 기초·기말 잔액과 당월 발생액이 계산됩니다.
  2. 자산유형(부동산 · 차량운반구 · 기계장치 · IT장비)과 코스트센터, 계약상태로 범위를 좁힙니다.
  3. 계약번호와 계약명은 부분일치로 넣습니다. 입력필드에서 Enter 를 누르면 바로 조회됩니다.
  4. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다. 한 번 조회한 뒤에는 Select · CheckBox 값을 바꾸는 즉시 재조회됩니다.
  5. 표시옵션의 조건변경(재측정) 계약만 을 켜면 기간 중 리스료가 바뀐 계약만 남습니다.
  6. 행을 클릭하거나 오른쪽 상세 버튼을 누르면 월별 상각 스케줄과 리스 전표가 다이얼로그로 열립니다.
  7. 목록과 스케줄은 각각 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

리스부채 잔액 정합성 판정

스케줄이 맞는지 보려면 무엇을 봐야 할까요. 월별 항등식만으로는 부족합니다. 이자율을 잘못 넣어도 기초 − 원금상환 = 기말 은 그대로 성립하기 때문입니다. 그래서 이 화면은 잔액 자체를 원리금 구조로 되짚어 판정합니다.

판정기준표시
월별 항등식기초 리스부채 − 원금상환 = 기말 리스부채 / 리스료 − 이자비용 = 원금상환위배 시 조회 단계에서 차단
잔여 현재가치 대사기준월에 확정된 리스료로 잔여 회차를 할인한 현재가치 = 기말 리스부채정합 / 차이
허용 오차원 단위 반올림 누적을 감안해 max(50원, 잔여개월 × 3원)초과 시 차이로 표시하고 행을 강조
만기 도달마지막 회차의 기말 리스부채 = 0, 사용권자산 장부가 = 0계약상태 종료
만기 임박잔여기간 6개월 이하계약상태 만기임박 · 행 강조
유동/비유동 분해유동 + 비유동 = 기말 리스부채, 비유동 ≥ 0분해 오류 시 차이

잔액을 잔여 리스료로 되짚는 이유

리스부채는 "앞으로 낼 리스료의 현재가치" 라는 정의를 매달 그대로 유지합니다. 그래서 기말 잔액과 잔여 스케줄의 현재가치가 어긋난다면 이자율·기간·리스료 중 하나가 어긋난 것입니다. 결산 직전에 이 한 컬럼만 훑어도 손봐야 할 계약이 바로 드러납니다.

유효이자율 상각 5단계

개시일 측정부터 월별 전개까지를 다섯 단계로 나눠 계산합니다. 화면의 모든 금액은 이 순서대로 만들어집니다.

단계계산비고
1. 리스료 스케줄 확정월 고정 리스료 × 리스기간(개월), 기말 지급 가정조건유형이 리스료인 계약 조건에서 가져옵니다
2. 개시일 리스부채Σ 리스료 ÷ (1 + 월이자율)k, k = 1..n월이자율 = 증분차입이자율 ÷ 12
3. 개시일 사용권자산개시일 리스부채 + 선급리스료 + 초기직접원가자산에만 가산되고 부채에는 반영하지 않습니다
4. 월별 전개이자비용 = 기초잔액 × 월이자율 → 원금상환 = 리스료 − 이자비용 → 기말 = 기초 − 원금상환마지막 회차는 잔액을 0 으로 맞춰 정산
5. 사용권자산 상각개시일 사용권자산 ÷ 리스기간(정액), 마지막 회차에서 잔액 정산부채는 체감, 자산은 정액이라 잔액이 벌어집니다

기간 중 리스료가 바뀌면 그 달에 잔여 회차를 새 금액으로 다시 할인해 부채를 재측정하고, 차액을 사용권자산에 가산한 뒤 잔여 기간으로 상각액을 다시 계산합니다. 화면에서는 그 달의 행이 조건변경 재측정 으로 표시되고 조정액이 부호와 함께 남습니다.

조회조건

필드필수설명
회사코드필수대상 회사코드. 통화는 회사코드 통화를 따릅니다
기준년월필수이 달 기준으로 기초·기말 잔액과 당월 발생액을 계산. 기본값은 당월
자산유형선택부동산 · 차량운반구 · 기계장치 · IT장비
리스계약번호선택부분일치. Enter 로 바로 조회
계약명선택부분일치. Enter 로 바로 조회
코스트센터선택리스료·상각비가 귀속되는 코스트센터
계약상태선택정상 · 만기임박(잔여 6개월 이하) · 종료
조건변경(재측정) 계약만선택기간 중 리스료가 바뀌어 부채를 재측정한 계약만 표시

결과 컬럼

계약 목록

컬럼의미 · 표시
리스계약번호 · 계약명계약 식별자와 명칭
자산유형 · 코스트센터사용권자산 구분과 비용 귀속처
리스기간 · 잔여기간개시일 ~ 종료일, 기준월 익월부터 남은 개월 수
증분차입이자율현재가치 할인율(연). 월할로 적용
당월 이자비용기초 리스부채 × 월이자율
당월 원금상환리스료 − 당월 이자비용
당월 상각비사용권자산 정액 상각액
리스부채 기말잔액기초 − 원금상환. 우측정렬, 통화 표시
유동(1년내) · 비유동익월부터 12개월 원금상환액 합과 그 나머지
사용권자산 장부가기초 장부가 − 당월 상각비
계약상태정상 · 만기임박 · 종료
잔여PV 검증잔여 리스료 현재가치와 기말잔액 일치 여부

상세 — 월별 스케줄과 전표

영역내용
계약 헤더개시일 리스부채 · 개시일 사용권자산 · 선급리스료 · 초기직접원가 · 기말잔액 · 유동/비유동 · 누적 이자비용 · 계약상태 · 잔여PV 검증
월별 상각 스케줄회계기간 · 회차 · 기초 리스부채 · 이자비용 · 리스료 · 원금상환 · 기말 리스부채 · 당월 상각비 · 사용권자산 장부가 · 재측정 조정 · 이벤트
리스 전표회계기간 · 전표번호 · 전기일 · 전표유형 · 계정 · 차대 · 금액 · 적요

SAP 표준 기능 매핑

이 화면은 계약 등록이나 정기전기를 대체하지 않습니다. 표준 실행은 T-code 가 담당하고, 이 화면은 그 결과에 조회·검증 관점을 더해 확장합니다.

테이블 · 오브젝트역할
RECN · VICNCN리스계약 마스터 — 계약번호 · 기간 · 상대방
VICDCOND계약 조건 — 리스료 금액과 주기
RERAPP정기전기 — 리스료 지급 전표 생성
ANLA · ANLC · AW01N사용권자산 마스터와 상각 실적
BKPF · ACDOCA전표 헤더와 라인 — 이자비용 · 리스부채 · 감가상각비
SKA1 · SKAT계정 마스터와 명칭
CSKS · CSKT코스트센터와 명칭
FBL3N리스부채 계정 원장 — 화면 잔액과 대사

도입 시 확인이 필요한 부분

증분차입이자율을 계약별로 둘지 자산유형별로 둘지, 리스료 지급 시점을 기초로 볼지 기말로 볼지는 회사 기준에 따라 달라집니다. 소액·단기 리스 면제 범위와 비리스 요소 분리 여부도 마찬가지입니다. 화면은 계약 조건에 등록된 값을 그대로 읽어 계산하므로, 도입 때는 그 값을 어디에 등록해 둘지부터 정하는 편이 좋습니다.

참고 CDS 뷰

운영 서비스로 연결할 때는 계약과 조건, 사용권자산을 묶은 뷰로 서빙하고 월별 전개는 계산 함수에 두는 구성을 제안합니다.

@AbapCatalog.sqlViewName: 'ZCLEASESCH'
@EndUserText.label: '리스계약 월별 상각 스케줄 (Z)'
define view Z_C_LEASE_SCHEDULE
  as select from vicncn as Contract
    inner join      vicdcond as Cond     on  Contract.recnnr   = Cond.recnnr
                                         and Cond.condtype     = 'L001'   // 리스료 조건
    left outer join anla     as RouAsset on  RouAsset.bukrs    = Contract.bukrs
                                         and RouAsset.anln1    = Contract.zzanln1
    left outer join csks     as CostCtr  on  CostCtr.kokrs     = Contract.kokrs
                                         and CostCtr.kostl     = Contract.zzkostl
{
  key Contract.bukrs,
  key Contract.recnnr                            as ContractId,
      Contract.xcncn                             as ContractName,
      Contract.cncnstart                         as StartDate,
      Contract.cncnend                           as EndDate,
      Cond.cdrate                                as MonthlyPayment,
      Contract.zzdiscrate                        as DiscountRate,   // 증분차입이자율(연)
      RouAsset.anlkl                             as AssetClass,
      CostCtr.kostl                              as Kostl,
      division( Contract.zzdiscrate, 12, 6 )     as MonthlyRate
}
// 월별 전개(기초잔액·이자비용·원금상환·기말잔액)는 AMDP 테이블 함수로 계산하고,
// 전기 결과는 ACDOCA(리스부채·이자비용·감가상각비 계정)와 대사합니다.

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 리스 관리 방식에 맞춰 조정합니다.

원천 테이블 · 필드 매핑

화면 값원천도출식 · 설명
계약번호 · 계약명VICNCN.RECNNR · XCNCN리스계약 헤더
리스기간VICNCN.CNCNSTART · CNCNEND개시일 ~ 종료일
월 리스료VICDCOND.CDRATE조건유형이 리스료인 조건 금액
증분차입이자율계약 조건 등록값월이자율 = 연이자율 ÷ 12
개시일 리스부채계산값Σ 리스료 ÷ (1 + 월이자율)k
개시일 사용권자산계산값개시일 리스부채 + 선급리스료 + 초기직접원가
당월 이자비용계산값기초 리스부채 × 월이자율 (원 단위 반올림)
당월 원금상환계산값리스료 − 이자비용
기말 리스부채계산값 / ACDOCA 대사기초 − 원금상환
사용권자산 장부가계산값 / ANLC.NAFAG 대사기초 장부가 − 정액 상각액
재측정 조정계산값재측정 리스부채 − 직전 기말 리스부채
전표 라인BKPF.BELNR · ACDOCA.RACCT · DRCRK · HSL전표번호 · 계정 · 차대 · 금액

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.f.DynamicPage — 타이틀 · 조회조건 헤더 · 결과 테이블
조회조건sap.ui.layout.form.Form + ResponsiveGridLayout 3열, 오른쪽 끝에 조회·초기화
결과 테이블sap.ui.table.Table — 17개 컬럼, 행 강조 · 합계 Footer · 가로 스크롤
상세sap.m.Dialog + ObjectHeader + sap.m.Table 2종(스케줄 · 전표)
상태 표시ObjectStatus · ObjectNumber — MessageType 값만 사용
데이터ModelMock — localdata JSON 을 fetch 로 읽어 Promise 로 반환
공통BaseController.downloadCsv(UTF-8 BOM) · ErrorHandler · 포맷터 21종

컬럼이 많은 화면에 sap.ui.table 을 쓴 이유

계약 하나에 부채와 자산, 당월 발생액과 잔액 구분까지 붙으면 컬럼이 열일곱 개가 됩니다. 이 정도 폭에서는 목록형 테이블보다 그리드형 테이블이 가로 스크롤과 컬럼 이동, 정렬을 훨씬 자연스럽게 다룹니다. 반대로 상세 다이얼로그의 스케줄·전표는 건수가 적고 세로로 읽는 표라 목록형 테이블을 그대로 씁니다.

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment
Component.jsUIComponent · ErrorHandler 초기화
manifest.json앱 디스크립터 — 앱 ID(zui5.lease) · ko 로케일
view/Main.view.xmlDynamicPage 골격 + 조회조건 · 메시지 · 결과 테이블 프래그먼트
view/fragments/MainSearch.fragment.xml조회조건 3열 폼, 오른쪽 끝 조회·초기화
view/fragments/MainTable.fragment.xml결과 테이블 17컬럼 · 합계 Footer
view/fragments/DetailDialog.fragment.xml월별 스케줄 · 리스 전표 상세
controller/Main.controller.js조회 · 월별 전개 집계 · 검증 판정 · 상세 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
model/formatter.js금액 · 비율 · 기간 · 상태 포맷 21종
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/*.json계약 · 월별 스케줄 · 전표 검증용 데이터

운영 전환 시에는 ModelMock 내부만 실제 서비스 호출로 바꾸면 화면과 계산 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 데이터는 리스계약 12건 · 월별 스케줄 494행 · 전표 라인 655행이며, 총 리스료 3,548,200,006원 · 총 이자비용 374,310,287원 · 총 사용권자산 상각비 3,247,089,719원입니다.

검증 항목결과
월별 항등식 — 기초 리스부채 − 원금상환 = 기말 / 리스료 − 이자비용 = 원금상환통과
이자비용 = 기초 리스부채 × 월이자율 (원 단위 반올림)통과
개시일 리스부채 = 리스료 현재가치 · 만기 기말잔액 = 0통과
총 리스료 = 개시일 리스부채 + 재측정 조정 + 총 이자비용통과
사용권자산 — 기초 − 상각비 = 기말 / 총 상각비 = 개시일 장부가 + 재측정 조정통과
잔여 리스료 현재가치 = 기말 리스부채 (스케줄 494행 전수)통과
전표 차변합계 = 대변합계 (전표 단위 · 합계 1,571,390,602원)통과
전표 금액 = 스케줄 이자비용 · 원금상환 · 리스료 · 상각비통과
유동 + 비유동 = 기말 리스부채 · 비유동 음수 없음통과
정적 검증 — XML 8 · JSON 5 파싱, i18n 키 83개, 이벤트 핸들러 · 포맷터 참조 실재통과
리소스 로딩 — 앱 폴더를 문서 루트로 서빙 후 참조 리소스 27개27/27
화면 렌더링 — 실브라우저에서 조회 → 필터 → 상세 → 재측정 확인, 콘솔 오류 0건8/8
조회 버튼 위치 · 테마 — 조회조건 영역 우측 끝, sap_horizon 런타임 확인통과

계약명 · 리스제공자 · 금액은 모두 검증용 데이터입니다.

자주 묻는 질문

리스부채 기말잔액이 맞는지 화면에서 어떻게 확인하나요?

행마다 잔여PV 검증 컬럼이 있습니다. 기준월 시점에 확정된 리스료로 잔여 회차를 다시 할인해 현재가치를 구하고, 그 값이 화면의 기말 리스부채와 같은지 비교해 정합 또는 차이로 표시합니다. 월별 항등식(기초 − 원금상환 = 기말)만 보면 이자율이 잘못 들어가도 식은 성립하므로, 잔액 자체를 원리금 구조로 되짚는 검증을 따로 둡니다. 원 단위 반올림 누적을 감안해 허용 오차는 max(50원, 잔여개월 × 3원)로 잡습니다.

유동과 비유동은 어떤 기준으로 나누나요?

기준월 익월부터 12개월 동안 상환될 원금 합계를 유동 리스부채로 보고, 나머지를 비유동으로 둡니다. 이자비용은 부채 잔액이 아니라 기간비용이므로 유동 금액에 넣지 않습니다. 잔여기간이 12개월 이하인 계약은 기말잔액 전액이 유동이 되고, 화면에서도 비유동이 0으로 표시됩니다.

계약 도중 리스료가 바뀌면 어떻게 표시되나요?

변경이 적용되는 달에 잔여 리스료를 새 금액으로 다시 할인해 리스부채를 재측정하고, 직전 기말잔액과의 차액을 조정액으로 남깁니다. 같은 금액이 사용권자산에 가산되고 잔여 기간으로 다시 정액 상각됩니다. 해당 행은 '조건변경 재측정'으로 표시되며, 조회조건의 표시옵션으로 재측정이 있었던 계약만 따로 볼 수 있습니다.

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

리스계약 마스터와 조건, 정기전기는 표준 계약관리(RECN·RERAPP)가 담당하고 전표는 ACDOCA에 그대로 남습니다. 사용권자산의 상각은 고정자산 기능이 수행합니다. 표준 실행은 T-code가 담당하고, 이 화면은 그 데이터를 계약 단위로 모아 기준월 잔액·유동/비유동·잔여 현재가치 검증이라는 조회·검증 관점을 더해 확장한 것입니다.

리스회계, 지금 쓰는 SAP 위에서 확장해 보세요

계약 수가 늘수록 부채와 자산을 따로 맞춰 보는 시간이 결산을 끌어당깁니다. 잔액을 스케줄에서 바로 검증할 수 있으면 그만큼 앞당겨집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

리스회계IFRS16리스부채사용권자산유효이자율법VICNCNACDOCAOpenUI5

함께 보면 좋은 글