재무회계

SAP 사용권자산·리스부채 재무상태표 표시 점검 — IFRS 16, 별도 표시했는지·합산했다면 주석에 밝혔는지·표시 항목 합계가 계약과 맞는지 한 화면에서

표시 항목 점검 · 합산 표시의 주석 공시 확인 · 투자부동산 표시 확인 · 리스부채 유동·비유동 재계산 · 표시 항목 합계와 계약 합계 대사 — 소개 영상과 실제 화면 7종, CDS 코드까지

소개 영상1분 45초 · 자막 포함8개 장면조회 → 조건 좁히기 → 표시 항목 → 유형별 합계 → 대사 → 계약 상세

개발 배경 — 이 앱을 사용해야 하는 이유

리스 회계의 재무상태표 표시는 숫자를 맞추는 일이 아니라 어디에 놓았는가를 확인하는 일입니다. 사용권자산과 리스부채는 별도 항목으로 표시하거나, 다른 항목에 합산했다면 그 항목을 주석에 밝히는 것이 IFRS 16 리스(K-IFRS 제1116호)의 요구이고, 임대·시세차익 목적의 사용권자산은 투자부동산 정의에 해당할 수 있는지도 따져야 합니다. 그런데 결산에서는 이 확인이 계정 잔액 조회, 주석 자료, 계약 목록으로 흩어져 있어 “금액은 맞는데 위치와 공시는 맞는지”가 마지막에 몰립니다.

이 앱은 계약 한 건마다 장부에 놓인 표시 위치와 회사 표시 정책·보유 목적으로 정한 점검 기준 위치를 나란히 두고, 합산해 표시했다면 주석에 밝혔는지, 리스부채의 유동·비유동 합이 잔액과 같은지를 한 표에 보여 줍니다. 그리고 표시 항목별 합계가 계약별 합계와 맞는지를 대사식으로 매번 검산합니다.

한 줄 요약 — 이 화면은 사용권자산·리스부채가 재무상태표 어느 항목에 놓였는지와 주석 공시 여부를 점검 기준과 견주고, 합계가 계약과 맞는지 보여 줍니다. 표시의 적정성을 단정하지 않으며 “점검 필요”·“확인 필요”로 확인 방향만 알립니다.

핵심 포인트 여섯 가지

포인트고객이 얻는 것지금 방식이라면
① 계약 단위로 보는 표시 위치사용권자산과 리스부채 각각의 장부 표시와 기준 표시를 계약마다 나란히 놓아 어디가 다른지 바로 봅니다.계정 잔액만 보고 계약별로 어느 항목에 들어갔는지는 따로 추적합니다.
② 합산 표시의 주석 확인유형자산·차입금 등에 합산했다면 그 항목을 주석에 밝혔는지를 점검 코드로 보여 줍니다.주석 자료와 재무상태표를 눈으로 대조합니다.
③ 투자부동산 표시 확인임대·시세차익 목적의 사용권자산이 투자부동산이 아닌 항목에 놓인 계약을 추립니다. 목적이 비어 있으면 판단하지 않고 따로 표시합니다.보유 목적 확인이 결산 막판 질의로 올라옵니다.
④ 유동·비유동 재계산리스부채 유동과 비유동의 합이 잔액과 같은지 계약마다 확인합니다.총액만 맞춰 보고 구분은 주석 작성 때 발견합니다.
⑤ 대사식이 스스로 검산표시 항목 합계와 계약 합계, 유형별 합계 등 6식을 전수로 돌려 차이 0건을 확인합니다.집계 화면과 원본이 맞는지 따로 맞춰 봅니다.
⑥ OData 로 분리된 구조화면은 OData V2 서비스만 바라보고 조회조건은 $filter 로 전달합니다. 실제 서비스로 바꿀 때 화면을 고치지 않습니다.화면과 데이터가 엉켜 연동 때 다시 만듭니다.

사례로 보는 효과 — 합계는 맞는데 위치가 다른 계약

샘플 데이터에서 사용권자산 표시 항목 합계와 계약별 합계는 26,601백만 원으로 같습니다. 그런데 계약 단위로 내려가면 임대 목적의 상가 전대 계약과 투자 목적 토지 계약, 임대용 사옥 일부 전대 계약 세 건의 사용권자산이 투자부동산이 아닌 항목에 놓여 있어 점검 코드 P01 로 나옵니다(실제 장부에서는 보유 목적과 정의 해당 여부 확인 필요). 합계 대사만 봤다면 지나쳤을 지점입니다. 한편 리스부채는 두 계약에서 유동과 비유동의 합이 잔액과 15백만 원, 22백만 원 달라 P05 로 나옵니다.

도입하면 달라지는 것

  • 결산 막판 질의 — 어느 계약의 표시 위치와 주석 공시를 먼저 볼지 미리 정해 둘 수 있습니다.
  • 확인 순서 — 총액이 아니라 점검 코드별로 계약을 추려 열어 볼 수 있습니다.
  • 설명 자료 — 판정 규칙과 대사 결과가 화면에 있어 감사 질의에 같은 자료로 답합니다.

이런 회사에 맞습니다

리스 계약이 건물·차량·설비·IT 장비·토지로 여러 유형에 걸쳐 있고, 회사코드마다 표시 정책이 다른 그룹사를 결산하는 재무회계팀에 맞습니다. 계약을 RE-FX 등으로 관리하면서 장부의 표시 위치를 별도로 점검하고 싶은 경우에도 출발점이 됩니다.

