자금 솔루션 · 차입 관리

차입 구조 다차원 분석 — 대주 · 통화 · 만기 구간으로 보는 차입 잔액과 계획 대비 차이 점검

축 전환 피벗 · 칸에서 원천 전표 라인까지의 드릴스루 · 기초 + 증감 + 환산 효과 = 기말 롤포워드 · 계획 대비 차이 요인 분해 · 변동 사유 · 해설 · 점검 알림 에이전트 — 소개 영상과 실제 화면 23종, 그리고 CDS 코드까지

소개 영상블로그 목차 순서대로 · 자막 포함

도입 포인트 — 이 앱을 사용해야 하는 이유

자금 회의의 질문은 늘 비슷합니다. 차입 잔액이 어느 대주와 어느 통화에 쌓여 있나, 상환이 어느 달에 몰리나, 계획과 얼마나 달라졌고 왜 달라졌나. 지금은 이 세 답이 표준 현금 포지션 화면 · 은행 명세 · 엑셀 차입 대장에 흩어져 있어 회의 전날 숫자를 맞추는 일이 먼저 생깁니다. 이 앱은 세 답을 한 화면에 모아, 기초 잔액에서 기말 잔액까지의 흐름과 계획 대비 차이를 같은 표 위에서 확인하게 합니다. 관련 기준서의 요구사항(IAS 7 현금흐름표(K-IFRS 제1007호)의 재무활동 현금흐름, IAS 21 환율변동효과(K-IFRS 제1021호), IFRS 7 금융상품: 공시(K-IFRS 제1107호)의 유동성 위험)을 점검하는 자리에서 보는 숫자를 한곳에 두는 것이 목적입니다.

한 줄 요약 — 대주 · 상품 · 통화 · 금리 유형 · 만기 구간 어느 축으로 묶어도 같은 큐브에서 나온 숫자를 보고, 칸에서 원천 전표 라인까지 내려가며, 계획과의 차이를 요인으로 나누어 점검할 수 있습니다.

핵심 포인트 일곱 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 축을 바꿔 보는 차입 구조대주 · 상품 · 통화 · 금리 유형 · 만기 구간 · 거래 유형 등 11개 차원을 끌어다 놓아 행 3단계 · 열 2단계로 봅니다. 모든 축이 같은 큐브에서 나와 합계가 어긋날 자리가 없습니다.대주별 · 통화별 · 만기별 표를 따로 만들고, 합계가 다르면 표를 맞추는 일부터 합니다.
② 기초 + 증감 + 환산 효과 = 기말약정 · 통화 단위로 잔액 롤포워드를 같은 표에서 봅니다. 롤포워드 차이 계산항목이 0이 아니면 바로 점검 대상으로 보입니다.기말 잔액과 증감 내역을 엑셀에서 따로 맞춥니다.
③ 칸에서 원천 라인까지표의 값을 누르면 그 칸을 이루는 전표 라인이 열리고 합계가 칸의 값과 같은지 바로 보입니다.표를 닫고 계정 원장 화면(FBL3N)을 다시 열어 조건을 손으로 맞춥니다.
④ 계획 대비 차이를 요인으로계획 순증감과 실적 순증감의 차이를 시점 · 금액 · 환율 · 계획 외 · 미실현으로 나눕니다. 요인 합과 총차이의 검산 줄이 항상 함께 나옵니다.차이가 났다는 사실까지만 알고 이유는 담당자 기억에 의존합니다.
⑤ 변동 사유가 행에 남는다사유가 조회 범위와 행 경로에 묶여 저장되어 축을 바꿔도, 다음에 열어도 그 행에 따라옵니다.같은 질문을 회의마다 다시 하고 지난번 답은 메일에서 찾습니다.
⑥ 단기 상환 · 외화 비중 점검 알림감시 규칙 4개(단기 상환 비중 · 계획 대비 순증감 차이 · 외화 차입 비중 · 월 상환액 집중)에 걸린 항목이 대기함에 올라갑니다. 하루 한 번 실행합니다.한도를 넘어도 누군가 화면을 열기 전에는 알 수 없습니다.
⑦ 해설 초안과 PowerPoint 보고서숫자는 서비스가 계산하고 문장은 규칙으로 만든 초안입니다. 보고 있는 범위 그대로 PowerPoint 보고서를 내려받습니다.화면을 캡처하고 숫자를 옮겨 적어 보고 자료를 다시 만듭니다.

사례로 보는 효과

