계좌별 유휴자금 운용 점검 — 은행 계좌마다 정한 하한과 상한으로 놀고 있는 돈과 모자란 날을 가리고 이체·운용 금액까지 산출하는 자금 관리 화면
일별 잔액 · 운영 하한과 보유 상한 · 유휴자금 평잔과 기회비용 · 하한 미달일 · 계좌 간 이체와 단기 운용 제안 · 11개 대사식 전수 검산 — 소개 영상과 실제 화면 6종, 그리고 CDS 코드까지
소개 영상1분 30초8개 장면음성 안내·자막표지 → 처음 연 화면 → 유휴자금과 기회비용 → 일별 잔액 → 이체와 운용 제안 → 대사 결과 → 계좌 상세 → 정리
도입 포인트 — 이 앱을 사용해야 하는 이유
자금팀이 매일 마주하는 '어느 계좌에 유휴자금이 있나?', '어느 계좌가 지급을 감당할까?', '그래서 얼마를 어디로 옮겨야 하나?'와 같은 질문에, 이 앱은 계좌별 운영 기준을 바탕으로 놀고 있는 돈의 규모와 기회비용, 부족 계좌 보전 이체액, 단기 운용 제안까지 종합적인 답을 제시합니다. 수작업에 의존하던 판단과 계산을 표준 SAP 데이터 연동을 통해 자동화하여, 자금 운용의 효율성과 의사결정의 신뢰도를 높입니다.
핵심 포인트 여섯 가지
| 핵심 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 유휴자금 자동 식별 및 규모 산정 | 회사가 정한 운영 하한과 보유 상한에 일별 잔액을 견주어, 상한을 넘는 유휴자금의 초과분을 자동으로 식별하고, 해당 초과분을 합산한 유휴자금 적수와 기간으로 나눈 유휴자금 평잔을 정확히 산출합니다. | 은행 인터넷뱅킹과 표준 화면 잔액을 엑셀에 수동으로 입력하여 유휴자금 여부와 규모를 파악합니다. |
| ② 숨겨진 기회비용 명확화 | 유휴자금 적수에 계좌 예금 금리와 운용 기준 금리의 차이를 적용하여, 잠재적인 기회비용을 구체적인 금액으로 산정합니다. 예금 금리가 운용 기준 금리보다 높은 계좌는 ‘확인 필요’로 표시합니다. | 유휴자금이 저금리 예금에 머물러 발생하는 기회 손실은 장부에 기록되지 않아 인지하기 어렵습니다. |
| ③ 계좌별 지급 여력 점검 및 부족액 산출 | 일별 잔액을 운영 하한과 비교하여 미달일을 세고, 그 달의 최대 부족액을 식별하여 계좌의 지급 여력을 정밀하게 점검하며, 계좌별 판정 규칙(총 6종)에 따라 점검 결과를 알려줍니다. | 매일 지급계좌의 잔액을 수동으로 확인하고, 하한 미달 여부와 부족액을 정확히 파악하는 데 어려움이 있습니다. |
| ④ 회사 내 최적 이체 및 운용 방안 제안 | 동일 회사 내 상한 초과 계좌에서 부족 계좌로 우선 이체하는 이체안을 자동으로 수립하고, 이체 후에도 남는 초과분에 대해 천만원 단위의 단기 운용 금액을 제안합니다. | 자금 담당자가 여러 계좌 잔액을 종합하여 수동으로 이체 및 운용 규모를 판단하며, 최적의 방안 수립이 어렵습니다. |
| ⑤ 엄격한 자금 데이터 정합성 검증 | 일별 이월, 월 잔액, 잔액 구간 분해, 이체 송수신 일치, 회사 잔액 보존 등 11종의 대사식을 통해 서비스가 산출한 모든 금액의 정합성을 스스로 검증하고, 차이 발생 시 요약에 표시합니다. | 수작업으로 산출된 이체 및 운용 제안 금액의 정확성에 대한 검증이 미흡하거나, 복잡한 대사 작업을 수동으로 처리하여 시간이 많이 소요됩니다. |
| ⑥ SAP 표준 시스템과의 유기적 연동 | FF7A, FF7B, FEBAN, FI12, FAGLL03 등 SAP 표준 T-code와 동일한 원천 데이터를 활용하여 계좌 마스터와 일별 잔액 정보를 연동하므로, 데이터 불일치 없이 신뢰할 수 있는 정보를 제공합니다. | 표준 시스템 데이터와 수동으로 관리되는 자금 운용 정보 간 불일치 가능성이 있고, 데이터 연동에 별도 작업이 발생할 수 있습니다. |
사례로 보는 효과
검증용 샘플 데이터에서 본사 운영계좌는 한 달 동안 유휴자금 평잔이 228,310,000원 발생했으며, 두 회사 합산 기준 한 달 기회비용은 864,515원으로 산출되었습니다. 또한, 거래처 지급계좌는 최대 139,700,000원의 하한 미달액을 기록하여, 이 앱이 제안하는 이체와 운용 방안이 자금 흐름을 개선할 수 있음을 보여줍니다.
도입하면 달라지는 것
- 자금 운용 의사결정의 정확성 향상
- 수작업 감소로 자금팀 업무 효율 증대
- 숨겨진 기회비용 시각화 및 관리
- 내부 자금 흐름의 투명성 및 통제 강화
이런 회사에 맞습니다
은행 계좌별 운영 기준에 맞춰 유휴자금과 부족 자금을 효율적으로 관리하고자 하는 재무·자금팀, 그리고 현금 흐름의 가시성과 운용 수익성을 높이려는 CFO 및 경영진에게 적합합니다.
숫자를 믿을 수 있는가 — 검증 결과
검증용 샘플 데이터(가상 회사 두 곳, 계좌 8개, 9월 30일치 일별 잔액 240건)에 대사식과 판정 규칙을 전수로 다시 돌린 결과입니다.
| 대사식 | 검사 건수 | 차이 건수 | 최대 차이(원) |
|---|---|---|---|
| 일 기초 + 입금 − 출금 = 일 기말 | 240 | 0 | 0 |
| 일 기초 = 전일 기말 | 232 | 0 | 0 |
| 월 기초 + 입금 − 출금 = 월 기말 | 8 | 0 | 0 |
| 월 입금·출금 = 일별 합계 | 16 | 0 | 0 |
| 월 기초 = 1일 기초 · 월 기말 = 말일 기말 | 16 | 0 | 0 |
| 상한 초과분 재계산 | 240 | 0 | 0 |
| 하한 미달분 재계산 | 240 | 0 | 0 |
| 기준 안 잔액 + 초과분 − 미달분 = 일 기말 | 240 | 0 | 0 |
| 유휴자금 적수 = Σ 일 초과분 | 8 | 0 | 0 |
| 유휴자금 평잔 = 적수 ÷ 일수(반올림) | 8 | 0 | 0 |
| 상한 초과일·하한 미달일 재계산 | 16 | 0 | 0 |
| 기회비용 = 적수 × 금리 차 ÷ 365 | 8 | 0 | 0 |
| 이체 송신 합계 = 수신 합계(회사별) | 2 | 0 | 0 |
| 월 기말 + 수신 − 송신 − 운용 = 이체·운용 후 잔액 | 8 | 0 | 0 |
| 제안 명세 합계 = 계좌 송신 + 운용 권고 | 16 | 0 | 0 |
| 회사 잔액 보존: Σ 월 기말 = Σ 이체·운용 후 + Σ 운용 | 2 | 0 | 0 |
| 판정 규칙 재실행 — 계좌 8 · 일별 240 | 248 | 0 | - |
| 서비스 대사 결과(ReconSet) 차이 합계 | 11 | 0 | - |
검사 건수 합계 1,559건, 차이 0건입니다. 판정이 일부러 걸리도록 넣은 계좌(유휴 지속 2 · 하한 미달 2 · 초과와 미달 동시 1 · 정책 미설정 1 · 금리 역전 1)는 대사 차이와 따로 셉니다.
실행 화면
실제로 돌아가는 화면 6종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있습니다. 숫자는 모두 같은 검증용 샘플 데이터에서 나와 화면끼리 맞춰 보셔도 됩니다.
처음 열었을 때
조회조건 · 요약 · 계좌별 판정이 한 화면에 뜹니다. 회계연도 2026, 기간 09 가 기본값이라 열자마자 9월 판정이 보입니다.