사용 방법

  1. 회계연도를 확인하고 필요하면 회사·기초자산 유형·보유 목적·장부 표시·전기일 기간·계약명·점검 코드·점검 결과를 고른 뒤 조회를 누릅니다(Enter 도 됩니다).
  2. 요약 숫자에서 점검한 계약 수와 표시 항목 이동 검토, 확인 필요, 주석 공시 점검 건수를 봅니다.
  3. 점검 코드를 골라 다시 조회해 해당 계약만 추립니다.
  4. 탭을 오가며 재무상태표 표시 항목, 기초자산 유형별 합계, 대사 결과를 확인합니다.
  5. 계약 행을 눌러 보유 목적·표시 항목·전표 라인을 확인합니다.
  6. 필요하면 현재 탭을 CSV 로 내려받습니다.

숫자를 믿을 수 있는가 — 검증 결과

이 화면의 데이터는 모두 가상의 검증용 샘플이며, 실제 고객사의 계약·금액은 쓰지 않았습니다.

대사식검사 건수차이
표시 항목별 사용권자산 합계 = 계약별 사용권자산 합계300
표시 항목별 리스부채 합계 = 계약별 리스부채 잔액 합계300
점검 기준 표시 합계 = 장부 표시 합계(사용권자산)300
기초자산 유형별 합계 = 전체 합계(사용권자산+리스부채)90
투자부동산 점검 기준 표시액 = 보유 목적 해당 계약 합계40
표시 이동 필요액 계약 합 = 유형별 합300

이와 별도로 리스부채의 유동과 비유동 합이 잔액과 다른 계약 2건(최대 22백만 원)은 화면 동작을 보이려고 의도적으로 넣은 예외이며, 대사 차이 건수와 섞지 않고 참고 대사로 따로 셉니다. 점검·확인 대상 12건(P01 3·P02 2·P03 2·P04 1·P05 2·P09 2)도 같은 이유로 넣은 예외입니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤OpenUI5 표준 컨트롤 — 조회조건 영역, 계약 표(sap.ui.table), 합계 표(sap.m.Table), 상세 팝업외부 라이브러리 없이 표준 컨트롤만 써서 사내망·보안 검토 부담을 줄입니다.
OData 구성화면은 앱 선언(manifest)에 적은 OData V2 서비스만 바라보고, 조회조건은 $filter, 정렬·페이징은 $orderby·$top·$skip 으로 보냅니다. 계약·전표 라인·표시 항목·유형·대사 다섯 개 엔티티셋과 표시 이동 검토 건수를 세는 함수 하나로 구성합니다.화면과 데이터를 갈라 두어 실제 SAP 서비스로 바꿀 때 화면을 고치지 않게 합니다.
서비스 구현조회·단건·생성·수정·삭제·함수 호출 여섯 가지를 처리하는 서비스 로직과 엔티티셋별 데이터날짜 조건과 함수 반환형을 서비스가 직접 처리해 화면이 값을 가공하지 않습니다.
판정·집계점검 코드 판정과 요약 계산은 서비스 응답을 컨트롤러 한 곳에서 모아 계산판정 순서를 한 곳에 두어 화면마다 결과가 달라지지 않게 합니다.
오류 안내서비스 정의를 못 읽은 경우와 요청이 실패한 경우를 구분해 안내연결 문제와 데이터 문제를 구분해 알려 줍니다.
테마sap_horizonSAP 표준 화면과 같은 색·간격으로 보이게 합니다.

앱 정보

항목내용
업무 영역재무회계(FI)
관련 기준서·대상 영역IFRS 16 리스(K-IFRS 제1116호) — 사용권자산·리스부채의 재무상태표 표시와 주석 공시
SAP 표준 T-codeFAGLL03 · FBL3N · FB03 · FS10N · RECN
화면 성격조회·점검 화면(탭 4개 + 계약 상세 팝업)
데이터 연동OData V2 서비스
SAP 표준 기능을 그대로 이어받은 부분 — 장부 금액은 표준 저널 항목(ACDOCA)의 사용권자산·리스부채 계정 라인 구조를 그대로 이어받고, 원전표 확인은 FB03, 계정 잔액 대조는 FS10N 이 계속 담당합니다. 이 화면은 그 위에 표시 위치와 주석 공시, 합계 대사라는 점검 관점을 더해 확장합니다.

실행 화면

실제로 돌아가는 화면 7종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 숫자는 모두 같은 자료에서 나온 것이라 화면끼리 맞춰 보셔도 됩니다.

처음 열었을 때와 조건으로 좁히기

처음 열었을 때 — 조회조건과 요약, 계약별 표시 점검
처음 열었을 때 — 조회조건과 요약, 계약별 표시 점검 — 조회조건 아래에 요약 숫자 일곱 가지가 뜨고, 아래 표는 계약마다 사용권자산·리스부채 금액과 장부·기준 표시를 나란히 놓습니다.

회계연도 2026 으로 자동 조회되어 계약 30건이 한 표에 나옵니다. 요약의 “표시 항목 이동 검토”는 4건으로, 점검 코드가 P01 또는 P04 인 계약 수를 함수로 받아 옵니다. 점검 필요는 장부 표시와 기준 표시가 달라 보이거나 주석 공시·잔액에서 확인할 것이 있다는 뜻이고, 판단은 회사가 합니다. 조회 버튼은 조회조건 영역의 오른쪽 끝에 있습니다.

