SAP 고객 금융 이자수익 범주 점검 — 할부·대여 이자가 영업·투자·재무 중 맞는 범주에 놓였는지 정책표로 다시 따지기
정책표로 다시 정하는 범주 · 기록 범주와 재계산 범주의 나란히 보기 · 이자 금액 재계산 · 판단 보류를 숨기지 않는 확인 필요 · 스스로 하는 정합성 대사 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지
소개 영상블로그 목차 순서대로 · 자막 포함9개 장면표지 → 처음 연 화면 → 점검 필요 건 → 행 상세 → 범주별 합계 → 이자 재계산 → 정책표 → 대사 → 정리
도입 포인트 — 이 앱을 사용해야 하는 이유
분기 결산에서 고객 금융 손익은 늘 같은 질문을 남깁니다. 이 이자수익은 영업범주인가 투자범주인가, 이 자금조달 이자비용은 재무범주인가 영업범주인가, 그 숫자가 다시 계산한 값과 맞는가. IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호)는 손익을 영업 · 투자 · 재무 범주 등으로 나누도록 요구하고, 고객에게 금융을 제공하는 일이 주된 사업활동인 회사에는 그 손익이 어디에 놓이는지가 영업이익이라는 소계를 직접 움직입니다. 이 앱은 그 세 질문을 한 화면에 붙여, 회사가 정한 정책표로 범주를 다시 정하고 이자 금액을 다시 계산해 장부와 견줍니다.
핵심 포인트 여섯 가지
| 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 정책표로 다시 정하는 범주 | 주된 사업활동 여부 · 금융 유형 · 판매 연계의 조합마다 정책 범주를 한 표로 두고, 모든 손익 건에 같은 표를 적용합니다. | 계정 단위로 범주를 박아 두고, 예외는 담당자의 기억으로 처리합니다. |
| ② 기록 범주와 재계산 범주를 나란히 | 건마다 장부에 기록된 범주와 정책표로 정한 범주를 보여 주고, 다르면 이동 필요 금액과 점검 코드를 붙입니다. | 결산 때 계정 잔액을 엑셀로 내려 범주별로 다시 묶어 봅니다. |
| ③ 금액까지 다시 계산 | 평균 원금 · 연 이자율 · 일수로 이자를 다시 구해 장부와 견주고, 허용 범위(1,000원)를 넘는 차이만 걸러 냅니다. | 범주만 보고 금액은 장부를 믿습니다. 틀린 금액은 감사에서 드러납니다. |
| ④ 확인 필요를 숨기지 않는 판단 보류 | 대여가 판매 계약과 이어진 것인지 확정되지 않은 건은 범주를 억지로 정하지 않고 확인 필요로 따로 세웁니다. | 애매한 건은 일단 영업범주에 두고 넘어갑니다. |
| ⑤ 합계가 맞물리는지 스스로 검산 | 계약별 · 건별 · 범주별 합계와 재계산 범주 합계가 서로 맞는지 화면이 매번 다시 잽니다. | 화면마다 숫자가 달라 보이면 어느 것이 맞는지 회의를 엽니다. |
| ⑥ 사내망 · 보안 친화 | OpenUI5 표준 컨트롤만 쓰고 외부 차트 라이브러리를 들이지 않습니다. 서비스는 OData V2 로 열려 있어 연계 설계가 단순합니다. | 라이브러리 하나를 들이려면 보안 검토부터 거칩니다. |
사례로 보는 효과 — 12건, 2억 6천만 원이 움직입니다
이 자료의 가상 회사 두 곳에는 계약 20건과 분기별 손익 건 60건이 있습니다. 장부만 보면 모두 이자 손익으로 잘 기록된 것처럼 보입니다. 정책표로 다시 정하면 12건이 점검 필요로 걸리고, 그 건들의 범주 이동 필요 금액은 합쳐 259백만 원입니다. 회사 1000 은 73.5백만 원(6건), 회사 2000 은 185.5백만 원(6건)입니다. 별도로 3건(98.7백만 원)은 대여가 판매와 이어진 것인지 확정되지 않아 확인 필요로 남고, 이자 재계산에서는 2건이 허용 범위를 넘는 차이(+18,400원, −7,300원)로 걸립니다.
가장 흔한 어긋남은 두 가지입니다. 고객 금융이 주된 사업활동인 사업부의 할부 이자가 투자범주나 재무범주에 기록된 경우(회사 1000 의 세 건), 그리고 판매와 분리된 고객 대여금 이자가 영업범주에 기록된 경우(회사 2000 의 세 건)입니다. 둘 다 계정만 보면 이자수익이라 문제가 보이지 않고, 계약의 성격을 알아야 어긋남이 드러납니다.
재계산 이자
평균 원금 × 연 이자율 × 일수 ÷ 365 (원 미만 반올림)
장부 이자와의 차이가 1,000원 이내면 같다고 보고, 넘으면 점검 필요로 걸립니다. 분기마다 일수는 90 · 91 · 92 일입니다.
도입하면 달라지는 것
- 결산 준비 — 범주 재분류 엑셀과 별도 대사표가 한 화면의 점검 결과로 대체됩니다.
- 회의의 주제 — “이 건은 어느 범주인가”를 매번 새로 논쟁하지 않고, 정책표의 어느 행을 바꿀지를 이야기합니다.
- 감사 대응 — 정책 근거 문장과 건별 비교가 한 화면에 있어 설명 자료를 따로 만들지 않습니다.
- 애매한 건의 가시성 — 판단이 보류된 건이 영업범주 속에 묻히지 않고 확인 필요로 따로 보입니다.
이런 회사에 맞습니다
S/4HANA(ACDOCA)를 쓰면서 할부금융 · 리스성 대여 · 고객 대여금 이자를 다루는 제조 · 유통 · 서비스 회사, 고객 금융이 한 사업부의 주된 사업활동인 그룹사, 그리고 IFRS 18 적용에 앞서 손익 범주 정책을 점검해 보려는 재무회계팀에 맞습니다. 고객 금융이 사업의 전부인 금융회사는 별도 요구사항이 있으므로 이 앱의 정책표를 그대로 쓰기 어렵습니다.
숫자를 믿을 수 있는가 — 검증 결과
점검 도구에서 가장 비싼 질문은 “이 숫자 맞아?” 입니다. 그래서 만드는 쪽에서 먼저 대사식을 세워 두고 전수로 돌렸습니다. 아래는 이 사례 데이터의 결과입니다.
| 대사식 | 검사 건수 | 차이 |
|---|---|---|
| 계약별 장부 손익 합계 = 손익 건별 금액 합계 (R01) | 20 | 0 |
| 계약별 영업+투자+재무+그 밖의 범주(장부) = 장부 손익 합계 (R02) | 20 | 0 |
| 범주별 장부 금액 = 해당 범주로 기록된 건별 금액 합계 (R03) | 10 | 0 |
| 회사별 재계산 범주 금액 합계 = 장부 범주 금액 합계 (R04) | 2 | 0 |
| 건별 (장부 − 재계산) 차이 합계 = 장부 이자 합계 − 재계산 이자 합계 (R05) | 60 | 0 |
| 계약별 점검 필요 건수 합계 = 손익 건별 점검 필요 건수 — 참고 (R06) | 20 | 0 |
여섯 가지 대사식이 모두 차이 0 입니다. 다섯 식은 합계가 맞물리는지, 한 식은 건수가 맞물리는지를 봅니다. 의도적으로 넣은 예외(점검 필요 12건 · 확인 필요 3건 · 이자 재계산 차이 2건)는 대사 차이가 아니라 점검 결과입니다 — 대사는 화면의 산수가 맞는지를, 점검은 장부가 정책과 맞는지를 보기 때문입니다. 화면 쪽은 이와 별도로 브라우저 자동화로 돌려 확인했습니다.
도입 후 쓰는 순서
- 회계연도(필수)를 입력하고 회사 · 금융 유형 · 주된 사업활동 · 기록 범주 · 전기일 · 고객 이름 · 점검 코드 · 점검 결과는 필요한 것만 고른 뒤 조회를 누릅니다.
- 위쪽 요약에서 점검 필요 · 확인 필요 · 범주 이동 필요 금액을 먼저 봅니다.
- 손익 건별 점검 탭에서 점검 결과를 점검 필요로 걸러 기록 범주와 재계산 범주를 견줍니다.
- 행을 눌러 같은 계약의 분기별 건을 비교하고, 어느 정책 행이 적용됐는지 범주 정책표 탭에서 확인합니다.
- 이자 재계산 근거 탭에서 금액 차이가 난 건을 봅니다.
- 대사 결과 탭에서 화면의 합계가 서로 맞는지 확인하고, 필요하면 CSV 로 내려받습니다.
실행 화면
실제로 돌아가는 화면 7종을 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 하는 자리이고 왜 그렇게 두었는지를 아래에 적었습니다. 회사 · 고객 · 금액은 모두 가상이고 같은 자료에서 나온 숫자라 화면끼리 서로 맞춰 보셔도 됩니다.
처음 열었을 때