여덟 개 계좌가 회사 · 계좌 순으로 정렬되어 나옵니다. 점검 결과 열의 주황 "점검 필요" 는 유휴가 이어지거나 하한에 못 미친 계좌, 파랑 "확인 필요" 는 계좌 정책이나 금리 조건을 회사가 먼저 봐야 하는 계좌입니다. 요약의 유휴자금 평잔 합계 590.6 백만원과 기회비용 864,515원이 이 표의 합계와 같습니다. 조회 버튼은 입력 칸 오른쪽 끝에 있고 Enter 로도 조회됩니다.

회사와 계좌 열은 고정되어 가로로 넘겨도 어느 계좌인지 놓치지 않습니다. 본사 운영계좌는 유휴자금 평잔 228,310,000원, 기회비용 581,721원이고, 이체로 139,700,000원을 지급계좌에 보낸 뒤 140,000,000원을 단기 운용으로 제안받아 이체·운용 후 잔액이 805,000,000원이 됩니다. 예금 금리가 3.30퍼센트인 예치 연동계좌는 기회비용이 0 입니다.
하루하루로 내려가기
판정의 근거는 일별 잔액입니다. 점검 코드와 잔액일로 걸러 문제가 된 날만 남길 수 있습니다.

거래처 지급계좌는 10일과 25일 지급 뒤 잔액이 운영 하한 2억 밑으로 내려갔고, 25일 이후에는 하한 미달분이 139,700,000원까지 커졌습니다. 이 최대 부족액이 이체 제안의 기준이 됩니다. 잔액일 시작 · 종료를 넣으면 그 기간만 남으며, 같은 칸에 두 조건이 걸리면 하나의 구간 조건으로 보냅니다.
옮길 돈과 굴릴 돈
판정 다음에 남는 질문은 "그래서 얼마를 어디로" 입니다.