조건으로 좁히기 — 점검 코드로 골라 조회
조건으로 좁히기 — 점검 코드로 골라 조회 — 점검 코드를 투자부동산 표시 확인(P01)으로 고르고 조회하면 해당 계약 3건만 남습니다.

임대나 시세차익 목적의 사용권자산이 투자부동산이 아닌 항목에 놓인 계약만 추려집니다. 계약명 칸에 글자를 넣고 Enter 를 눌러도 같은 방식으로 조회됩니다. “전체”로 둔 조건은 서버로 보내지 않으므로, 조건을 비우고 조회하면 처음 상태로 돌아갑니다.

표시 항목과 유형별 합계

재무상태표 표시 항목 — 장부 표시와 기준 표시 금액
재무상태표 표시 항목 — 장부 표시와 기준 표시 금액 — 표시 항목별로 장부 표시 금액과 점검 기준 표시 금액을 나란히 보여 줍니다.

사용권자산 별도 표시, 유형자산·투자부동산·기타자산에 합산된 사용권자산, 리스부채 별도 표시, 차입금·기타부채에 합산된 리스부채 줄이 회사별로 나옵니다. 두 금액이 다르면 어느 항목에서 어느 항목으로 옮겨 볼지 가늠할 수 있습니다. 합계 줄의 차이는 0이며, 실제 이동 여부는 회사가 판단합니다.

기초자산 유형별 합계 — 건물·차량·설비·IT 장비·토지
기초자산 유형별 합계 — 건물·차량·설비·IT 장비·토지 — 유형별 사용권자산과 리스부채, 표시 이동 필요액, 점검 계약 수를 견줍니다.

표시 이동 필요액은 장부 표시와 기준 표시가 다른 계약의 사용권자산 합계입니다. 건수로 세는 이동 검토(P01·P04)와 달리 주석 공시 점검 건(P02)의 계약도 위치가 다르면 금액에 들어가므로 두 숫자를 함께 봅니다.

대사 결과와 계약 상세

대사 결과 — 정합성 6식과 참고 대사
대사 결과 — 정합성 6식과 참고 대사 — 표시 항목 합계와 계약별 합계가 맞는지 정합성 대사 6건과 참고 대사 1건으로 보여 줍니다.

정합성 대사 6건은 모두 차이 0건입니다. 리스부채의 유동과 비유동 합이 잔액과 다른 계약 2건은 의도적 예외로 참고 대사에 따로 나오며, 최대 차이는 22백만 원입니다.

계약 상세 — 행을 누르면 표시 항목과 전표 라인까지
계약 상세 — 행을 누르면 표시 항목과 전표 라인까지 — 계약 행을 누르면 보유 목적, 장부·기준 표시, 주석 공시 여부와 장부 금액을 이룬 전표 라인이 열립니다.

아래 전표 라인은 계정별로 사용권자산 원가·감가상각누계·리스부채 유동·비유동 네 줄로 나뉩니다. 점검 필요 계약은 점검 내용을 읽고 표시 위치를 회사가 판단하며, 전표 번호로 FB03 에서 원전표를 열어 확인합니다.

좁은 화면

좁은 화면 — 같은 기능, 다른 배치
좁은 화면 — 같은 기능, 다른 배치 — 창이 좁으면 조회조건이 쌓이고 표는 가로로 넘겨 봅니다.

휴대폰이나 좁은 창에서도 요약 숫자와 탭을 그대로 쓸 수 있습니다. 기능은 같고 배치만 달라집니다.

화면 뒤에서 일어나는 일

화면은 조회조건을 $filter 로 만들어 OData 서비스에 보내고, 서비스는 계약별 장부 표시와 기준 표시를 견주어 점검 코드를 정해 돌려줍니다. 요약 숫자는 그 응답과 함수 호출 결과를 컨트롤러 한 곳에서 모아 계산하므로 탭마다 숫자가 달라지지 않습니다.

점검 판정 규칙 — 판정 조건 → 결과 상태 → 사용자 조치

우선순위판정 조건결과 상태코드사용자 조치
1보유 목적이 임대·시세차익인데 사용권자산이 투자부동산이 아닌 항목에 표시됨점검 필요P01투자부동산 해당 여부와 표시 항목 이동 검토
2리스부채 잔액이 유동 + 비유동과 다름점검 필요P05상환 일정과 잔액 재계산 확인
3사용권자산을 다른 자산 항목에 합산했는데 주석에 밝히지 않음점검 필요P02주석 공시 여부 확인
4리스부채를 다른 부채 항목에 합산했는데 주석에 밝히지 않음점검 필요P03주석 공시 여부 확인
5사용권자산 표시 위치가 회사 표시 정책과 다름점검 필요P04정책 변경 여부와 비교정보 확인
6보유 목적이 확인되지 않음확인 필요P09회사 판단 근거 확인
7위 어디에도 해당하지 않음정상P00조치 없음

한 계약에 둘 이상 해당하면 우선순위가 높은 코드 하나로 표시합니다.

처리 단계와 대사식

  1. 보유 목적과 회사 표시 정책으로 계약마다 사용권자산·리스부채의 점검 기준 표시를 정합니다.
  2. 장부 표시와 기준 표시, 주석 공시 여부, 유동·비유동 합을 견주어 점검 코드를 정합니다.
  3. 표시 항목별·유형별로 금액을 모으고 합계 줄을 만듭니다.
  4. 아래 7식으로 합계가 맞는지 확인합니다.