샘플 데이터(2026년 1월~9월, 가상 약정 20건)에서 계획 순증감은 −37.36억원, 실적 순증감은 −16.47억원으로 +20.89억원의 차이가 났습니다. 요인으로 나누자 금액 차이 +13.50억원이 가장 컸고, 계획 미실현 +4.10억원, 계획 외 발생 +3.00억원, 환율 +0.29억원이 뒤를 이었습니다. 요인 합과 총차이의 검산은 0원이었습니다. 대주로 묶어 보면 한빛은행 +11.88억원, 미래은행 +11.15억원, 해든은행 −5.12억원이 눈에 띄어 어느 대주부터 점검할지 정할 수 있습니다. 같은 데이터로 대사식 11종을 전수 돌린 결과는 검사 1,383건에 차이 0건이었습니다(#sec-cds 의 검증 결과 표). 위 숫자는 모두 가상의 샘플 값이며 운영 데이터의 효과를 보장하지 않습니다.

도입하면 달라지는 것

  • 회의 전날 표를 맞추는 시간이 줄고, “어느 숫자가 맞나” 대신 “어느 대주와 어느 만기를 점검할까”를 이야기하게 됩니다.
  • 차이의 이유가 요인별로 나뉘어 있어 담당자가 바뀌어도 같은 방식으로 설명할 수 있습니다.
  • 변동 사유가 행에 남아 다음 회의에서 같은 설명을 반복하지 않습니다.
  • 단기 상환 비중이나 월 상환액이 한도에 닿으면 알림이 올라와 점검 시점을 놓치지 않습니다.
  • 표준 화면과 숫자를 맞춰 보는 지점이 정해져 있어 대사 방법이 사람마다 달라지지 않습니다.

이런 회사에 맞습니다

은행 여러 곳과 시장성 차입(회사채 · 유동화)을 함께 쓰고, 원화 외에 달러 · 유로 · 엔 차입이 섞여 있어 대주 · 통화 · 만기 구간으로 잔액을 나눠 보아야 하는 회사입니다. 자금팀이 차입 대장을 엑셀로 관리하며 월 단위로 계획과 비교하고, 회계팀이 기말 잔액과 환산 효과를 따로 대사하는 조직이면 효과가 큽니다. 차입 약정이 몇 건 안 되고 통화가 하나뿐이라면 표준 화면만으로도 충분할 수 있습니다.

실행 화면

사용 방법

  1. 조회 조건 입력 — 회사(선택) · 기간(필수) · 비교 기준 · 금액 단위를 정합니다. 기간의 시작이 끝보다 늦으면 안내가 나옵니다.
  2. 조회 버튼과 Enter 키 — 조회 조건 영역 안 입력 필드의 가장 오른쪽에 있는 “조회”를 누르거나 입력 필드에서 Enter 를 누릅니다. 조회하면 조건 영역이 자동으로 접힙니다.
  3. 요약 확인 — 표 위 KPI 에서 실행 · 상환 · 순증감 · 계획 대비 차이 · 기말 잔액 · 12개월 내 상환 예정을 봅니다.
  4. 축 이동 — 차원 칩을 끌어다 놓거나 칩 메뉴(행으로 보내기 · 열로 보내기 · 축에서 빼기)로 옮깁니다.
  5. 칸 클릭 상세 — 표의 값을 누르면 원천 라인이 열립니다. 행을 선택해 변동 사유를 남길 수 있습니다.
  6. 내보내기 — “CSV”로 현재 표를, “보고서 PPTX”로 해설과 표를 내려받습니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤OpenUI5 표준 컨트롤(트리 표 · 입력 · 다이얼로그), 차트는 SVG 직접 작성외부 차트 라이브러리를 들이지 않아 반입 심사가 필요 없고 표와 차트가 같은 값에서 그려집니다.
집계 · 판정 로직브라우저의 피벗 계산 모듈 + 서비스 쪽 요인분해 · 해설 · 감시 규칙 계산축을 바꿔도 서버를 다시 부르지 않고, 요인분해처럼 원천 라인이 필요한 계산은 서비스가 맡습니다.
OData 서비스 구성OData V2 서비스 한 개. 큐브 · 계획 · 원천 라인 · 사유 · 보기 · 감시 규칙을 엔티티셋으로 읽고 쓰며, 요인분해 · 해설 · 에이전트 실행은 함수로 호출화면과 데이터 사이를 표준 프로토콜로 고정해 운영 원천으로 바꿀 때 화면을 고치지 않게 했습니다.
테마sap_horizonSAP 표준 화면과 같은 모양이라 사용자가 새로 익힐 것이 적습니다.
SAP 표준 기능을 그대로 이어받은 부분 — 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 같은 전표 · 은행 명세 · 자금 계획 데이터 구조를 이어받아 조회와 점검 관점을 더해 확장합니다.

아래 화면은 모두 샘플 데이터로 실제 브라우저에서 찍은 것입니다. 그림을 누르면 크게 볼 수 있습니다.

처음 열었을 때

조회 조건부터 표와 차트까지 한 화면에 세로로 쌓입니다. 조회 전에도 틀이 먼저 서 있어 무엇을 고르면 무엇이 채워지는지 보입니다.

조회 전 — 틀이 먼저 보인다
조회 전 — 틀이 먼저 보인다 — 조회를 누르기 전에도 조건 · KPI · 레이아웃 보드 · 표가 제자리에 있습니다.

조회 조건에는 기간이 기본으로 들어 있고 회사는 비어 있습니다(전체 회사). 값이 비어 있어도 틀이 서 있어서 처음 여는 사람도 구성을 먼저 파악합니다. 필수는 기간 하나입니다.

조회 직후 — 피벗 표와 막대 차트
조회 직후 — 피벗 표와 막대 차트 — 회사 · 만기 구간을 행에, 분기와 측정값을 열에 둔 기본 배치입니다.

조회를 누르면 KPI 가 먼저 채워지고 표와 오른쪽 차트가 함께 나옵니다. 기본 측정값은 기말 잔액과 단기 상환 비중이며 단위는 백만원입니다. 조회하면 조건 영역은 접혀 표가 넓어집니다.

레이아웃 보드 — 차원 보관함과 행 · 열 축
레이아웃 보드 — 차원 보관함과 행 · 열 축 — 보관함 · 행 축 · 열 축 세 칸으로 구성됩니다.

차원 칩을 끌어다 칸 사이에 놓으면 그 자리에서 표가 다시 묶입니다. 칩을 눌러 나오는 메뉴로도 옮길 수 있어 마우스가 불편해도 같은 일을 할 수 있습니다. 행 축은 3단계까지입니다.

축을 옮긴 뒤
축을 옮긴 뒤 — 차입 상품을 행 축으로 옮긴 결과입니다.

다시 조회하지 않고 바로 표가 바뀝니다. 큐브는 이미 브라우저에 있고 축 이동은 그 행들을 다시 묶는 일이기 때문입니다. 합계는 어떤 배치에서도 같습니다.

경영 요약 — 보는 사람에 따라 달라지는 첫 줄

같은 큐브의 같은 숫자라도 먼저 보아야 할 지표는 자리마다 다릅니다. “보는 사람”을 바꾸면 KPI 와 기본 배치가 바뀝니다.

경영 요약 — 경영
경영 요약 — 경영 — 회사 전체 잔액과 순증감, 계획과의 거리를 먼저 보여 줍니다.

경영 관점은 차입 총잔액과 계획 대비 차이를 앞에 둡니다. 숫자 옆의 방향 색은 차입이 늘거나 단기 비중이 높아지는 쪽을 점검 우선(빨강)으로 칠합니다. 좋고 나쁨의 판정이 아니라 점검 순서입니다.

경영 요약 — 재무
경영 요약 — 재무 — 기말 잔액과 단기 상환 비중을 중심으로 합니다.

재무 관점은 회사별 · 만기 구간별 기말 잔액과 12개월 내 상환 예정 비중을 앞에 둡니다. 비중이 45% 이상이면 감시 규칙에도 걸립니다(임계값은 가정값).

경영 요약 — 자금
경영 요약 — 자금 — 대주 · 통화별 잔액과 환율 영향을 중심으로 합니다.

자금 관점은 대주와 통화별 잔액, 실행 지연 · 상환 앞당김, 환산 효과를 앞에 둡니다. 외화 차입 비중을 확인할 때 이 관점이 편합니다.

경영 요약 — 회계
경영 요약 — 회계 — 롤포워드와 원천 대사를 중심으로 합니다.

회계 관점은 기초 + 증감 + 환산 효과 = 기말 롤포워드와 롤포워드 차이를 앞에 둡니다. 차이가 0이 아니면 해당 칸에서 바로 원천 라인으로 내려갑니다.

축 전환과 범위 — 리포트를 더 만드는 대신 축을 바꾼다

조건에서 범위를 좁히고 축으로 각도를 바꾸고 표와 차트의 너비까지 그 자리에서 나눕니다.

열 축 2단계
열 축 2단계 — 열 축에 두 차원을 쌓으면 머리글이 두 줄이 됩니다.

1단계 값이 하위 열을 묶어 보여 줍니다. 서버를 다시 부르지 않습니다. 열 조합이 너무 많아지면 표로 읽히지 않으므로 상한을 두고 안내합니다.

다중 선택 값 필터
다중 선택 값 필터 — 차원마다 값을 여러 개 골라 범위를 좁힙니다.

같은 차원 안에서는 또는, 차원끼리는 그리고로 묶입니다. 값 목록이 이름과 함께 열려 코드를 외우지 않아도 됩니다. 필터가 걸린 차원은 표시로 남습니다.

표 오른쪽의 차트
표 오른쪽의 차트 — 현재 표를 그대로 그리는 막대 차트입니다.

행을 접고 펴면 차트도 따라 바뀝니다. 표와 같은 값을 쓰므로 표와 차트의 숫자가 다를 수 없습니다.

칸에서 원천 문서까지 — 숫자를 의심할 때 내려가는 길

표의 숫자가 어디서 나왔는지 같은 화면에서 확인합니다.

원천 라인 — 칸을 이루는 전표 라인
원천 라인 — 칸을 이루는 전표 라인 — 칸의 값 · 원천 합계 · 라인 수와 일치 여부를 보여 줍니다.

표의 값을 누르면 열립니다. 원천 합계가 칸의 값과 같으면 “표의 값과 일치”, 다르면 차이 금액을 보여 줍니다. 계산항목 칸은 구성 값의 원천 합계로 맞춰 봅니다.

원천 라인 — 문서 단위 목록
원천 라인 — 문서 단위 목록 — 거래일 · 대주 · 약정 · 거래 유형 · 외화 금액 · 환율 · 원화 금액 · 전표 번호를 보여 줍니다.

외화 금액에는 통화 코드를 함께 두고 환율은 소수 자릿수를 고정했습니다. 표준 화면으로 확인하려면 이 전표 번호를 계정 원장 화면(FBL3N)에서 찾으면 됩니다.

기간별 요약
기간별 요약 — 월마다 실행 · 상환 · 순증감 · 계획 대비 · 기말 잔액을 한 줄로 봅니다.

가장 상환이 몰린 달과 계획과 가장 어긋난 달이 한눈에 보입니다. 이 표의 합계도 큐브와 같은 값입니다.

계산항목 — 롤포워드를 표 안에서

계산항목 — 롤포워드
계산항목 — 롤포워드 — 기초 · 실행 · 상환 · 환산 효과 · 기말과 롤포워드 차이를 같은 표에 놓았습니다.

계산항목은 토큰 식으로 정의되어 있고 원천값과 이름이 겹치지 않도록 원천값에는 표시를 붙였습니다. 롤포워드 차이가 0이 아니면 점검 대상입니다.

계획 대비 차이 — 같은 표가 점검 자료가 된다

비교 기준을 계획으로 두고 조회하면 같은 표가 차이 표로 바뀝니다.

계획 차이 모드
계획 차이 모드 — 칸이 실적과 계획의 차이로 바뀝니다.

금액 기준과 비율 기준을 넘는 칸만 색으로 강조해 점검할 칸을 줄여 줍니다. 기준값은 화면에서 바꿀 수 있습니다.

변동 사유 기재
변동 사유 기재 — 선택한 행에 사유와 구분(시점 · 금액 · 환율 · 계획 외 · 일회성 · 기타)을 남깁니다.

사유는 조회 범위와 행 경로를 키로 저장되어 다음에 같은 범위를 열면 따라옵니다. 단정적인 판단 대신 점검 메모를 남기는 용도입니다.

차이 워터폴과 요인 분해
차이 워터폴과 요인 분해 — 계획 순증감에서 실적 순증감까지 요인별 막대로 이어 봅니다.

검산 줄은 계획 + 요인 합 − 실적이 0임을 매번 보여 줍니다. 환율 요인은 반올림 차이를 흡수해 합이 정확히 맞도록 했습니다.

해설과 보고서

숫자는 서비스가 계산하고 문장은 규칙으로 만든 초안입니다.

해설
해설 — 범위 요약과 핵심 발견을 문장으로 보여 줍니다.

대주나 통화 같은 묶음 기준을 바꾸면 해설도 바뀝니다. 문장은 점검 필요 · 확인 필요 표현만 쓰며 원인을 단정하지 않습니다.

PPT 보고서
PPT 보고서 — 보고 있는 범위의 표와 차트를 담은 보고서를 브라우저에서 만듭니다.

서버에 파일을 남기지 않고 내려받습니다. 내용은 해설과 같은 근거 숫자입니다.

에이전트 — 한도를 지켜 보는 점검

에이전트 대기함
에이전트 대기함 — 규칙에 걸린 항목이 쌓이는 곳입니다.

감시 규칙 4개를 하루 한 번 점검합니다. 같은 날 두 번째 실행은 안내와 함께 막힙니다. 걸린 항목은 읽음 처리할 수 있고 활동 기록에 실행 이력이 남습니다.

보기 저장과 복원

저장한 보기 관리
저장한 보기 관리 — 축 배치 · 필터 · 측정값을 이름 붙여 저장하고 기본으로 정합니다.

기본 보기로 정하면 다음에 그 모양으로 시작하고, 자동 조회를 켜 두면 열자마자 조회합니다. 기본 배치로 되돌리는 버튼이 함께 있습니다.

좁은 화면과 한계

좁은 화면(390px)
좁은 화면(390px) — 조건과 표가 한 열로 이어집니다.

좁은 화면에서는 표를 가로로 밀어 보고 차트는 표 아래로 내려갑니다. 표의 행이 250개를 넘으면 그리지 않고 행 축을 줄이거나 필터를 걸라는 안내를 보여 줍니다.

화면 뒤에서 일어나는 일

조회를 누르면 화면은 큐브(CubeSet)와 필요하면 계획(PlanSet)을 한 번 읽습니다. 이후 축 이동 · 측정값 · 값 필터는 브라우저의 피벗 계산이 처리합니다. 칸을 눌렀을 때만 원천 라인을, 차이 모드에서만 요인분해를 서비스에 다시 요청합니다. 쓰기는 변동 사유 · 보기 저장 · 에이전트 실행 세 곳뿐입니다.

점검 판단 기준

판정 조건결과 상태사용자 조치
큐브 합계와 원천 합계가 다름확인 필요원천 라인과 집계 기준을 다시 확인
롤포워드 차이가 0이 아님확인 필요약정 · 통화별 원천 라인에서 누락 확인
단기 상환 비중 45% 이상(가정값)점검 필요만기 구간별 상환과 차환 계획 확인
계획 대비 순증감 차이 절대값 15억원 이상(가정값)점검 필요요인 분해에서 구성 확인 후 사유 기재
외화 차입 비중 30% 이상(가정값)점검 필요통화별 잔액과 환산 효과 확인
월 상환액 90억원 이상(가정값)점검 필요상환 집중 월의 자금 계획과 비교

조회조건

필드필수기본값필터 방식
회사선택전체Bukrs eq (여러 개면 또는)
기간(부터)필수202601Period ge
기간(까지)필수202609Period le
비교 기준선택계획(P0)과 비교PlanSet Version eq
금액 단위선택백만원표시만 변경

결과 컬럼

컬럼의미산출식
실행신규 · 연장 실행액Flow 가운데 증가 방향 합계
상환정기 · 조기 · 일부 상환액Flow 가운데 감소 방향 합계의 부호 반대
순증감기간 중 차입 변화실행 − 상환
기초 · 기말기간 처음 · 끝 잔액OpenBal · EndBal
환산 효과외화 잔액 환산 차이FxEff
롤포워드 차이검산기초 + 순증감 + 환산 효과 − 기말
단기 상환 비중(%)12개월 내 상환 예정 비중Curr × 100 ÷ 기말

좁은 화면에서 달라지는 것

조건 영역은 접힌 상태로 시작하고, 표는 가로 스크롤로 보며, 차트는 표 아래에 놓입니다. 기능은 같습니다.

파일 구성

Component.js · manifest.json · index.html
controller/  화면 흐름
view/        메인 화면 + 대화상자 8개
model/       피벗 · 차트 · 서식 · 보기 저장 · PPT 만들기
odata/       OData 서비스 선언 · 서비스 로직 · 계산 모듈 · 샘플 JSON
i18n/ · css/

SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회와 점검 관점을 더해 확장합니다. 표준을 대체하지 않으며 표준에 남겨 둘 일(감사 · 공시 · 세무 신고 대응)은 그대로 표준에 둡니다.

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

하고 싶은 일표준으로 되는 부분이 화면이 더하는 관점
차입 상환 예정액을 날짜별로 보기현금 포지션(FF7A)에서 은행 · 계획 항목별로 확인대주 · 통화 · 만기 구간으로 묶어 같은 기간에서 비교
단기 상환 비중과 유동성 흐름유동성 예측(FF7B)에서 예측 흐름 확인기말 잔액 대비 12개월 내 상환 비중을 한 칸에서 점검
실행 · 상환 입출금 라인 확인은행 명세 사후 처리(FEBAN)에서 라인 처리칸에서 원천 라인으로 내려가 전표와 대조
차입금 계정 전기 내역 확인계정 원장 라인(FBL3N)에서 라인과 합계 확인같은 라인을 롤포워드 안에서 합계 일치 여부와 함께 확인
계획 대비 차이의 구성 파악계획과 실적 화면을 각각 조회시점 · 금액 · 환율 · 계획 외 · 미실현 요인으로 나누고 검산
변동 사유 기록전표 단위 적요조회 범위와 행 경로에 묶은 점검 메모

T-code 별 연계 지점

T-code이름연계
FF7A현금 포지션이 화면의 상환 예정(12개월 내) 금액과 같은 기간의 포지션 금액을 맞춰 봅니다. 차이가 나면 계획 항목 매핑을 확인합니다. 표준에 남겨 둘 일: 포지션 기준의 자금 운용 판단
FF7B유동성 예측단기 상환 비중이 높아진 달의 예측 흐름과 비교합니다. 이 화면 결과 → 해당 달 예측 확인 순서로 오갑니다.
FEBAN은행 명세 사후 처리실행 · 상환 라인의 은행 명세 항목과 이 화면의 원천 라인을 건수 · 금액으로 대조합니다. 미결 항목의 처리는 표준에서 합니다.
FBL3N계정 원장 라인칸의 원천 라인 전표 번호를 계정 원장 화면에서 찾아 합계를 맞춥니다. 법정 대사와 감사 대응은 표준에서 합니다.

운영으로 전환할 때 기존 표준 리포트를 없앨 필요는 없습니다. 표준 리포트는 그대로 두고 이 화면은 같은 숫자를 다른 축으로 확인하는 데 씁니다.

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

표준 CDS 분석 쿼리와 Fiori 분석 앱, Analysis for Office 는 정해진 보고서를 안정적으로 배포하는 데 강합니다. 이 화면은 그 앞 단계, 즉 축을 바꿔 가며 숫자를 점검하고 요인으로 나누어 보는 자리에 둡니다. 어떤 Fiori 앱이 같은 범위를 이미 제공하는지는 사용 중인 릴리스에서 확인이 필요합니다.

분석 지표 정의

지표산식 · 판정 기준대응 기능원천 데이터비고
실행 · 상환 · 순증감실행 − 상환 = 순증감피벗 · KPI차입금 계정 전표 라인(BKPF · BSEG)FBL3N 으로 확인
기초 · 기말 잔액기초 + 순증감 + 환산 효과 = 기말롤포워드 계산항목약정별 잔액(운영 원천은 확인 필요)IAS 7 · IAS 21 요구사항 점검
12개월 내 상환 예정M1 만기 구간 잔액단기 상환 비중약정 만기 일정(확인 필요)FF7A 와 비교
계획 대비 차이실적 − 계획차이 모드 · 요인 분해계획 버전 P0FF7B 와 비교
환산 효과기말 환율 환산 − 기초환율 요인통화별 환율IAS 21 요구사항 점검

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

자리손대는 내용비고
차입금 계정 범위어떤 계정을 차입으로 볼지 매핑회계팀이 정함
약정 마스터약정 번호 · 대주 · 상품 · 금리 유형 · 만기 구간 보강자금팀 관리 대장과 연결
환율 유형 · 환산 시점기말 환율 유형과 환산 기준일회계 정책에 맞춤
감시 규칙 임계값4개 규칙의 한도샘플은 가정값
권한회사코드 · 대주 단위 조회 범위집계 단계에 적용
확장 필드약정 담보 · 약정 조건 등 업무 필드확장 필드로 추가

CDS 구성 — 최대한 자세히

화면이 읽는 OData 서비스를 운영 원천으로 바꿀 때의 CDS 구성입니다. 아래는 구성 스케치이며, 확인하지 못한 표준 뷰와 필드는 “확인 필요”로 표시했습니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준zdebt_loanmap약정 → 대주 · 상품 · 금리 유형 · 만기 구간 · 차입금 계정 매핑분류 기준을 코드가 아닌 데이터로 두어 현업이 바꿀 수 있게 합니다.
차원ZI_DebtLoan약정 차원 뷰큐브와 쿼리가 같은 차원을 재사용합니다.
문서 흐름ZI_DebtItem차입금 계정 전표 라인을 약정에 붙임칸에서 내려가는 원천 라인이 이 뷰입니다.
큐브(실적)ZI_DebtCube기간 × 약정 × 통화 월 집계화면의 CubeSet 에 해당합니다.
큐브(계획)ZI_DebtPlanCube계획 버전별 월 집계계획 대비 비교의 기준입니다.
쿼리ZC_DebtStructureQuery축 · 필터 · 측정값 배치분석 앱에서 바로 쓰는 소비 뷰입니다.
권한DCL회사코드 단위 조회 권한집계 단계에서 걸어 합계로 새지 않게 합니다.
서비스서비스 정의 · 바인딩OData V2 게시화면은 서비스 주소만 바꿉니다.

① 약정 매핑 테이블

이 테이블에서 약정이 어느 대주 · 상품 · 금리 유형 · 만기 구간에 속하는지가 결정됩니다. 분류가 바뀔 때 코드를 고치지 않고 이 테이블만 고치므로, 운영에서 가장 먼저 합의해야 하는 자리입니다.

@EndUserText.label: '차입 약정 매핑 — 약정 · 대주 · 상품 · 금리 유형 · 만기 구간'
@AbapCatalog.enhancement.category: #NOT_EXTENSIBLE
@AbapCatalog.tableCategory: #TRANSPARENT
@AbapCatalog.deliveryClass: #C
@AbapCatalog.dataMaintenance: #ALLOWED
define table zdebt_loanmap {
  key client     : abap.clnt not null;
  key bukrs      : bukrs not null;
  key loan_no    : abap.char(10) not null;      " 약정 번호
  bank_id        : abap.char(6);                " 대주(은행 · 시장)
  prod_type      : abap.char(3);                " FAC / WCL / TRF / BND / ABS / LSE
  rate_type      : abap.char(3);                " FIX / CDL / SOF
  mat_bucket     : abap.char(2);                " M1 ~ M4 (계약 만기 구간)
  gl_account     : saknr;                       " 차입금 계정
}

② 차원 뷰 — 약정

약정 번호를 키로 대주 · 상품 · 금리 유형 · 만기 구간을 차원으로 내보냅니다. 큐브와 쿼리가 모두 이 뷰를 거치므로 차원 이름이 한곳에서 정해집니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '차입 약정 차원'
@ObjectModel.usageType: { serviceQuality: #A, sizeCategory: #S, dataClass: #CUSTOMIZING }
@Analytics.dataCategory: #DIMENSION
define view entity ZI_DebtLoan
  as select from zdebt_loanmap as m
  association [0..1] to I_CompanyCode as _Company on _Company.CompanyCode = $projection.CompanyCode
{
  @ObjectModel.text.element: ['LoanText']
  key m.loan_no    as Loan,
  key m.bukrs      as CompanyCode,
      m.bank_id    as Bank,
      m.prod_type  as Product,
      m.rate_type  as RateType,
      m.mat_bucket as MaturityBucket,
      m.gl_account as GLAccount,
      _Company
}

③ 원천 라인 뷰 — 차입금 전표

표준 전표 라인 뷰에 약정 차원을 붙이고 증가 · 감소 방향을 한 번만 정합니다. 드릴스루가 합계를 맞추려면 방향 판정이 큐브와 같아야 하므로 이 뷰 하나에서만 부호를 정합니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '차입 원천 라인'
@ObjectModel.usageType: { serviceQuality: #C, sizeCategory: #XL, dataClass: #TRANSACTIONAL }
define view entity ZI_DebtItem
  as select from I_JournalEntryItem as j
  inner join     ZI_DebtLoan        as l on  l.CompanyCode = j.CompanyCode
                                         and l.GLAccount   = j.GLAccount
{
  key j.CompanyCode,
  key j.FiscalYear,
  key j.AccountingDocument,
  key j.LedgerGLLineItem,
      j.PostingDate,
      j.TransactionCurrency,
      l.Loan,
      l.Bank,
      l.Product,
      l.RateType,
      l.MaturityBucket,
      @Semantics.amount.currencyCode: 'TransactionCurrency'
      j.AmountInTransactionCurrency,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      j.AmountInCompanyCodeCurrency,
      j.CompanyCodeCurrency,
      // 차입 증가는 +, 상환은 − : 대변 잔액 계정이므로 부호를 한 번만 뒤집는다
      case j.DebitCreditCode when 'H' then 'I' else 'E' end as Direction
}

④ 큐브 — 실적 월 집계

기간 · 약정 · 통화 단위로 순증감을 합산합니다. 통화별 합산을 유지하는 이유는 환산 효과를 따로 보기 위해서입니다. 화면의 큐브 합계 = 원천 라인 합계 대사가 이 뷰에서 성립합니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '차입 큐브 — 기간 × 약정 × 통화 월 집계'
@Analytics.dataCategory: #CUBE
@ObjectModel.usageType: { serviceQuality: #D, sizeCategory: #XL, dataClass: #MIXED }
define view entity ZI_DebtCube
  as select from ZI_DebtItem
  association [1..1] to ZI_DebtLoan as _Loan
    on _Loan.Loan = $projection.Loan and _Loan.CompanyCode = $projection.CompanyCode
{
  key CompanyCode,
  key left(cast(PostingDate as abap.char(8)), 6)  as Period,
  key Loan,
  key TransactionCurrency                          as Currency,
      Bank,
      Product,
      RateType,
      MaturityBucket,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      @DefaultAggregation: #SUM
      sum(case Direction when 'I' then AmountInCompanyCodeCurrency
                         else - AmountInCompanyCodeCurrency end)  as NetFlow,
      CompanyCodeCurrency,
      @DefaultAggregation: #SUM
      count( * )                                                  as LineCount,
      _Loan
}
group by CompanyCode, left(cast(PostingDate as abap.char(8)), 6),
         Loan, TransactionCurrency, Bank, Product, RateType, MaturityBucket, CompanyCodeCurrency

⑤ 큐브 — 계획 월 집계

계획 버전별 월 계획 금액을 같은 차원으로 내보냅니다. 계획 원천은 운영 환경에 따라 다르므로 확인 필요입니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '차입 계획 큐브 — 계획 버전별 월 집계'
@Analytics.dataCategory: #CUBE
define view entity ZI_DebtPlanCube
  as select from fclm_plan_item as p       // 자금 계획 항목 — 운영 원천은 확인 필요
{
  key p.bukrs                          as CompanyCode,
  key p.plan_version                   as Version,
  key left(cast(p.plan_date as abap.char(8)), 6) as Period,
  key p.loan_no                        as Loan,
      p.currency                       as Currency,
      @Semantics.amount.currencyCode: 'Currency'
      @DefaultAggregation: #SUM
      p.plan_amount                    as PlanNetFlow
}

⑥ 쿼리 — 다차원 분석

행 · 열 · 자유 축과 필터를 정해 분석 앱에서 바로 열리게 합니다. 기간은 필수 구간 필터, 대주는 다중 선택으로 두어 화면의 조회 조건과 같은 모양을 맞췄습니다.

@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '차입 구조 다차원 분석 쿼리'
@Analytics.query: true
@UI.headerInfo: { typeName: '차입', typeNamePlural: '차입 구조' }
define view entity ZC_DebtStructureQuery
  as select from ZI_DebtCube
{
  @AnalyticsDetails.query.axis: #ROWS
  @Consumption.filter: { selectionType: #SINGLE, multipleSelections: true, mandatory: false }
  Bank,
  @AnalyticsDetails.query.axis: #ROWS
  Product,
  @AnalyticsDetails.query.axis: #COLUMNS
  @Consumption.filter: { selectionType: #INTERVAL, mandatory: true }
  Period,
  @AnalyticsDetails.query.axis: #FREE
  Currency,
  @AnalyticsDetails.query.axis: #FREE
  MaturityBucket,
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  @AnalyticsDetails.query.axis: #COLUMNS
  NetFlow,
  CompanyCodeCurrency
}

⑦ 권한 — 회사코드

집계 뷰에 권한을 걸지 않고 드릴스루에만 걸면 뺄셈으로 합계가 새어 나갑니다. 쿼리 단계에 걸어 보이는 범위가 합계에도 똑같이 적용되게 합니다.

@EndUserText.label: '차입 구조 조회 권한 — 회사코드 · 대주'
@MappingRole: true
define role ZC_DebtStructureQuery {
  grant select on ZC_DebtStructureQuery
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

⑧ 서비스 정의와 바인딩

쿼리와 약정 차원을 노출합니다. 바인딩을 OData V2 로 게시하면 화면의 manifest 서비스 주소만 바꾸면 됩니다.

@EndUserText.label: '차입 구조 분석 서비스'
define service ZUI_DebtStructure {
  expose ZC_DebtStructureQuery as DebtStructure;
  expose ZI_DebtLoan           as Loan;
}

// Service Binding : OData V2 - UI 로 게시. 화면의 manifest 서비스 주소만 이 바인딩 주소로 바꾼다.

운영 시점에 해야 할 일

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

해야 할 일무엇을 정하나정하지 않으면누가
차입금 계정 범위어떤 계정 전표를 차입으로 볼지다른 부채 계정이 섞여 잔액이 어긋납니다회계팀
약정 매핑약정별 대주 · 상품 · 금리 유형 · 만기 구간차원별 합계가 기존 대장과 달라 첫 회의에서 막힙니다자금팀
환율 유형 · 환산 시점기말 환율 유형과 기준일환산 효과가 회계 정책과 어긋납니다회계팀
부호 규칙차입 증가와 상환의 방향실행 · 상환이 뒤바뀌어 보입니다회계팀 · 자금팀
계획 원천 확정어떤 계획 버전과 항목을 기준으로 삼을지계획 대비 차이의 기준이 사람마다 달라집니다기획팀 · 자금팀
권한 설계회사코드 · 대주 단위 조회 범위남의 숫자가 보이거나 합계가 새어 나갑니다보안 · 권한 담당
표준과의 대사 체계FF7A · FF7B · FEBAN · FBL3N 과 맞출 항목대사 방법이 사람마다 달라집니다자금팀 · 회계팀
서비스 활성화서비스 바인딩 게시와 화면의 서비스 주소 교체화면이 샘플 서비스를 계속 읽습니다Basis · 개발팀
전송 순서테이블 → 뷰 → 쿼리 → 권한 → 서비스활성화 순서가 어긋나 오류가 납니다개발팀
성능 기준응답 시간 목표와 조회 상한운영 건수에서 느려져 쓰지 않게 됩니다개발팀 · 현업

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

번호대사식검사 건수차이 건수
①큐브 합계 = 원천 라인 합계(기간 × 측정값)630
②기초 + 증감 + 환산 효과 = 기말(약정 × 기간)1800
③전기 기말 = 당기 기초(약정)1600
④통화별 롤포워드(기간 × 통화)360
⑤만기 구간 합계 = 총 잔액(최종 기간)10
⑥어떤 축 배치에서도 피벗 총합 = 큐브 총합1800
⑦칸 금액 = 드릴스루 원천 라인 합계4520
⑧실적 − 계획 = 차이, 요인 합 = 총차이, 워터폴 합2560
⑨계산항목 = 토큰 식 결과90
⑩다중 선택 필터 후 합계 = 선택 값 큐브 합160
⑪큐브 대사 기록과 재계산 일치300

의도적 예외는 0건입니다. 샘플 데이터 기준의 결과이며 운영 데이터에서는 다시 확인해야 합니다.

운영 데이터로 갈 때

차입 전표는 수가 많지 않아 큐브는 월 단위 집계로 충분하지만, 전표가 수천만 건인 환경에서는 집계를 데이터베이스 안에서 끝내고 기간을 필수 조건으로 받아야 합니다. 화면은 큐브를 한 번 읽어 브라우저에서 계산하므로 큐브 행 수에 상한(화면에서 표 행 250개)을 두었고, 원천 라인은 칸을 눌렀을 때만 읽습니다. 인덱스는 회사코드 · 전기일 · 약정 순으로 두고, 응답 시간 목표는 조회 3초 · 칸 상세 2초 안팎으로 잡는 것을 권합니다(가정값).

자주 묻는 질문 — 최대한 자세히

도입 전에 가장 자주 나오는 질문을 네 묶음으로 정리했습니다.

숫자와 산식

기말 잔액은 어떻게 계산되나요?

기초 잔액 + 신규·연장 실행 − 상환 + 환산 효과 = 기말 잔액입니다. 약정 · 통화 · 기간 단위로 계산하며 롤포워드 차이 계산항목이 0이 아니면 점검 대상으로 표시합니다. 샘플 데이터에서는 180개 약정·기간 조합 모두 차이가 0이었습니다.

단기 상환 비중은 무엇을 뜻하나요?

기말 잔액 가운데 12개월 안에 상환할 예정인 금액의 비율입니다. 샘플의 최종 기간 기준 12개월 내 상환 예정은 338.1억원(52.6%)이며, 유동성 분류와 차환 계획을 점검하는 출발점으로 씁니다. 판정이 아니라 점검 순서를 정하는 지표입니다.

외화 차입은 어떻게 원화로 보나요?

전표의 외화 금액에 인식 환율을 곱한 원화 금액을 쓰고, 기말 환율 환산과의 차이를 환산 효과로 따로 둡니다. 환율 유형과 환산 시점은 회계 정책에 맞춰 정해야 하며 샘플은 가정값입니다.

환산 효과와 환율 요인은 같은 것인가요?

비슷하지만 다릅니다. 환산 효과는 잔액 롤포워드의 한 항목이고, 환율 요인은 계획 대비 차이를 나눌 때 환율이 만든 몫입니다. 요인 분해에서 환율 요인은 반올림 차이를 흡수해 요인 합이 총차이와 정확히 맞도록 합니다.

요인 합이 총차이와 맞는지 어떻게 아나요?

차이 워터폴 아래 검산 줄이 계획 + 요인 합 − 실적을 매번 계산해 보여 줍니다. 샘플 전체 범위에서 이 값은 0원이었습니다. 0이 아니면 확인 필요로 표시됩니다.

계획과 실적의 어긋남을 왜 오류로 세지 않나요?

계획과의 차이는 분석 대상이고 원천 대사의 예외가 아니기 때문입니다. 대사 예외는 큐브와 원천이 맞지 않는 경우를 뜻하며 샘플에서는 0건이었습니다.

화면과 조작

축을 바꿀 때 서버를 다시 부르나요?

아니요. 조회할 때 큐브를 한 번 읽고 축 이동 · 측정값 변경 · 값 필터는 브라우저에서 계산합니다. 칸을 눌러 원천 라인을 볼 때와 차이 요인을 볼 때만 서비스를 다시 부릅니다.

행 축과 열 축은 몇 단계까지 가능한가요?

행 축은 3단계까지 둘 수 있고 열 축은 2단계까지 쌓습니다. 행이 250개를 넘거나 열이 너무 많으면 그리지 않고 줄이라는 안내를 보여 줍니다.

Enter 키로 조회할 수 있나요?

네. 조회 조건 입력 필드에서 Enter 를 누르면 조회 버튼과 같은 조회가 실행됩니다. 조회 버튼은 조건 영역의 입력 필드 오른쪽 끝에 있습니다.

보기를 저장하면 무엇이 저장되나요?

행 · 열 축 배치, 값 필터, 측정값, 금액 단위, 행 수 설정이 이름과 함께 저장됩니다. 기본 보기로 정하면 다음에 그 모양으로 시작하고 자동 조회를 켜면 열자마자 조회합니다.

CSV 로 내려받을 수 있나요?

네. 현재 표를 UTF-8 CSV 로 내려받습니다. 파일명은 한글 기능명만 쓰며 금액은 화면의 금액 단위를 따릅니다.

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

네. 조건 영역이 접힌 채 시작하고 표는 가로로 밀어 보며 차트는 표 아래로 내려갑니다. 기능은 넓은 화면과 같습니다.

분석 기능

요인 분해의 요인은 무엇인가요?

실행·연장 시점 차이, 상환 시점 차이, 금액 차이, 환율, 계획 외 발생, 계획 미실현입니다. 원천 라인을 계획 라인과 맞춰 나누며 맞춰지지 않는 라인은 계획 외 또는 미실현으로 따로 셉니다.

해설은 사람이 쓴 것인가요, 모델이 쓴 것인가요?

기본은 규칙으로 만든 초안입니다. 금액과 비율은 서비스가 계산한 값이고 문장만 규칙으로 조립합니다. 모델 연결은 설정 하나로만 켤 수 있고 기본은 꺼져 있습니다. 초안은 점검 필요 항목을 찾는 용도입니다.

에이전트는 무엇을 하나요?

감시 규칙 4개(단기 상환 비중 · 계획 대비 순증감 차이 · 외화 차입 비중 · 월 상환액 집중)를 하루 한 번 점검하고 걸린 항목을 대기함에 올립니다. 같은 날 두 번째 실행은 막힙니다.

감시 규칙의 임계값은 어떻게 정해졌나요?

샘플 데이터에 맞춘 가정값입니다. 운영에서는 회사의 차입 한도와 약정 조건에 맞춰 규칙 설정에서 바꿔야 합니다.

변동 사유는 어디에 저장되나요?

조회 범위와 행 경로를 키로 서비스에 저장됩니다. 같은 범위를 다시 열면 그 행에 사유가 따라오며 구분(시점 · 금액 · 환율 · 계획 외 · 일회성 · 기타)도 함께 남습니다.

PowerPoint 보고서는 서버에 저장되나요?

아니요. 보고 있는 범위의 표와 차트로 브라우저에서 파일을 만들어 바로 내려받습니다. 서버에는 파일이 남지 않습니다.

도입과 운영

이 화면이 회계 판단을 대신하나요?

아닙니다. 점검 도구이며 최종 판단은 회사와 감사인이 합니다. 화면은 분류 · 집계 · 대사를 돕고 걸린 항목은 점검 필요 또는 확인 필요로만 표시합니다. 세무 신고가 필요한 항목은 회사와 세무 대리인이 판단합니다.

표준 T-code 와는 어떤 관계인가요?

표준 실행은 SAP 표준 T-code 가 담당합니다. 이 화면은 현금 포지션(FF7A) · 유동성 예측(FF7B) · 은행 명세 사후 처리(FEBAN) · 계정 원장 라인(FBL3N)과 숫자를 맞춰 보는 지점을 두고 조회와 점검 관점을 더합니다. 기존 표준 리포트를 없앨 필요는 없습니다.

언제부터 어느 범위에 적용되나요?

샘플은 2026년 1월~9월의 가상 약정 20건입니다. 운영 적용 시기와 범위는 확인된 사실이 없으므로 고객사 환경 확인 후 정해야 합니다.

운영 데이터와 연결하는 데 얼마나 걸리나요?

소요는 확인 필요입니다. 기술 작업은 매핑 테이블 · 뷰 · 서비스 바인딩이지만 실제로는 차입금 계정 범위, 약정 매핑, 환율 유형, 권한을 정하는 합의가 더 오래 걸립니다.

권한은 어떻게 걸리나요?

회사코드 단위 권한을 쿼리 단계에 걸어 보이는 범위가 합계에도 똑같이 적용되게 합니다. 드릴스루에만 걸면 합계에서 뺄셈으로 새어 나갈 수 있으므로 권장하지 않습니다.

전표가 많아지면 느려지지 않나요?

큐브를 월 단위로 집계해 읽고 원천 라인은 칸을 눌렀을 때만 읽으므로 전표 수의 영향이 작습니다. 전표가 수천만 건이면 집계를 데이터베이스 안에서 끝내고 기간을 필수 조건으로 받아야 합니다.

약정이나 계정 체계가 바뀌면 어떻게 하나요?

약정 매핑 테이블의 행을 고치면 됩니다. 분류가 코드에 박혀 있지 않아 뷰를 다시 이송할 필요가 없습니다. 바뀐 뒤에는 큐브와 원천의 대사를 다시 돌려야 합니다.

샘플 데이터에는 실제 거래처가 들어 있나요?

아니요. 대주 · 약정 · 금액은 모두 가상입니다. 실제 고객사 데이터나 계좌번호는 쓰지 않았습니다.