화면을 열면 2026 으로 자동 조회되어 첫 화면부터 숫자가 차 있습니다. 위쪽 요약은 점검한 손익 건수 · 점검 필요 · 확인 필요 · 범주 이동 필요 금액 · 이자 재계산 차이 건수 · 정합성 대사 차이 건수 여섯 칸이고, 그 아래로 탭 여섯 개가 이어집니다. 조회조건은 회사 · 금융 유형 · 주된 사업활동 · 기록 범주 · 전기일 · 고객 이름 · 점검 코드 · 점검 결과이며 전체를 고르면 그 조건은 질의에서 빠집니다.
손익 건을 범주로 견주기

핵심 화면입니다. 같은 이자수익이라도 사업부가 고객 금융을 주된 사업활동으로 하는지, 대여가 판매와 이어져 있는지에 따라 정책표가 가리키는 범주가 다릅니다. 기록 범주와 재계산 범주가 다르면 그 건의 금액이 이동 필요 금액으로 잡히고 코드와 점검 내용이 붙습니다. 이 자료에서는 60건 가운데 12건이 점검 필요로 걸립니다.

한 건만 보면 맥락이 없습니다. 상세 창은 같은 계약의 1~3분기 건을 위아래로 놓아 어느 분기부터 범주가 어긋났는지 보여 줍니다. 계약의 금융 유형 · 주된 사업활동 · 판매 연계 같은 속성도 함께 적혀 있어 정책표의 어느 행이 적용됐는지 따라가기 쉽습니다.
범주별 합계와 이자 재계산