번호구분대사식
001정합성Σ 표시 항목별 장부 금액 = Σ 계약별 사용권자산
002정합성Σ 표시 항목별 장부 금액 = Σ 계약별 리스부채 잔액
003정합성Σ 점검 기준 표시 금액 = Σ 장부 표시 금액(사용권자산)
004정합성Σ 유형별(사용권자산+리스부채) = Σ 계약별 합계
005정합성점검 기준 투자부동산 표시액 = Σ(보유 목적 임대·시세차익) 사용권자산
006정합성Σ(장부 표시≠기준 표시) 계약 사용권자산 = Σ 유형별 이동액
007참고리스부채 유동 + 비유동 = 잔액(계약별, 의도적 예외 포함)

조회조건

조회조건필수기본값$filter 속성연산
회계연도필수2026Gjahreq
회사선택전체Bukrseq
기초자산 유형선택전체AssetClasseq
보유 목적선택전체PurposeFlageq
사용권자산·리스부채 장부 표시선택전체BsRou · BsLiabeq
전기일 시작·종료선택비움PostDatege · le
계약명선택비움ContractNamesubstringof
점검 코드·점검 결과선택전체CheckCode · CheckStatuseq

결과 컬럼

탭컬럼의미·산식
계약별 표시 점검사용권자산·리스부채 금액계약별 장부 금액과 유동·비유동 구분
계약별 표시 점검장부 표시·기준 표시놓인 항목과 보유 목적·정책으로 정한 항목
계약별 표시 점검점검 결과·코드·내용정상 / 점검 필요 / 확인 필요 와 P00~P09
재무상태표 표시 항목장부·기준 표시 금액·차이표시 항목별 합과 그 차이(합계 줄은 줄의 합)
기초자산 유형별 합계표시 이동 필요액·점검 계약 수위치가 다른 계약의 사용권자산 합 · 코드가 정상이 아닌 계약 수
대사 결과좌변·우변·검사 건수·차이 건수대사식 양쪽 값과 검사 대상 수, 달라진 건수

좁은 화면에서 달라지는 것

조회조건이 위아래로 쌓이고 요약 숫자가 줄바꿈되며, 표는 가로로 넘겨 봅니다. 탭·상세 팝업·CSV 는 그대로 동작합니다.

파일 구성

index.html · Component.js · manifest.json
controller/  Main.controller.js 등
view/        Main.view.xml · DetailDialog.fragment.xml
model/       formatter.js · ErrorHandler.js
css/ · i18n/
odata/       서비스 정의(metadata) · 서비스 구현 · 엔티티셋별 데이터
media/       소개 영상

SAP 표준 기능 확장 포인트

표준 실행과 결산 보고는 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다.

표준으로 되는 것과 안 되는 것

하고 싶은 일표준 화면이 앱이 더하는 관점
계정 잔액·라인 확인FS10N · FAGLL03 · FBL3N 으로 충분합니다계약 단위로 어느 표시 항목에 들어갔는지를 한 표에서 봅니다
전표 확인FB03 으로 충분합니다계약 상세에서 전표 번호로 바로 이어집니다
리스 계약 조건 확인RE-FX 를 쓰면 RECN 에서 확인합니다계약 조건 대신 표시 위치와 공시 여부를 점검합니다
표시 위치·주석 공시 점검표준 화면에는 점검 관점의 비교가 없어 보통 엑셀로 대조합니다장부 표시와 기준 표시, 주석 공시 여부를 같은 틀로 견줍니다

T-code 별 연계 지점

T-code이름연계
FAGLL03G/L 계정 라인 아이템 조회같은 저널 항목(ACDOCA)에서 오는 사용권자산·리스부채 계정 라인을 이어서 확인합니다. 이 앱의 표시 항목 합계를 계정별 라인 합과 맞춰 보는 지점이고, 법정·감사 대응은 표준 화면에 둡니다.
FBL3NG/L 계정 라인 아이템(전통 화면)계정별 라인을 기존 방식으로 대조해 온 팀이 같은 값을 계속 확인할 수 있습니다. 기존 리포트를 없앨 필요는 없습니다.
FB03전표 조회계약 상세의 전표 번호로 원전표를 엽니다. 이 앱 결과에서 표준으로 가는 가장 짧은 길입니다.
FS10NG/L 계정 잔액 조회표시 항목 합계를 계정 잔액과 견줄 때 씁니다. 두 화면의 숫자가 다르면 계정 매핑부터 확인합니다.
RECN부동산 계약(RE-FX)리스 계약을 RE-FX 로 관리하는 경우 보유 목적과 계약 조건을 확인하는 출발점입니다(항목 매핑은 확인 필요).

S/4HANA 분석 스택과의 자리

표준 CDS 분석 쿼리나 Fiori 분석 앱은 계정 중심의 집계에 강합니다. 이 앱은 계약을 한 줄로 보고 점검 코드를 붙이는 점검 화면이라 그 옆에서 같은 원천을 다른 관점으로 읽습니다. 어느 표준 분석 앱을 함께 쓸지는 회사 환경에 따라 달라 확인 필요입니다.

확장 포인트 — 운영에서 실제로 손대는 자리

자리무엇을 손대나비고
계정 매핑사용권자산·리스부채 계정이 어느 표시 항목인지회계팀이 직접 관리
보유 목적·기초자산 유형계약 마스터의 확장 필드 또는 매핑 테이블확인 필요
표시 정책회사코드별 별도 표시·합산 표시 선택변경 이력 관리
주석 공시 관리합산 표시 항목을 주석에 밝혔는지 표시하는 값공시 담당자와 합의
권한회사코드 단위 DCL보안 담당자