회사 1000 은 본사 운영계좌에서 지급계좌로 139,700,000원을 보내고, 운영계좌의 남는 초과분 140,000,000원과 수금계좌의 80,000,000원을 단기 운용으로 제안합니다. 회사 2000 은 금리 역전 계좌의 초과분으로 두 계좌의 부족을 채우되, 운용은 제안하지 않습니다. 예상 이자 차익은 30일 기준입니다.
숫자를 스스로 맞춰 본다
대사 결과 탭은 서비스가 계산한 대사식 11종의 결과입니다.

좌변 합계와 우변 합계가 나란히 있고, 차이 건수가 하나라도 있으면 요약의 정합성 대사 차이에 그대로 올라갑니다. 검증용 샘플에서는 모든 대사식이 차이 0 입니다. 이체·운용 뒤 회사 잔액이 그대로인지(⑪)도 여기서 확인합니다.
계좌 하나를 끝까지
계좌 행을 누르면 그 계좌의 판단 재료가 한 창에 모입니다.

머리에는 월 기말 잔액과 점검 결과, 그 아래에는 판정 문장과 "왜 이렇게 판정하는지" 가 한 줄씩 붙습니다. 아래 표는 그 계좌의 30일 잔액으로, 상한 초과분과 하한 미달분이 날마다 보입니다. 닫기 버튼이나 ESC 로 닫습니다.
화면 뒤에서 일어나는 일
조회를 누르면 화면은 계좌 · 일별 · 제안 · 대사 네 엔티티셋을 각각 조건과 함께 부르고, 요약의 유휴자금 평잔 합계와 하한 미달 계좌 수는 서비스 함수로 따로 받습니다. 판정과 제안은 서비스 쪽 데이터에 이미 계산되어 있어 화면은 그 값을 보여 주기만 합니다.
- 일 기말 = 일 기초 + 입금 − 출금, 다음 날 기초 = 전일 기말
- 상한 초과분 = max(0, 일 기말 − 보유 상한), 하한 미달분 = max(0, 운영 하한 − 일 기말)
- 유휴자금 적수 = Σ 초과분, 유휴자금 평잔 = 적수 ÷ 일수, 상한 초과일 · 하한 미달일 · 최대 부족액
- 기회비용 = 적수 × max(0, 운용 기준 금리 − 예금 금리) ÷ 100 ÷ 365
- 판정 — A04 → A03 → A02 → A05 → A01 → A00 순서로 처음 걸리는 코드
- 이체 — 회사별 부족액(기말 미달액, 이번 달 미달이 있던 계좌는 최대 부족액까지)을 초과분이 큰 계좌부터 채움
- 운용 — 이체 뒤 남는 초과분을 금리 차가 있을 때만 천만원 단위로 내림, 예상 이자 차익 = 금액 × 금리 차 × 30 ÷ 365
- 이체·운용 후 잔액 = 월 기말 + 수신 − 송신 − 운용
계좌 판정 — 조건과 조치
| 코드 | 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|---|
| A04 | 보유 상한 ≤ 운영 하한(미설정 포함) | 확인 필요 | 계좌 정책을 회사가 먼저 정한다 |
| A03 | 상한 초과일 ≥ 1 이고 하한 미달일 ≥ 1 | 점검 필요 | 수금 후 이체 시점과 지급일 배치를 점검한다 |
| A02 | 하한 미달일 ≥ 1 | 점검 필요 | 보전 이체 금액을 확인한다 |
| A05 | 상한 초과일 ≥ 1 이고 예금 금리 ≥ 운용 기준 금리 | 확인 필요 | 운용 권고 없음 — 금리 조건을 회사가 확인한다 |
| A01 | 상한 초과일 ≥ 10 | 점검 필요 | 상한 초과분의 단기 운용을 검토한다 |
| A00 | 위에 해당 없음(상한 초과 10일 미만 포함) | 정상 | 조치 없음 |
일별 판정 — 조건과 조치
| 코드 | 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|---|
| D01 | 일 기말 > 보유 상한 | 점검 필요 | 초과분을 유휴자금 적수에 더한다 |
| D02 | 일 기말 < 운영 하한 | 점검 필요 | 그날 지급 여력을 확인한다 |
| D04 | 보유 상한 미설정 계좌의 날 | 확인 필요 | 계좌 정책 확인 |
| D00 | 하한 ≤ 일 기말 ≤ 상한 | 정상 | 조치 없음 |
조회조건
| 조회조건 | 필수 | 기본값 | $filter |
|---|---|---|---|
| 회계연도 | 필수 | 2026 | Gjahr eq '2026' |
| 기간(월) | 필수 | 09 | Monat eq '09' |
| 회사 | 선택 | 전체 | Bukrs eq '1000' |
| 계좌 유형 | 선택 | 전체 | AcctType eq 'PAY' |
| 은행 | 선택 | 비어 있음 | substringof('누리', BankName) |
| 잔액일 시작 · 종료 | 선택 | 비어 있음 | BalDate ge · le · 구간 |
| 점검 코드 | 선택 | 전체 | CheckCode eq 'A01' |
| 점검 결과 | 선택 | 전체 | CheckStatus eq 'CHECK' |
결과 컬럼
| 컬럼 | 의미 | 산출식 |
|---|---|---|
| 운영 하한 · 보유 상한 | 계좌 정책 — 지급 여력의 바닥과 보유의 천장 | 회사 정의 값 |
| 월 기말 잔액 · 월 평잔 | 말일 기말, 30일 기말 평균 | Σ 일 기말 ÷ 일수 |
| 상한 초과일 · 하한 미달일 | 초과분 · 미달분이 0 보다 큰 날 수 | 일별 판정에서 셈 |
| 유휴자금 평잔 | 상한을 넘어 머문 금액의 평균 | Σ 초과분 ÷ 일수 |
| 최대 부족액 | 그 달 하한 미달분의 최댓값 | max(미달분) |
| 기회비용 | 굴렸다면 더 받았을 이자 | 적수 × 금리 차 ÷ 365 |
| 이체 수신 · 송신 | 회사 안 계좌 간 보전 이체 | 제안 명세 합계 |
| 운용 권고 | 이체 후 남는 초과분의 운용 금액 | 천만원 단위 내림 |
| 이체·운용 후 잔액 | 제안을 따랐을 때의 기말 | 기말 + 수신 − 송신 − 운용 |
좁은 화면에서 달라지는 것
조회조건은 폭에 맞춰 줄을 바꿔 쌓이고, 조회 버튼은 언제나 입력 칸 묶음의 맨 끝에 붙습니다. 계좌 표는 회사 · 계좌 두 열을 고정한 채 가로로 넘기며, 상세 창은 휴대폰 폭에서 화면 전체를 씁니다.
파일 구성
앱 폴더/
├─ index.html · manifest.json · Component.js
├─ controller/ BaseController · Main.controller
├─ view/ Main.view.xml · DetailDialog.fragment.xml
├─ model/ formatter · ErrorHandler
├─ css/ · i18n/
├─ odata/ 서비스 정의 · 서비스 로직 · 엔티티셋별 데이터
└─ media/ 소개 영상
SAP 표준 기능 확장 포인트
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 기존 화면을 없애는 것이 아니라 그 옆에서 계좌별 기준과 견주는 자리를 하나 더하는 구조입니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | SAP 표준 | 표준에서는 | 이 화면이 더하는 것 |
|---|---|---|---|
| 계좌별 잔액 보기 | FF7A 현금 포지션 | 정확히 보여 줍니다 | 같은 잔액을 하한 · 상한과 견줘 초과 · 미달로 나눕니다 |
| 앞으로의 흐름 | FF7B 유동성 예측 | 예정 흐름을 보여 줍니다 | 지난 한 달 실제 잔액의 쌓임을 판정합니다 |
| 은행 거래 반영 | FEBAN · FF_5 | 거래명세 처리와 전기를 담당합니다 | 반영된 일 입금 · 출금을 원천으로 씁니다 |
| 계좌별 보유 기준 | - | 표준 화면에 계좌별 하한 · 상한 판정이 없습니다 | 계좌 정책으로 하한 · 상한 · 금리를 두고 매일 견줍니다 |
| 놀고 있는 돈의 비용 | - | 전표에 남지 않습니다 | 유휴자금 적수로 기회비용을 산출합니다 |
| 어디서 어디로 옮길지 | - | 사람이 엑셀로 정합니다 | 부족 계좌 보전 이체와 남는 초과분 운용안을 냅니다 |
T-code 별 연계 지점
| T-code | 이름 | 연계 |
|---|---|---|
| FF7A | 현금 포지션 | 같은 계좌의 일 잔액을 원천으로 이어받습니다. 이 화면의 월 기말 잔액이 FF7A 의 같은 날 은행 잔액과 같은지가 첫 대사 지점입니다. 판정이 난 계좌는 FF7A 에서 당일 포지션을 다시 확인합니다. |
| FF7B | 유동성 예측 | 하한 미달이 난 지급계좌의 다음 지급 일정을 FF7B 에서 보고, 이 화면의 보전 이체 금액이 그 지급을 덮는지 견줍니다. |
| FEBAN | 전자 은행 거래명세 후처리 | 일별 입금 · 출금의 원천입니다. 특정 날의 큰 출금이 무엇이었는지는 FEBAN 의 명세로 확인합니다. |
| FI12 | 하우스뱅크 관리 | 계좌 번호 · 은행 구분 같은 마스터는 FI12 의 값을 그대로 씁니다. 계좌 정책(하한 · 상한)은 이 마스터에 덧붙이는 회사 정의 값입니다. |
| FAGLL03 | 총계정원장 개별 항목 | 이체 · 운용을 실행한 뒤의 현금 계정 전기는 FAGLL03 에서 확인합니다. 법정 · 감사 대응은 표준 원장에 그대로 둡니다. |
운영으로 옮길 때 기존 리포트를 없앨 필요는 없습니다. 법정 · 감사 대응과 실제 이체 실행은 표준에 그대로 두고, 이 화면은 아침 자금 회의의 판단 자료로 씁니다.
S/4HANA 분석 스택과의 자리
계좌 × 월 집계를 분석 쿼리로 만들어 두면 표준 Fiori 분석 앱과 Analysis for Office 가 같은 숫자를 띄웁니다. 표준 현금 관리 앱이 보여 주는 잔액 위에, 회사의 계좌 정책을 기준으로 한 판정과 제안을 얹는 자리입니다.
확장 포인트 — 운영에서 실제로 손대는 자리
| 자리 | 무엇을 | 어디서 | 누가 |
|---|---|---|---|
| 계좌 정책 값 | 하한 · 상한 · 예금 금리 · 운용 기준 금리 | 매핑 테이블(유지보수 뷰) | 자금팀 |
| 유휴 지속 기준 | 상한 초과 10일 | 서비스 상수 → 정책 테이블로 옮길 수 있음 | 자금팀 |
| 운용 단위 | 천만원 단위 내림 | 서비스 상수 | 자금팀 · 재무 |
| 원천 잔액 | 은행 명세 기말 잔액 또는 원장 잔액 | CDS 뷰의 원천 선택 | CO · Basis |
| 권한 | 회사코드 · 하우스뱅크 | DCL(pfcg_auth) | 보안 · 권한 |
분석 지표 정의표
| 지표 | 산식 | 판정 기준 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|---|
| 상한 초과분 | max(0, 일 기말 − 보유 상한) | 0 초과 → D01 | 일별 잔액 | FEBKO · 계좌 정책 | 일 단위 |
| 하한 미달분 | max(0, 운영 하한 − 일 기말) | 0 초과 → D02 | 일별 잔액 | FEBKO · 계좌 정책 | 일 단위 |
| 유휴자금 평잔 | Σ 초과분 ÷ 일수 | 초과 10일 이상 → A01 | 계좌별 판정 | 일별 잔액 | 평잔 합계는 함수로 |
| 기회비용 | 적수 × max(0, 운용 − 예금 금리) ÷ 365 | 금리 역전 → A05 | 계좌별 판정 | 계좌 정책 금리 | 한 달 기준 |
| 최대 부족액 | max(미달분) | 0 초과 → A02 · A03 | 계좌별 판정 | 일별 잔액 | 보전 이체 기준 |
| 운용 권고 | 이체 후 초과분, 천만원 내림 | 금리 차 > 0 | 이체·운용 제안 | 계좌별 판정 | 예상 차익 30일 |
CDS 구성
검증 화면은 계좌 8개를 서비스 데이터로 들고 있지만, 운영에서는 계좌 × 일자 집계를 CDS 로 내립니다. 아래는 그때 만드는 객체를 레이어 순서대로 적은 것입니다. 코드는 스케치이며, 표준 필드명은 릴리스에 따라 다르므로 주석에 확인할 자리를 적었습니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | ZIDLE_ACCTPOL | 계좌별 하한 · 상한 · 금리 정책 | 정책은 바뀝니다. 코드에 박으면 바뀔 때마다 개발자를 부릅니다 |
| 차원 | ZI_IdleBankAccount | 하우스뱅크 계좌 + 정책 + 텍스트 | 큐브에서 join 을 한 번만 걸게 합니다 |
| 큐브(일) | ZI_IdleCashDaily | 계좌 × 일자 잔액과 초과 · 미달분 | 판정의 최소 단위를 DB 에서 만듭니다 |
| 큐브(월) | ZI_IdleCashAccount | 계좌 × 월 적수 · 평잔 · 기회비용 · 판정 | 집계를 화면이 아니라 DB 에서 합니다 |
| 쿼리 | ZC_IdleCashQuery | 분석 쿼리 — 회사 · 유형 · 판정 필터 | 표준 분석 도구가 그대로 띄웁니다 |
| 권한 | ZI_IDLECASHACCOUNT (DCL) | 회사코드 · 하우스뱅크 권한 | 집계를 읽는 자리에 걸어야 합니다 |
| 서비스 | ZUI_IDLECASH | Service Definition · Binding | 화면이 부르는 서비스를 한 곳에 묶습니다 |
① 계좌 정책 테이블
판정의 모든 기준이 이 표에서 나옵니다. 계좌마다 운영 하한과 보유 상한, 예금 금리와 운용 기준 금리를 둡니다. 유효 시작일을 키에 넣어 정책을 바꿔도 지난 달 판정이 흔들리지 않게 했습니다.
" ────────────────────────────────────────────────────────────────
" ZIDLE_ACCTPOL — 계좌별 자금 정책 (투명 테이블)
" 역할 : 운영 하한 · 보유 상한 · 예금 금리 · 운용 기준 금리
" 나눈 이유 : 정책은 자금 회의마다 바뀐다. 코드가 아니라 표에 둔다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '계좌별 자금 정책'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zidle_acctpol {
key mandt : mandt not null;
key bukrs : bukrs not null;
key hbkid : hbkid not null; " 하우스뱅크
key hktid : hktid not null; " 계좌 ID
key valid_from: abap.dats not null; " 정책 유효 시작일
acct_type : abap.char(3); " OP 운영 · COL 수금 · PAY 지급 · RES 예비
@Semantics.amount.currencyCode : 'zidle_acctpol.waers'
min_bal : abap.curr(23,2); " 운영 하한
@Semantics.amount.currencyCode : 'zidle_acctpol.waers'
max_bal : abap.curr(23,2); " 보유 상한 (0 = 미설정)
waers : waers;
dep_rate : abap.dec(5,2); " 예금 금리 %
inv_rate : abap.dec(5,2); " 운용 기준 금리 %
}
② 계좌 차원 뷰
하우스뱅크 계좌에 정책을 붙인 한 행입니다. 텍스트와 값 도움말이 이 뷰 하나를 보게 해 화면 · 쿼리 · 권한이 같은 계좌 정의를 씁니다.
" ────────────────────────────────────────────────────────────────
" ZI_IdleBankAccount — 계좌 차원 (T012K + 정책)
" 역할 : 계좌 한 행 = 은행 · 계좌 · 유형 · 하한 · 상한 · 금리
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '유휴자금 — 계좌 차원'
@Analytics.dataCategory: #DIMENSION
@ObjectModel.representativeKey: 'AcctId'
define view entity ZI_IdleBankAccount
as select from t012k as k
inner join zidle_acctpol as p on p.bukrs = k.bukrs
and p.hbkid = k.hbkid
and p.hktid = k.hktid
{
key k.bukrs as Bukrs,
key k.hbkid as HouseBank,
key k.hktid as AcctId,
p.acct_type as AcctType,
@Semantics.amount.currencyCode: 'Waers'
p.min_bal as MinBal,
@Semantics.amount.currencyCode: 'Waers'
p.max_bal as MaxBal,
p.waers as Waers,
p.dep_rate as DepRate,
p.inv_rate as InvRate
}
where p.valid_from <= $session.system_date // 기간 기준 정책 선택은 확인 필요
③ 일별 잔액 큐브
은행 명세의 일 기말 잔액에 정책을 붙여 초과분과 미달분을 DB 에서 만듭니다. 판정의 최소 단위가 여기서 정해집니다.
" ────────────────────────────────────────────────────────────────
" ZI_IdleCashDaily — 계좌 × 일자 잔액 큐브
" 역할 : 일 기말 · 상한 초과분 · 하한 미달분
" 주의 : FEBKO 의 기초 · 기말 잔액 필드명은 릴리스별 확인 필요
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '유휴자금 — 일별 잔액'
@Analytics.dataCategory: #CUBE
define view entity ZI_IdleCashDaily
as select from febko as h
inner join ZI_IdleBankAccount as a on a.Bukrs = h.bukrs
and a.HouseBank = h.hbkid
and a.AcctId = h.hktid
{
key h.bukrs as Bukrs,
key h.hktid as AcctId,
key h.azdat as BalDate,
@Semantics.amount.currencyCode: 'Waers'
h.esbtr as CloseBal, // 확인 필요
a.MinBal, a.MaxBal, a.Waers,
case when a.MaxBal > a.MinBal and h.esbtr > a.MaxBal
then h.esbtr - a.MaxBal else 0 end as OverAmt,
case when h.esbtr < a.MinBal
then a.MinBal - h.esbtr else 0 end as UnderAmt
}
④ 계좌 월 큐브
일별 큐브를 계좌 × 월로 묶어 적수 · 평잔 · 초과일 · 미달일 · 기회비용을 계산합니다. 화면의 계좌별 판정 탭이 이 뷰 한 줄입니다.
" ────────────────────────────────────────────────────────────────
" ZI_IdleCashAccount — 계좌 × 월 집계
" 역할 : 적수 · 평잔 · 초과일 · 미달일 · 최대 부족액 · 기회비용
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '유휴자금 — 계좌별 월 집계'
@Analytics.dataCategory: #CUBE
define view entity ZI_IdleCashAccount
as select from ZI_IdleCashDaily as d
inner join ZI_IdleBankAccount as a on a.Bukrs = d.Bukrs and a.AcctId = d.AcctId
{
key d.Bukrs,
key d.AcctId,
key left( d.BalDate, 6 ) as YearMonth,
sum( d.OverAmt ) as IdleSum,
division( sum( d.OverAmt ), count(*), 0 ) as IdleAvg,
sum( case when d.OverAmt > 0 then 1 else 0 end ) as IdleDays,
sum( case when d.UnderAmt > 0 then 1 else 0 end ) as ShortDays,
max( d.UnderAmt ) as ShortMax,
// 금리 차가 음수면 0 — 금리 역전 계좌는 기회비용이 없다
cast( sum( d.OverAmt ) as abap.dec(23,2) )
* case when a.InvRate > a.DepRate then a.InvRate - a.DepRate else 0 end
/ 36500 as OppCost
}
group by d.Bukrs, d.AcctId, left( d.BalDate, 6 ), a.InvRate, a.DepRate
⑤ 분석 쿼리
표준 분석 도구가 그대로 띄울 수 있는 쿼리입니다. 회사 · 계좌 유형 · 판정 코드를 필터로 열어 둡니다.
" ────────────────────────────────────────────────────────────────
" ZC_IdleCashQuery — 분석 쿼리
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '계좌별 유휴자금 운용 점검'
@Analytics.query: true
define transient view entity ZC_IdleCashQuery
provider contract analytical_query
as projection on ZI_IdleCashAccount
{
@Consumption.filter: { selectionType: #SINGLE, mandatory: true }
@AnalyticsDetails.query.axis: #ROWS
Bukrs,
@AnalyticsDetails.query.axis: #ROWS
AcctId,
@Consumption.filter: { selectionType: #SINGLE, mandatory: true }
YearMonth,
IdleAvg,
IdleDays,
ShortDays,
ShortMax,
OppCost
}
⑥ 권한(DCL)
회사코드와 하우스뱅크 권한을 집계를 읽는 자리에 겁니다. 상세에만 걸면 합계에서 남의 계좌가 드러납니다.
" ────────────────────────────────────────────────────────────────
" DCL — 회사코드 권한 (표준 권한 객체)
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '유휴자금 계좌 권한'
@MappingRole: true
define role ZI_IDLECASHACCOUNT {
grant select on ZI_IdleCashAccount
where ( Bukrs ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
⑦ 서비스 정의
화면이 부르는 엔티티셋을 한 곳에 묶습니다. 운영 전환 시 서비스 바인딩을 게시하고 manifest 의 서비스 주소만 바꿉니다.
" ────────────────────────────────────────────────────────────────
" ZUI_IDLECASH — Service Definition
" ────────────────────────────────────────────────────────────────
@EndUserText.label: '유휴자금 운용 점검 서비스'
define service ZUI_IDLECASH {
expose ZI_IdleCashAccount as AccountSet;
expose ZI_IdleCashDaily as DailySet;
}
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 계좌 정책 확정 | 계좌별 하한 · 상한 · 금리 | 판정이 담당자마다 달라집니다 | 자금팀 |
| 원천 잔액 선택 | 은행 명세 잔액인지 원장 잔액인지 | FF7A 와 숫자가 어긋납니다 | 자금팀 · CO |
| 유휴 지속 기준 | 초과 며칠부터 유휴로 볼지 | 일시 쌓임까지 점검 대상이 됩니다 | 자금팀 |
| 운용 단위 · 상품 | 천만원 단위, 운용 상품 범위 | 제안이 실행할 수 없는 금액이 됩니다 | 재무 |
| 권한 설계 | 회사코드 · 하우스뱅크 | 다른 법인 계좌가 보입니다 | 보안 |
| 대사 체계 | FF7A 기말 잔액과 맞출 항목 | 숫자를 믿지 못합니다 | 자금팀 |
| 전송(TR) 순서 | 테이블 → 차원 → 큐브 → 쿼리 → DCL → 서비스 | 활성화 오류로 이송이 멈춥니다 | Basis |
| 서비스 활성화 | 서비스 바인딩 게시 또는 /IWFND/MAINT_SERVICE, manifest 서비스 주소 교체 | 화면이 서비스를 찾지 못합니다 | Basis |
| 배치 등록 | 아침 판정 자동 실행 여부 | 사람이 열 때만 판정합니다 | Basis · 자금팀 |
운영 데이터로 갈 때
판정 단위는 계좌 × 일자입니다. 계좌가 수백 개여도 한 달은 수천 행이라 부담이 작지만, 기간을 넓히면 일수만큼 늘어납니다. 회사 · 기간을 필수 조건으로 두고, 화면은 월 집계 뷰를, 상세만 일별 뷰를 읽도록 나눕니다. 은행 명세가 없는 날은 전일 기말을 이월하는 규칙을 뷰에서 정해 두어야 일수가 빠지지 않습니다. 응답 시간 목표는 조회 2초 이내로 둡니다.
자주 묻는 질문
도입 검토에서 나올 질문을 네 묶음으로 정리했습니다.
숫자와 산식
유휴자금 평잔은 어떻게 계산합니까?
날마다 일 기말 잔액에서 보유 상한을 뺀 값 중 0 보다 큰 부분을 초과분으로 떼고, 한 달 동안 더한 적수를 일수로 나눕니다. 상한을 넘지 않은 날은 0 으로 더해지므로 평잔은 "상한을 넘어 머문 금액의 평균" 입니다.
기회비용은 실제 손실입니까?
아닙니다. 상한 초과분을 운용 기준 금리로 굴렸다면 받았을 이자와 지금 예금 금리의 차이를 계산한 값입니다. 장부에는 남지 않는 비용을 크기로 보여 주는 지표이며, 실제 운용 여부와 손익 판단은 회사가 합니다.
금리가 역전된 계좌는 왜 확인 필요입니까?
예금 금리가 운용 기준 금리 이상이면 옮겨서 얻는 이익이 없어 기회비용이 0 이 됩니다. 그런데도 상한을 넘었다면 정책 상한이 맞는지, 예치 조건이 어떤지를 회사가 먼저 봐야 하므로 확인 필요로 둡니다.
보전 이체 금액은 왜 기말 부족액보다 클 수 있습니까?
이번 달 하한 미달이 있었던 계좌는 다음 지급일에도 같은 부족이 생길 수 있어, 최대 부족액만큼 미리 채우도록 제안합니다. 다만 보유 상한을 넘지 않는 범위로 자릅니다.
운용 권고는 왜 천만원 단위입니까?
단기 운용 상품은 보통 일정 단위로 들어갑니다. 이체 뒤 남는 초과분을 천만원 단위로 내림해 제안하므로 실행할 수 없는 끝전이 남지 않습니다. 단위는 회사가 바꿀 수 있습니다.
대사식은 몇 가지를 검산합니까?
일별 이월, 전일 이월, 월 잔액, 월 입금 · 출금 합계, 잔액 구간 분해, 유휴자금 적수, 이체 송신 = 수신, 이체·운용 후 잔액, 제안 명세 = 계좌 집계, 회사 잔액 보존까지 11종입니다. 검증용 샘플에서 1,559건을 전수 검산해 차이 0 이었습니다.
화면과 조작
조회 버튼은 어디에 있습니까?
조회조건 영역 입력 칸의 맨 오른쪽입니다. 화면 아래 바에 두지 않았고, 입력 칸에서 Enter 키를 눌러도 같은 조회가 실행됩니다. 처음 열면 한 번 자동으로 조회합니다.
점검 코드는 어느 탭에 걸립니까?
A 로 시작하는 코드는 계좌별 판정 탭에, D 로 시작하는 코드는 일별 잔액 탭에 걸립니다. 계좌 유형은 계좌 탭에만, 잔액일은 일별 탭에만 걸립니다.
잔액일 기간은 어떻게 보내집니까?
시작과 종료를 모두 넣으면 하나의 구간 조건으로, 하나만 넣으면 이상 · 이하 조건으로 보냅니다. 서비스는 날짜 조건을 직접 받아 걸러 냅니다.
CSV 에는 무엇이 담깁니까?
지금 보고 있는 탭의 조회 결과가 화면 열 순서 그대로 UTF-8 CSV 로 내려옵니다. 파일 이름은 기능명과 탭 이름입니다.
좁은 화면에서도 쓸 수 있습니까?
조회조건은 줄을 바꿔 쌓이고, 계좌 표는 회사 · 계좌 두 열을 고정한 채 가로로 넘깁니다. 상세 창은 휴대폰 폭에서 화면을 가득 채웁니다.
판정과 활용
점검 필요가 나오면 문제가 있다는 뜻입니까?
아닙니다. 다시 볼 대상을 가리는 표시입니다. 이 화면은 점검 도구이며, 이체 · 운용의 실행과 회계 판단의 최종 결정은 회사와 감사인이 합니다.
상한을 며칠 넘으면 유휴로 봅니까?
한 달에 10일 이상이면 유휴 지속(A01)으로 봅니다. 그보다 짧은 초과는 일시적인 쌓임으로 보고 정상으로 둡니다. 기준 일수는 회사가 정합니다.
초과와 미달이 같은 달에 함께 나오면 무엇을 봐야 합니까?
잔액 총량보다 입출금 시점이 문제일 가능성이 큽니다. 수금된 돈을 언제 다른 계좌로 옮기는지, 지급일이 몰려 있지 않은지를 먼저 점검합니다.
이 화면이 실제로 이체를 실행합니까?
아닙니다. 금액과 방향을 제안할 뿐입니다. 실행은 표준 지급 · 이체 절차와 은행 시스템에서 하고, 실행된 전기는 원장에서 확인합니다.
적용 시기나 기준서 시행일이 있습니까?
특정 기준서를 다루는 화면이 아니므로 시행일이 없습니다. 자금 관리 영역의 점검 도구이며, 기준값은 회사의 자금 정책을 따릅니다.
도입과 운영
표준 FF7A 를 없애야 합니까?
아닙니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 이 화면의 월 기말 잔액은 FF7A 의 같은 날 잔액과 맞춰 보는 것이 첫 대사 지점입니다.
데이터 원천은 무엇입니까?
은행 거래명세의 일 기말 잔액과 하우스뱅크 계좌 마스터, 그리고 회사가 정하는 계좌 정책입니다. 정책 표는 운영 전환에서 가장 먼저 합의할 항목입니다.
운영 연결에는 무엇이 필요합니까?
계좌 정책 테이블과 CDS 뷰를 만들어 이송하고, 서비스 바인딩을 게시한 뒤 화면의 서비스 주소만 바꾸면 됩니다. 개발보다 정책 합의에 시간이 더 듭니다.
권한은 어떻게 막습니까?
회사코드 표준 권한 객체를 집계 뷰에 겁니다. 상세에만 걸면 합계와 자기 몫의 차이로 다른 법인 잔액이 드러나므로 집계 단계에 둡니다.
계좌가 수백 개여도 됩니까?
판정은 계좌 × 일자 단위로 DB 에서 집계하므로 계좌 수보다 일수가 부담입니다. 회사 · 기간을 필수 조건으로 두고, 월 집계 뷰를 읽도록 하면 응답 시간을 지킬 수 있습니다.
화면의 숫자는 실제 회사 자료입니까?
아닙니다. 가상 회사 두 곳과 가상 은행 · 계좌로 만든 검증용 샘플 데이터이며 실제 고객사의 잔액 · 금리 · 금액을 쓰지 않았습니다.