범주를 옮기면 소계가 얼마나 움직이는지가 한눈에 보입니다. 회사 1000 은 투자·재무·범주 미지정으로 기록된 금액이 영업범주로 돌아가야 하고, 회사 2000 은 영업범주로 기록된 분리 대여금 이자가 투자범주로 가야 합니다. 판단 보류 행은 회사가 판매 연계 여부를 확정하기 전까지 비워 두는 칸입니다.

범주가 맞아도 금액이 틀릴 수 있습니다. 손익 건마다 기간 평균 원금 · 연 이자율 · 일수를 적고 같은 산식으로 다시 계산해 장부 이자와 비교합니다. 차이가 허용 범위(1,000원)를 넘으면 점검 필요로 걸립니다. 산식은 컬럼에 그대로 적혀 있어 현업이 손으로 검산할 수 있습니다.
정책표와 대사

재계산의 기준은 코드가 아니라 이 표입니다. 정책이 바뀌면 이 표만 고치면 되도록 분리해 두었습니다. 근거 문장이 함께 있어 감사인에게 왜 이 건이 투자범주인지를 설명할 때 그대로 인용할 수 있습니다.

화면이 보여 주는 숫자가 서로 맞는지를 화면이 스스로 검산합니다. 계약별 합계와 건별 합계, 범주별 합계와 건별 합계, 재계산 범주 합계와 장부 범주 합계가 맞물리는지 매번 다시 잽니다. 범주를 옮겨도 합계는 변하지 않아야 한다는 사실이 R04 에 들어 있습니다.
SAP 표준 기능 확장 포인트
이 앱은 SAP 표준을 대체하지 않습니다. 표준이 이미 잘하는 일은 표준에 맡기고, 표준이 끊기는 자리만 이어 붙이는 쪽으로 만들었습니다. 어디까지가 표준이고 어디서부터 이 앱인지를 먼저 적습니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | SAP 표준 | 표준에서 걸리는 자리 | 이 앱이 하는 일 |
|---|---|---|---|
| 이자 손익 계정의 건 조회 | FAGLL03 · FBL3N | 계정 기준이라 계약의 성격(주된 사업활동 · 판매 연계)이 보이지 않습니다 | 계약 속성을 붙여 같은 건을 범주 관점으로 읽습니다 |
| 고객별 청구 · 연체 건 | FBL5N | 고객 기준이라 손익 범주와 이어서 볼 수 없습니다 | 고객 이름으로 걸러 같은 화면에서 범주와 금액을 봅니다 |
| 계정 잔액 대비 | FS10N | 잔액만 있고 범주 재분류 전후 비교가 없습니다 | 범주별 합계에서 장부 금액과 재계산 금액을 견줍니다 |
| 손익 범주별 소계 | F.01 | 재무제표 버전의 매핑이 소계를 정하므로 범주를 시험해 볼 수 없습니다 | 범주를 옮길 때 소계에 미치는 금액을 미리 보여 줍니다 |
| 범주 재분류 근거 | — | 표준에 없습니다. 보통 엑셀 정책 목록으로 관리합니다 | 정책표를 데이터로 두고 건마다 적용 행과 근거를 붙입니다 |
| 이자 금액 재계산 | — | 표준에 없습니다. 계약 관리 시스템의 산식을 따로 확인합니다 | 평균 원금 · 이자율 · 일수로 다시 구해 장부와 견줍니다 |
| 판단 보류 건 | — | 판단 중인 건을 표시할 자리가 없어 영업범주에 두고 잊힙니다 | 확인 필요로 따로 세우고 건수를 요약에 올립니다 |
IFRS 18 요구사항 매핑
기준서 문단 번호는 적지 않고 요구사항의 이름으로만 대응합니다. 번역 · 개정에 따라 번호가 달라질 수 있어서입니다. 이 표는 화면이 어떤 질문에 답하는지를 정리한 것이며 기준서 해석을 대신하지 않습니다.
| 기준서 | 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 손익을 영업 · 투자 · 재무 · 법인세 · 중단영업 범주로 분류하며, 영업범주가 기본 범주 | 손익 건별 점검 — 기록 범주와 재계산 범주 비교 | 손익 계정 라인아이템 | 범주 정책은 회사가 정한다 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 고객에게 금융을 제공하는 것이 주된 사업활동이면 그 활동에서 생긴 손익을 영업범주로 분류 | 정책표 P01~P04 — 주된 사업활동 사업부의 이자수익 · 자금조달 이자비용 | 계약 속성, 손익 계정 | 주된 사업활동 여부 판단은 회사가 한다 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 개별적으로 독립적으로 수익을 내는 자산의 손익은 투자범주 | 정책표 P07 — 판매와 분리된 고객 대여금 이자 | 계약 속성(판매 연계) | 연계 여부가 불명확하면 확인 필요 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 자금조달 부채에서 생긴 손익은 재무범주 | 정책표 P10 — 주된 사업활동이 아닌 곳의 차입 이자비용 | 손익 계정 | 소계 금액은 이 화면이 확정하지 않는다 |
T-code 별 연계 지점
운영에 올릴 때 “기존 조회를 없애야 하느냐”는 질문이 꼭 나옵니다. 대부분은 없애지 않고 둡니다 — 대사와 감사 대응은 표준 거래가 맡는 편이 안전합니다.
| T-code | 이름 | 연계 |
|---|---|---|
FAGLL03 | G/L 계정 라인아이템 조회 | 손익 건별 점검의 건이 닿는 자리입니다. 두 화면의 건수와 합계가 같아야 하며, 운영 검수의 첫 번째 대사로 둡니다. |
FBL3N | G/L 계정 라인아이템 | 계정별 건을 원천 전표까지 따라갑니다. |
FBL5N | 고객 라인아이템 조회 | 고객별 이자 청구 · 연체 건을 확인합니다. 연체이자 수익 건의 원 채권을 찾는 자리입니다. |
FS10N | G/L 계정 잔액 조회 | 계정 잔액과 범주별 합계를 견줍니다. |
F.01 | 재무제표 조회 | 범주 이동 전후 소계가 어떻게 달라지는지 확인합니다. 법정 보고용 소계는 표준에 둡니다. |
FB03 | 전표 조회 | 이동 필요 건의 원 전표를 확인합니다. |
CDS 구성
이 사례의 화면은 분기별 손익 건 60건을 그대로 읽습니다. 데모라서 되는 일이고, 운영 데이터에서는 그렇게 하지 않습니다. 운영으로 올릴 때 가장 먼저 하는 일은 정책 적용과 집계를 CDS 로 내리는 것입니다. 아래는 그때 만드는 뷰를 레이어 순서대로 적은 것입니다.
코드는 스케치입니다. 필드 이름과 표준 뷰 이름은 릴리스 · 환경에 따라 다르므로, 그대로 붙여 넣기 전에 View Browser(F2170) 로 실제 이름을 확인해야 합니다. 확인이 필요한 자리는 주석에 확인 필요로 적어 두었습니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | ZI_InstlPolicy | 주된 사업활동 · 금융 유형 · 판매 연계 → 정책 범주 · 근거 | 정책은 회사가 바꿉니다. 코드에 박으면 바뀔 때마다 개발자를 부르게 됩니다. |
| 기준 | ZI_InstlContract | 계약 속성(고객 · 사업부 · 금융 유형 · 판매 연계 · 이자율) | 손익 건에 계약 성격을 붙이는 자리를 한 곳으로 모읍니다. |
| 건 | ZI_InstlLine | ACDOCA 이자 손익 건 + 계약 속성 + 정책 범주 | 화면이 들고 비교하던 일을 DB 로 내립니다. |
| 재계산 | ZI_InstlCalc | 평균 원금 × 이자율 × 일수 ÷ 365 와 장부 이자 차이 | 산식을 한 번만 정의해 화면 · 배치 · 쿼리가 같은 값을 보게 합니다. |
| 집계 | ZI_InstlContractAgg | 계약별 장부 · 재계산 범주 합계와 건수 | 계약별 점검 탭의 원천입니다. |
| 쿼리 | ZC_InstlCatQuery | 범주별 장부 금액 · 재계산 금액 · 차이 | 표준 Fiori 와 Analysis for Office 가 그대로 띄웁니다. |
| 권한 | ZI_INSTLLINE (DCL) | 회사코드 · 사업부 | 집계를 읽는 자리에 걸어야 뺄셈으로 새지 않습니다. |
① 범주 정책 테이블
모든 점검이 이 표에서 갈립니다. 어느 조합이 영업이고 어느 조합이 투자인지를 정하는 자리라 운영 전환에서 가장 먼저 합의해야 하는 항목입니다. 유효기간을 둔 이유는 정책이 바뀌어도 과거 기간의 점검 결과가 흔들리지 않게 하기 위해서입니다.
" 정책 테이블 — 범주 정책 (투명 테이블)
" 운영에서는 회사의 회계정책 문서에 있는 표를 그대로 옮겨 담는다.
" 코드에 박지 않는 이유 : 정책은 바뀌고, 바뀔 때마다 개발자를
" 부르게 만들면 점검 결과가 금방 낡는다.
@EndUserText.label : '고객 금융 손익 범주 정책'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zinstl_policy {
key mandt : mandt not null;
key pol_no : abap.char(3) not null; " P01 ...
main_act : abap.char(1); " Y 주된 사업활동 / N 아님
fin_type : abap.char(1); " I 할부판매 / L 대여 / D 연체 / K 차입
link_sale : abap.char(1); " Y 연계 / N 분리 / ? 미확정 / - 해당 없음
expect_cat : abap.char(3); " OPR / INV / FIN / CNF(판단 보류)
basis : abap.char(120); " 정책 근거 문장
valid_from : abap.dats;
valid_to : abap.dats;
}
② 계약 속성 뷰
정책표의 세 열(주된 사업활동 · 금융 유형 · 판매 연계)이 어디서 오는지가 도입의 두 번째 질문입니다. 계약 관리 데이터의 위치는 회사마다 달라 확인 필요로 두었습니다.
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '고객 금융 계약 속성'
define view entity ZI_InstlContract
as select from zinstl_contract as c " 확인 필요 : 계약 속성의 실제 원천
association [0..1] to I_Customer as _Cust
on _Cust.Customer = $projection.Customer
{
key c.bukrs as CompanyCode,
key c.cont_no as ContractNo,
c.kunnr as Customer,
_Cust.CustomerName,
c.seg_no as Segment, " 사업부
c.main_act as MainAct, " 주된 사업활동 여부 — 사업부 단위로 회사가 정한다
c.fin_type as FinType,
c.link_sale as LinkSale,
@Semantics.amount.currencyCode : 'Currency'
c.principal as Principal,
c.rate as Rate, " 연 이자율(%)
c.waers as Currency,
_Cust
}
③ 손익 건 뷰 — 정책 적용
ACDOCA 의 이자 손익 건에 계약 속성을 붙이고 정책표를 매칭해 재계산 범주를 정합니다. 기록 범주는 손익 계정의 범주 매핑에서 읽으며, 매핑의 위치는 확인 필요입니다.
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '고객 금융 손익 건'
define view entity ZI_InstlLine
as select from acdoca as j
inner join ZI_InstlContract as k
on k.CompanyCode = j.rbukrs
and k.ContractNo = j.zuonr " 확인 필요 : 계약 번호를 싣는 필드
left outer join zinstl_policy as p
on p.main_act = k.MainAct
and p.fin_type = k.FinType
and ( p.link_sale = k.LinkSale or p.link_sale = '-' )
and p.valid_from <= j.budat and p.valid_to >= j.budat
{
key j.rldnr as Ledger,
key j.rbukrs as CompanyCode,
key j.gjahr as FiscalYear,
key j.belnr as DocNo,
key j.docln as DocLine,
k.ContractNo,
j.racct as GlAcct,
j.budat as PostDate,
@Semantics.amount.currencyCode : 'Currency'
j.hsl as Amount,
j.rhcur as Currency,
" 기록 범주 : 손익 계정의 범주 매핑 — 확인 필요
cast( '' as abap.char(3) ) as BookedCat,
coalesce( p.expect_cat, 'NON' ) as ExpectCat,
p.pol_no as PolicyNo
}
where j.rldnr = '0L'
and j.racct between '4710000000' and '4719999999' " 이자 손익 계정 범위 — 회사 계정 체계에 맞게 확인 필요
④ 이자 재계산 뷰
산식은 한 번만 정의합니다. 원 미만 반올림은 DB 가 아니라 이 뷰에서 정해야 화면 · 배치 · 쿼리가 같은 값을 봅니다.
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '고객 금융 이자 재계산'
define view entity ZI_InstlCalc
as select from ZI_InstlLine as l
inner join ZI_InstlContract as k
on k.CompanyCode = l.CompanyCode and k.ContractNo = l.ContractNo
{
key l.CompanyCode, key l.FiscalYear, key l.DocNo, key l.DocLine,
k.ContractNo,
@Semantics.amount.currencyCode : 'Currency'
l.Amount as BookAmt,
" 평균 원금 × 연 이자율(%) ÷ 100 × 일수 ÷ 365 — 일수와 평균 원금의 원천은 확인 필요
cast( round( k.Principal * k.Rate / 100 * 91 / 365, 0 ) as abap.curr(18,0) ) as CalcAmt,
l.Currency
}
⑤ 계약별 집계 뷰
계약별 점검 탭의 원천입니다. 기록 범주와 재계산 범주가 다른 건의 금액을 이동 필요 금액으로 모읍니다.
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '계약별 범주 점검 집계'
define view entity ZI_InstlContractAgg
as select from ZI_InstlLine as l
{
key l.CompanyCode, key l.FiscalYear, key l.ContractNo,
@Semantics.amount.currencyCode : 'Currency'
sum( l.Amount ) as IntBook,
sum( case when l.BookedCat <> l.ExpectCat
then l.Amount else 0 end ) as MoveAmt,
sum( case when l.ExpectCat = 'CNF' then 1 else 0 end ) as ConfCnt,
count( * ) as LineCnt,
l.Currency
}
group by l.CompanyCode, l.FiscalYear, l.ContractNo, l.Currency
⑥ 범주별 합계 쿼리
범주를 옮겨도 합계는 변하지 않아야 한다는 사실이 대사 R04 에 들어 있습니다. 쿼리는 이 성질을 그대로 보여 줍니다.
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '범주별 합계'
@Analytics.query : true
define view entity ZC_InstlCatQuery
as select from ZI_InstlLine as l
{
key l.CompanyCode, key l.FiscalYear,
@AnalyticsDetails.query.axis : #ROWS
l.BookedCat as BookedCategory,
@Semantics.amount.currencyCode : 'Currency'
sum( l.Amount ) as BookAmt,
l.Currency
}
group by l.CompanyCode, l.FiscalYear, l.BookedCat, l.Currency
⑦ 권한 (DCL)
권한은 집계를 읽는 자리에 겁니다. 드릴스루 같은 하위 뷰에만 걸면 전체 합계와 자기 몫의 차이로 남의 숫자가 드러납니다.
@EndUserText.label : '손익 건 접근 제어'
@MappingRole : true
define role ZI_INSTLLINE {
grant select on ZI_InstlLine
where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
운영 전환에서 정해야 할 항목
| 정해야 할 것 | 정하지 않으면 | 결정 주체 |
|---|---|---|
| 정책표의 각 행(주된 사업활동 · 금융 유형 · 판매 연계 조합과 범주) | 점검 결과가 회사의 회계정책과 어긋나 첫 회의에서 막힙니다 | 회계팀 · 감사인과 협의 |
| 사업부별 주된 사업활동 여부 | 정책 P01~P04 가 적용될 사업부가 정해지지 않습니다 | 경영진 · 회계팀 |
| 계약 속성의 원천(원금 · 이자율 · 판매 연계) | 재계산과 정책 매칭이 비어 확인 필요가 쏟아집니다 | 현업 · IT |
| 기록 범주의 원천(손익 계정의 범주 매핑) | 기록 범주와 재계산 범주를 견줄 수 없습니다 | 회계팀 |
| 허용 오차(예시 1,000원) | 반올림 차이가 점검 필요로 쏟아지거나, 반대로 실제 차이가 묻힙니다 | 회계팀 |
| 권한 기준 | 전사 합계와 자기 몫의 차이로 남의 숫자가 드러납니다 | 보안 · 권한 |
자주 묻는 질문
도입 상담과 데모에서 나올 만한 질문들입니다. 세 묶음으로 나눠 적었습니다.
범주와 정책
이 앱은 어떤 요구사항을 점검합니까?
IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호)가 손익을 영업 · 투자 · 재무 범주 등으로 나누도록 하는 요구사항 관점에서, 고객 금융에서 생긴 이자 손익이 놓인 범주를 회사의 정책표로 다시 정해 장부와 견줍니다. IFRS 18 은 2027-01-01 이후 개시하는 회계연도부터 적용하며 조기 적용을 허용하고 비교기간을 다시 작성합니다.
범주를 이 앱이 확정해 줍니까?
아닙니다. 정책표의 범주와 최종 판단은 회사와 감사인이 합니다. 앱은 분류 · 집계 · 대사를 돕는 점검 도구이고, 결과도 점검 필요 · 확인 필요로 표시할 뿐 위반이나 오류로 단정하지 않습니다.
정책표는 어떻게 만듭니까?
회사의 회계정책 문서에 있는 규칙을 주된 사업활동 여부 · 금융 유형 · 판매 연계의 세 열 조합으로 풀어 한 표에 옮깁니다. 이 사례의 10행은 예시이며 회사의 정책이 아닙니다. 정책표를 바꾸면 재계산 범주가 바로 바뀌도록 코드와 분리해 두었습니다.
주된 사업활동 여부는 어디서 정합니까?
사업부 단위로 회사가 정합니다. 고객에게 금융을 제공하는 것이 그 사업부의 주된 사업활동이면 관련 이자수익과 자금조달 이자비용을 영업범주로 보는 것이 이 사례의 정책 기본값입니다. 이 판단 자체는 앱이 하지 않습니다.
판매 연계 여부는 무엇을 뜻합니까?
고객 대여금이 판매 계약과 이어져 있는지 여부입니다. 이어진 대여는 판매 활동의 일부로 보아 영업범주, 분리된 대여는 독립적으로 수익을 내는 자산으로 보아 투자범주로 두는 것이 이 사례의 정책입니다. 연계 여부가 확정되지 않으면 범주를 정하지 않고 확인 필요로 남깁니다.
확인 필요와 점검 필요는 무엇이 다릅니까?
점검 필요는 기록 범주가 정책표와 다르거나 금액 차이가 허용 범위를 넘은 경우입니다. 확인 필요는 정책을 적용하기 위한 입력(예: 판매 연계 여부)이 확정되지 않아 범주를 정할 수 없는 경우입니다. 앞은 장부를 고치는 문제이고 뒤는 판단을 먼저 내려야 하는 문제입니다.
범주 이동 필요 금액은 어떻게 구합니까?
기록 범주와 재계산 범주가 다른 건의 손익 금액을 더합니다. 이익은 +, 비용은 − 이므로 부호가 섞여 합이 작아 보일 수 있습니다. 이 사례에서는 12건의 합이 259백만 원입니다. 건별 금액은 상세에서 확인합니다.
이자 재계산의 입력값은 어디서 옵니까?
계약의 기간 평균 원금, 연 이자율, 일수입니다. 값이 바뀌면 재계산 이자가 달라지므로 차이는 입력값과 전기 누락 여부부터 확인합니다. 입력값을 어느 테이블에서 읽을지는 회사마다 달라 확인 필요입니다.
허용 오차 1,000원은 무엇을 근거로 정했습니까?
화면 검증용으로 둔 예시값입니다. 원 미만 반올림 차이를 걸러 내려는 목적이며, 실제 값은 회사가 정합니다.
금액과 SAP 연계
분기별 일수는 어떻게 셉니까?
1분기 90일, 2분기 91일, 3분기 92일로 둡니다. 윤년 · 실제 일수 기준(Actual/365 · Actual/Actual 등)은 계약 조건에 따르므로 운영에서는 계약별 산식을 확인해야 합니다.
표준 화면과는 어떻게 맞춰 봅니까?
손익 건은 FAGLL03 의 같은 계정 건과, 고객별 청구 · 연체 건은 FBL5N 과, 범주 이동 전후 소계는 F.01 과 견줍니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 앱은 조회 · 검증 관점을 더해 확장합니다.
기록 범주는 SAP 어디에 있습니까?
손익 계정이 재무제표 버전에서 어느 범주로 묶이는지에 따라 정해집니다. 회사마다 매핑 방식이 달라 이 사례에서는 기록값으로 두었고 실제 원천은 확인 필요입니다. 운영에서는 매핑 테이블을 뷰에서 읽도록 바꿉니다.
범주를 실제로 고치려면 어떻게 합니까?
이 앱은 조회 · 점검용이라 전표를 바꾸지 않습니다. 고치려면 표준 절차(재무제표 버전 매핑 변경 또는 재분류 전표)를 따르고, 그 승인은 회사와 감사인이 합니다.
기존 보고서와 숫자가 다르면 어떻게 확인합니까?
순서가 있습니다. ① 조회 범위가 같은지 봅니다(회계연도 · 회사 · 전기일). ② 정책표의 해당 행이 맞는지 봅니다. ③ 건을 눌러 상세로 같은 계약의 분기별 건을 펼치고 FAGLL03 과 건수 · 합계를 맞춰 봅니다. ④ 그래도 다르면 기록 범주의 원천이 같은지 확인합니다.
대사 R01~R06 은 각각 무엇을 보장합니까?
R01 · R02 는 계약별 합계가 건별 합계와 범주별 합으로 맞는지, R03 은 범주별 장부 금액이 건별 합계와 맞는지, R04 는 범주를 옮겨도 총합이 변하지 않는지, R05 는 건별 차이 합이 장부와 재계산 합계의 차이와 맞는지, R06 은 점검 필요 건수가 탭마다 같은지를 봅니다. 모두 화면의 산수가 맞는지를 보며, 정책 판단의 옳고 그름은 보지 않습니다.
검증용 샘플 데이터에 점검 필요가 12건이나 있는 이유는 무엇입니까?
화면의 동작을 확인하려고 어긋남을 의도적으로 넣었기 때문입니다. 실제 회사의 비율이 아니며, 어떤 회사의 숫자도 아닙니다. 회사 · 고객 · 금액은 모두 가상입니다.
조회 결과를 내려받을 수 있습니까?
CSV 내려받기 버튼이 지금 보고 있는 탭의 조회 결과를 UTF-8 파일로 저장합니다. 필터가 걸려 있으면 그 조건 그대로 담깁니다.
데이터 연동은 어떻게 되어 있습니까?
OData V2 서비스(instlcat_srv)가 엔티티셋 여섯 개와 점검 건수 함수 하나를 제공하고, 화면은 manifest 에 선언한 상대 경로로 읽습니다. 날짜 필터는 서비스가 직접 처리합니다. 엔티티와 필드는 설명서의 OData 절에 정리되어 있습니다.
운영과 도입
검증용 샘플과 실제 데이터를 어떻게 바꿉니까?
화면은 서비스 주소만 알고 데이터 출처는 모릅니다. 운영에서는 같은 계약의 OData 서비스를 CDS 뷰 위에 노출하면 화면 코드는 그대로 둔 채 데이터만 바뀝니다.
손익 건이 수십만 건이면 어떻게 합니까?
이 사례처럼 건을 화면이 들고 비교하는 구조는 쓰지 않습니다. 정책 적용과 집계를 CDS 로 내리고 화면은 서버 페이징으로 읽습니다. 요약 지표는 집계 뷰에서 한 번에 가져옵니다.
다통화 · 다국어는 됩니까?
화면 글자는 i18n 파일에 빠져 있어 언어를 더하는 일은 파일 하나를 더하는 일입니다. 통화는 회사코드통화 기준으로 보여 주며, 다른 통화가 섞이면 통화를 차원으로 함께 올려야 합니다. 이 사례는 단일 통화입니다.
유지보수는 무엇을 하게 됩니까?
정기적으로 손이 가는 곳은 정책표 하나입니다. 정책이 바뀌거나 새 금융 유형이 생기면 행을 더합니다. 그 밖에는 허용 오차를 조정하거나 계약 속성의 원천이 바뀔 때 정도입니다.
고객 금융이 사업 전체인 금융회사에도 쓸 수 있습니까?
그대로는 어렵습니다. 금융회사에는 별도의 분류 요구사항과 계정 체계가 있어 이 사례의 정책표(제조 · 유통 · 서비스 회사 전제)를 그대로 쓸 수 없습니다. 정책표와 계약 속성을 그 회사에 맞게 다시 짜는 작업이 먼저입니다.
범주 이동이 영업이익에 미치는 영향도 보여 줍니까?
범주별 합계 탭이 영업 · 투자 · 재무 범주의 장부 금액과 재계산 금액, 그 차이를 보여 줍니다. 영업이익이라는 소계를 직접 확정하지는 않으며, 소계는 표준 재무제표 조회(F.01)와 회사의 재무제표 버전을 따릅니다.
IFRS 18 을 처음 검토하는 회사는 어디서 시작해야 합니까?
손익 계정을 범주별로 다시 묶는 일보다 먼저, 회사의 사업 가운데 고객에게 금융을 제공하는 일이 주된 사업활동인지부터 정해야 합니다. 그 결정이 정책표의 첫 열을 정하고, 나머지 열은 계약 속성에서 옵니다. 이 앱은 그 결정을 대신하지 않고, 결정을 장부에 적용한 결과를 보여 줍니다.
도입하려면 무엇이 필요합니까?
정책표의 합의, 사업부별 주된 사업활동 여부의 확정, 계약 속성의 원천 확인, 권한 기준 이 네 가지가 먼저이고, 그 다음에 CDS 뷰와 OData 서비스를 올립니다. 개발보다 합의가 많습니다. 현재 SAP 환경에서 어떻게 적용되는지 함께 확인해 드립니다.