요구사항 매핑표

기준서요구사항대응 기능원천 데이터비고
IFRS 16 리스(K-IFRS 제1116호)사용권자산을 재무상태표에 별도로 표시하거나 어느 항목에 포함했는지 주석에 공시계약별 표시 점검 · P02사용권자산 계정 라인문단번호는 원문 확인 전이라 적지 않음
IFRS 16 리스(K-IFRS 제1116호)리스부채를 재무상태표에 별도로 표시하거나 어느 항목에 포함했는지 주석에 공시계약별 표시 점검 · P03리스부채 계정 라인문단번호는 원문 확인 전이라 적지 않음
IFRS 16 리스(K-IFRS 제1116호)투자부동산 정의에 해당하는 사용권자산의 표시P01 · 대사 005보유 목적 설정목적 미확인 건은 P09 — 확인 필요
IFRS 16 리스(K-IFRS 제1116호)리스부채 유동·비유동 구분과 잔액 일치P05 · 참고 대사 007계약별 상환 일정판단은 회사와 감사인
회사 표시 정책사용권자산·리스부채 표시 위치의 일관성P04회사 표시 정책 설정정책 변경 시 비교정보 확인 필요

합산 표시의 적정성과 공시의 충분성은 이 화면이 판단하지 않습니다. 기준서 문단번호는 원문 확인 전이라 적지 않았습니다.

CDS 구성

장부 금액은 표준 저널 항목 CDS 뷰 위에서 가져오고, 계약 속성과 표시 매핑은 회사별 설정 테이블에서 읽어 계약 단위로 펼칩니다. 아래 코드는 구조를 보이기 위한 스케치이며 이름은 예시입니다. 확인하지 못한 설정 값은 “확인 필요”입니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준(매핑)ZLBS_ACCTMAP · ZLBS_POLICY계정 → 표시 항목, 회사 → 표시 정책매핑이 바뀌어도 뷰 코드를 안 고치려고
차원ZI_LeaseBsItem표시 항목 코드와 이름화면 표와 대사가 같은 항목 목록을 쓰도록
큐브ZI_LeaseBsContractCube계약별 사용권자산·리스부채 장부 금액집계 위치를 서버로 고정하려고
판정ZI_LeaseBsCheck점검 코드 판정판정 순서를 한 곳에 두려고
쿼리ZC_LeaseBsContractQuery조회조건·정렬·화면 노출 필드화면 계약을 한 곳에 두려고
권한ZC_LeaseBsContractQuery (DCL)회사코드 권한집계 단계에서 걸러 새어 나가지 않게
서비스ZUI_LeaseBsCheck_O2OData V2 서비스 노출화면 선언의 서비스 주소가 이것을 가리키도록

① 매핑 테이블 — 계정과 표시 항목, 회사 표시 정책

표시 위치는 코드가 아니라 데이터로 정합니다. 계정이 새로 생기거나 회사의 표시 정책이 바뀌면 이 두 테이블만 고칩니다. 운영에서는 이 값을 회계팀이 관리해야 하므로 변경 권한과 이력이 중요합니다.

" ─────────────────────────────────────────────
" ZLBS_ACCTMAP : 계정 → 재무상태표 표시 항목
" 역할  : 사용권자산·리스부채 계정이 어느 표시 항목에 놓이는지 정한다
" 이유  : 계정이 늘어도 뷰를 고치지 않고 행만 추가하려고
" ─────────────────────────────────────────────
@EndUserText.label : '리스 표시 항목 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
define table zlbs_acctmap {
  key mandt   : mandt not null;
  key racct   : racct not null;       " 계정
  item_code   : abap.char(3);         " RSP / PPE / IVP / OTA / LSP / BOR / OTL
  side        : abap.char(1);         " A 사용권자산  L 리스부채
}

@EndUserText.label : '회사별 표시 정책'
define table zlbs_policy {
  key mandt   : mandt not null;
  key bukrs   : bukrs not null;
  rou_policy  : abap.char(1);         " S 별도 표시  M 기초자산 항목에 합산
  liab_policy : abap.char(1);         " S 별도 표시  M 차입금에 합산
}

② 차원 — 표시 항목

화면의 재무상태표 표시 항목 탭과 대사가 같은 목록을 쓰도록 차원 뷰를 따로 둡니다. 항목 코드는 매핑 테이블의 값과 같아야 하며, 이름은 화면 언어에 맞춰 텍스트 뷰로 분리하는 방식이 일반적입니다.

" ZI_LeaseBsItem : 표시 항목 차원 — 화면 표와 대사가 같은 목록을 쓴다
@AbapCatalog.viewEnhancementCategory: [#NONE]
@Analytics.dataCategory: #DIMENSION
@ObjectModel.representativeKey: 'ItemCode'
define view entity ZI_LeaseBsItem
  as select distinct from zlbs_acctmap
{
  key item_code as ItemCode,
      side      as ItemSide
}

③ 큐브 — 계약별 장부 금액

장부 금액은 표준 저널 항목 뷰에서 계정 라인을 모아 계약 단위로 만듭니다. 계약 번호를 어느 필드에서 가져올지(오더·참조 필드 등)는 회사마다 달라 확인 필요이며, 통화 필드를 금액에 묶어 두어야 합계가 통화 혼합 없이 계산됩니다.

" ZI_LeaseBsContractCube : 계약별 사용권자산·리스부채 장부 금액
@AbapCatalog.viewEnhancementCategory: [#NONE]
@Analytics.dataCategory: #CUBE
define view entity ZI_LeaseBsContractCube
  as select from I_JournalEntryItem as j
    inner join   zlbs_acctmap       as m on m.racct = j.GLAccount
{
  key j.CompanyCode,
  key j.FiscalYear,
  key j.ReferenceDocument      as ContractNo,   " 계약 번호 출처는 확인 필요
  key m.item_code              as BsItem,
      m.side                   as Side,
      j.CompanyCodeCurrency,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      sum( j.AmountInCompanyCodeCurrency ) as BookAmount,
      max( j.PostingDate )     as PostingDate
}
where j.Ledger = '0L'
group by j.CompanyCode, j.FiscalYear, j.ReferenceDocument, m.item_code, m.side,
         j.CompanyCodeCurrency

④ 판정 — 점검 코드

점검 코드의 우선순위는 case 문의 순서로 고정합니다. 판정 순서를 화면이 아니라 뷰에 두면 어느 화면에서 열어도 같은 결과가 나옵니다. 기준 표시는 보유 목적과 회사 정책에서 파생한 값이며, 목적이 비어 있으면 판단하지 않고 P09 로 보냅니다.

" ZI_LeaseBsCheck : 점검 코드 판정 (우선순위 = 앞선 when 이 이긴다)
define view entity ZI_LeaseBsCheck
  as select from ZI_LeaseBsContractBase as c      " 계약 속성 + 장부·기준 표시 (생략)
{
  key c.CompanyCode, key c.FiscalYear, key c.ContractNo,
  case
    when c.PurposeFlag = 'R' and c.BsRou <> 'IVP'                      then 'P01'
    when c.LiabAmount <> c.LiabCurrent + c.LiabNonCurrent              then 'P05'
    when c.BsRou in ('PPE','OTA') and c.DiscRou  = ' '                 then 'P02'
    when c.BsLiab in ('BOR','OTL') and c.DiscLiab = ' '                then 'P03'
    when c.PurposeFlag <> 'R' and c.BsRou <> c.ExpRou                  then 'P04'
    when c.PurposeFlag = 'C'                                           then 'P09'
    else 'P00'
  end as CheckCode
}

⑤ 쿼리 — 조회조건과 화면 노출 필드

화면이 받는 필드와 필터 가능한 필드를 소비 뷰에서 한 번 정하면 서비스와 화면이 같은 계약을 봅니다. 회계연도와 회사코드는 필수 조건으로 두어 대용량에서도 범위를 좁히게 합니다.

" ZC_LeaseBsContractQuery : 화면 계약
@AccessControl.authorizationCheck: #CHECK
@Metadata.allowExtensions: true
@Search.searchable: true
define view entity ZC_LeaseBsContractQuery
  as projection on ZI_LeaseBsCheck
{
  @Consumption.filter: { mandatory: true, selectionType: #SINGLE }
  key CompanyCode,
  @Consumption.filter: { mandatory: true, selectionType: #SINGLE }
  key FiscalYear,
  key ContractNo,
  @Search.defaultSearchElement: true
  ContractName,
  @Consumption.filter.selectionType: #SINGLE
  CheckCode,
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  RouAmount,
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  LiabAmount
}

⑥ 권한 — 회사코드 단위 DCL

권한은 화면에서 숨기지 않고 집계 단계에서 겁니다. 드릴다운에만 걸면 합계로 다른 회사의 숫자가 새어 나갑니다. 권한 오브젝트와 필드 매핑은 회사 보안 설계에 따르며 확인 필요입니다.

@EndUserText.label: '리스 표시 점검 — 회사코드 권한'
@MappingRole: true
define role ZC_LeaseBsContractQuery {
  grant select on ZC_LeaseBsContractQuery
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

⑦ 서비스 정의와 바인딩 — OData V2 로 노출

화면이 바라보는 서비스는 서비스 정의에서 노출할 뷰를 정하고 바인딩으로 게시해 만듭니다. 서비스를 활성화한 뒤 앱 선언의 서비스 주소를 이 서비스로 바꾸면 화면은 그대로 동작합니다.

@EndUserText.label: '리스 표시 점검 서비스'
define service ZUI_LeaseBsCheck {
  expose ZC_LeaseBsContractQuery as ContractSet;
  expose ZC_LeaseBsStmtQuery     as StmtSet;
  expose ZC_LeaseBsClassQuery    as ClassSet;
  expose ZC_LeaseBsReconQuery    as ReconSet;
  expose ZC_LeaseBsDetailQuery   as DetailSet;
}
" 서비스 바인딩 ZUI_LeaseBsCheck_O2 : 바인딩 유형 OData V2 - UI, 게시 후 활성화

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다.

해야 할 일무엇을 정하나정하지 않으면누가
계정 → 표시 항목 매핑사용권자산·리스부채 계정이 어느 표시 항목인지화면 숫자가 재무상태표와 어긋나 첫 점검에서 막힙니다회계팀
회사별 표시 정책별도 표시·합산 표시 중 무엇인지기준 표시를 잘못 정해 점검이 어긋납니다회계팀·감사 대응 담당
보유 목적 출처목적 값을 어느 필드에서 읽을지투자부동산 점검이 전부 P09 로 쏠립니다계약 관리 담당
주석 공시 관리합산 항목 공시 여부를 어디에 기록할지P02·P03 판정 기준이 없습니다공시 담당
대사 체계FS10N·FAGLL03 과 맞출 항목두 화면 숫자가 다를 때 원인을 못 찾습니다회계팀
권한 설계회사코드 단위 권한 기준남의 회사 숫자가 합계로 보입니다보안 담당
전송(TR) 순서매핑 테이블 → 뷰 → 서비스 순서비스가 먼저 활성화되어 빈 결과가 나옵니다Basis
서비스 활성화·주소 교체게시한 서비스 활성화와 앱 선언의 서비스 주소 교체화면이 샘플 서비스를 계속 봅니다Basis·개발

운영 데이터로 갈 때

계약 단위 조회는 서버 페이징으로 충분한 규모가 많습니다. 전표 라인이 대용량이면 집계 뷰를 미리 만들어 두고 회계연도·회사코드를 필수 조건으로 두며, 전표 라인은 계약을 고른 뒤에만 읽도록 합니다. 응답 시간 기준은 실측 뒤에 정하는 것이 맞아 확인 필요입니다.

자주 묻는 질문

도입을 검토하실 때 자주 나오는 질문을 네 묶음으로 정리했습니다.

숫자와 판정

이 화면이 재무상태표 표시가 맞다 틀리다를 판정해 주나요?

아닙니다. 계약별 장부 표시와 회사 표시 정책·보유 목적으로 정한 점검 기준 표시를 견주어 달라 보이는 곳을 “점검 필요”로, 회사가 먼저 판단해야 하는 곳을 “확인 필요”로 알려 주는 점검 도구입니다. 표시 위치의 적정성과 주석 공시의 충분성, 최종 판단은 회사와 감사인이 합니다.

점검 코드는 몇 가지이고 한 계약에 둘 이상 걸리면 어떻게 되나요?

P01(투자부동산 표시 확인), P05(리스부채 재계산 차이), P02(사용권자산 표시 항목 주석), P03(리스부채 표시 항목 주석), P04(표시 정책 확인), P09(보유 목적 확인)와 정상(P00)입니다. 둘 이상 해당하면 이 순서의 앞선 코드 하나로만 표시하므로, 앞선 코드를 정리한 뒤 다시 조회하면 다음 코드가 드러날 수 있습니다.

사용권자산을 유형자산에 합산해 표시한 계약은 모두 “점검 필요”인가요?

아닙니다. 합산 표시 자체는 문제로 보지 않고, 합산한 표시 항목을 주석에 밝히지 않은 계약만 P02 로 띄웁니다. 주석에 밝힌 계약은 정상으로 남습니다. 주석 공시가 충분한지는 이 화면이 판단하지 않습니다.

리스부채 재계산 차이는 어떻게 구하나요?

계약별로 유동 부분과 비유동 부분을 더한 값과 장부의 리스부채 잔액을 견줍니다. 샘플 데이터에서는 두 계약이 각각 15백만 원, 22백만 원 다르게 들어 있어 P05 로 나옵니다. 차이의 원인은 화면이 단정하지 않으며 상환 일정과 전표를 확인해야 합니다.

합계 대사가 맞는데 점검 필요 계약이 있는 건 모순 아닌가요?

모순이 아닙니다. 대사는 표시 항목별로 모은 합계가 계약별 합계와 같은지를 보는 산술 검산이고, 점검 코드는 그 금액이 놓인 위치와 공시 여부를 보는 판단 보조입니다. 금액 합계는 맞아도 위치가 기준과 다를 수 있습니다.

샘플 데이터는 실제 고객 자료인가요?

아닙니다. 가상의 회사코드 1000·2000과 계약 30건, 전표 라인 120건으로 만든 검증용 샘플이며 실제 고객사의 계약·계정·금액을 쓰지 않았습니다. 장부와 기준이 달라 보이는 12건은 화면 동작을 보이려고 의도적으로 넣은 예외입니다.

화면과 조작

조회는 어떻게 하나요?

회계연도를 4자리로 입력하고 조회 버튼을 누르거나 Enter 를 누릅니다. 회사·기초자산 유형·보유 목적·장부 표시·전기일 기간·계약명·점검 코드·점검 결과는 선택이며, “전체”로 두면 그 조건은 서버로 보내지 않습니다. 화면을 처음 열면 2026 으로 자동 조회합니다.

요약 숫자 일곱 가지는 무엇인가요?

점검한 계약 수, 표시 항목 이동 검토(함수 호출 결과), 확인 필요 계약, 주석 공시 점검 계약, 리스부채 재계산 차이 계약, 표시 항목별 장부와 기준의 차이 절댓값 합(백만 원), 정합성 대사 차이 건수입니다. 샘플 기준으로 30·4·2·4·2·12,650·0 이 나옵니다.

행을 누르면 무엇이 열리나요?

보유 목적, 장부·기준 표시 항목, 표시 항목 주석 여부, 점검 내용과 함께 그 계약의 장부 금액을 이룬 전표 라인이 계정별로 열립니다. 전표 번호는 FB03 으로 원전표를 확인하는 출발점이 됩니다.

결과를 파일로 가져갈 수 있나요?

현재 탭의 결과를 UTF-8(BOM) CSV 로 내려받을 수 있고 파일 이름은 기능명과 탭 이름입니다. 엑셀에서 한글이 깨지지 않도록 BOM 을 붙입니다.

좁은 화면에서도 쓸 수 있나요?

창이 좁아지면 조회조건이 위아래로 쌓이고 요약 숫자와 표가 줄바꿈되며 표는 가로로 넘겨 봅니다. 기능은 같고 배치만 달라집니다.

표준 연계와 기준서

이 화면이 SAP 표준 T-code 를 대신하나요?

대신하지 않습니다. 원천 라인은 FAGLL03·FBL3N, 전표는 FB03, 계정 잔액은 FS10N, 리스 계약 조건은 RECN 처럼 표준 화면이 담당하고 이 화면은 표시 위치와 주석 공시, 합계 대사라는 점검 관점을 더해 확장합니다. 기존 리포트를 없앨 필요는 없습니다.

어느 기준서의 어떤 요구를 다루나요?

IFRS 16 리스(K-IFRS 제1116호)에서 리스이용자가 사용권자산과 리스부채를 재무상태표에 별도로 표시하거나, 다른 항목에 포함했다면 그 항목을 주석에 공시하는 요구, 투자부동산 정의에 해당하는 사용권자산의 표시 요구를 다룹니다. 기준서 문단번호는 원문 확인 전이라 적지 않았습니다.

IFRS 16 은 언제부터 적용되나요?

IFRS 16 과 K-IFRS 제1116호는 2019년 1월 1일 이후 개시하는 회계연도부터 적용되는 기준으로 알려져 있습니다. 개별 회사의 경과규정 적용 여부는 이 글에서 확인하지 못해 다루지 않았으며 확인 필요입니다.

투자부동산 판단은 어떻게 하나요?

보유 목적이 임대 또는 시세차익으로 기록된 계약의 사용권자산이 투자부동산 항목에 놓였는지만 봅니다. 투자부동산 정의에 해당하는지의 판단은 회사가 하며, 보유 목적이 비어 있거나 불분명한 계약은 판단하지 않고 P09 로 분리합니다.

회사별 표시 정책은 어디에 두나요?

샘플에서는 회사 1000 이 사용권자산·리스부채를 별도 표시, 회사 2000 이 기초자산 항목·차입금에 합산하는 정책으로 설정되어 있습니다. 실제 운영에서는 정책 값을 매핑 테이블에 두고 변경 이력을 함께 관리해야 하며, 정책 변경 시 비교정보 처리는 확인 필요입니다.

도입과 운영

도입하면 무엇이 달라지나요?

결산마다 계정 잔액과 주석 자료, 계약 목록을 따로 맞추던 일을 한 화면에서 이어 보게 됩니다. 어느 계약의 표시 위치와 주석 공시를 먼저 확인할지 정해 두고 시작할 수 있어 확인 순서가 앞당겨집니다. 효과의 크기는 회사의 계약 수와 현재 점검 방식에 따라 다르며 확인 필요입니다.

누가 쓰나요?

리스 회계를 맡은 재무회계팀과 결산 담당자, 주석 공시를 준비하는 담당자가 주 사용자이고 감사 대응 때 같은 화면을 근거 자료로 열어 볼 수 있습니다. 조회·점검 화면이라 전표를 만들거나 수정하지 않습니다.

데이터는 어디서 가져오나요?

장부 금액은 표준 저널 항목(ACDOCA)의 사용권자산·리스부채 계정 라인에서, 계약 속성과 표시 매핑은 회사별 설정에서 가져오는 구성을 전제로 합니다. 계정과 매핑의 실제 값은 회사마다 달라 확인 필요입니다.

실제 SAP 데이터로 연결하려면 무엇을 바꾸나요?

화면은 앱 선언에 적힌 OData 서비스만 바라보므로 같은 구조의 서비스를 연결하면 화면을 고치지 않습니다. 서비스는 CDS 뷰 위에 서비스 정의와 바인딩을 게시해 만들고, 앱 선언의 서비스 주소를 바꿉니다. 소요 기간은 매핑 합의 범위에 따라 달라 확인 필요입니다.

권한과 보안은 어떻게 하나요?

회사코드 단위 권한을 CDS 접근 제어(DCL)로 집계 단계에 걸어 두는 구성을 권합니다. 화면에서 숨기는 방식은 합계로 새어 나갈 수 있어 서비스 쪽에서 거릅니다. 외부 라이브러리 없이 OpenUI5 표준 컨트롤만 쓰고 외부로 데이터를 보내지 않습니다.

계약이 많아지면 느려지지 않나요?

리스 계약은 수천 건 규모가 일반적이라 계약 단위 조회는 서버 페이징으로 충분한 경우가 많고, 전표 라인은 계약을 고른 뒤에만 읽습니다. 수백만 건 이상의 전표를 매번 집계해야 한다면 집계 뷰를 미리 만들고 회계연도·회사코드를 필수 조건으로 두는 설계가 필요하며 실측은 확인 필요입니다.

계정 체계나 매핑이 바뀌면 어떻게 하나요?

표시 항목과 계정의 연결은 매핑 테이블 한 곳에 있어 계정이 새로 생기거나 표시 정책이 바뀌면 그 테이블만 고칩니다. 화면과 판정 로직은 매핑 값을 읽을 뿐이라 코드를 바꾸지 않습니다. 변경은 이송 요청으로 이력을 남깁니다.

결과를 감사인에게 근거로 낼 수 있나요?

판정 규칙, 대사식, 검사 건수와 차이가 화면과 CSV 에 같은 틀로 남아 설명 자료로 쓸 수 있습니다. 다만 이 화면은 점검 도구이며 표시의 적정성과 공시의 충분성에 대한 최종 판단은 회사와 감사인에게 있습니다.