자금 예측 유동성 갭 점검 — 앞으로 12주의 현금 유입·유출 예정을 현금화 예상일 기준으로 다시 모아 부족해지는 주차를 미리 가려 보는 화면
주차 재배정 · 기말 예상 잔고 · 최소 유동성 한도 대비 · 차입한도 후 부족액 · 정합성 대사 — 소개 영상과 실제 화면 6종, 그리고 CDS 코드까지
소개 영상1분 29초8개 장면음성 안내 · 자막조회 → 주차별 갭 → 명세 → 구분별 → 대사 → 상세
개발 배경 — 이 앱을 사용해야 하는 이유
자금 팀이 매주 월요일 아침에 묻는 질문은 단순합니다. 앞으로 열두 주 동안 통장에 돈이 모자라는 주가 있는가. 답은 매출채권 회수 예정, 매입채무 지급 예정, 급여 · 세금 · 차입금 상환 같은 전표 이전의 예정 항목을 주 단위로 모아 기초 잔고에서 더하고 빼 보면 나옵니다. 문제는 이 “주 단위로 모으는 일”에 있습니다. 대개 만기일 기준으로 주를 넣어 두기 때문에, 고객이 늘 열흘씩 늦게 내는 채권은 장부상 이번 주에 들어오는 돈으로 잡혀 있습니다.
이 앱은 그 자리를 메웁니다. 예정 항목마다 현금화 예상일이 속한 주차를 다시 구해 장부 주차와 견주고, 다시 모은 주차별 유입 · 유출로 기말 예상 잔고와 누적 갭을 계산해 최소 유동성 한도, 미사용 차입한도와 나란히 놓습니다. 모자라는 주에는 이유가 붙은 점검 코드를 답니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 점검 관점을 더해 확장합니다.
만기일로 넣은 주차와 현금이 들어오는 주차는 다르다
장부 주차가 틀렸다는 뜻이 아니라 기준이 다르다는 뜻입니다. 만기일 기준 주차는 계약대로의 약속이고, 현금화 예상일 기준 주차는 과거 지연 이력을 반영한 예상입니다. 이 앱은 둘을 나란히 두고 달라진 줄만 F01 로 올립니다. 어느 쪽이 맞는지 정하는 것은 자금 팀의 몫이고, 화면은 “이 줄을 옮기면 어느 주가 얼마나 달라지는가”를 보여 줍니다.
잔고가 한도 아래인 것과 차입한도를 써도 모자란 것은 다른 이야기다
한도 아래로 내려가도 미사용 차입한도로 메울 수 있는 주가 있고, 그마저 모자란 주가 있습니다. 앞은 조달 계획을 확인하면 되는 주(G02), 뒤는 지급 조정까지 검토해야 하는 주(G03)입니다. 이 앱은 둘을 코드로 가르고 상단 요약에서 부족한 주차 수와 최소 기말 예상 잔고를 먼저 보여 줍니다.
화면이 계산할 수 없는 것은 사람에게 돌려준다
확정 유입 비율이 낮은 주나 오래 연체된 채권을 확정으로 올린 줄은 계산으로 옳고 그름을 가릴 수 없습니다. 이런 줄을 오류로 몰면 현업이 화면을 믿지 않게 됩니다. 그래서 점검 필요가 아니라 확인 필요로 따로 세우고, 근거 자료를 회사가 확인하도록 안내합니다.
사용 방법
- 조회조건 입력 — 회계연도는 필수(4자리, 예: 2026)입니다. 회사 · 방향 · 구분 · 기준일 구간 · 거래처 · 점검 코드 · 점검 결과는 선택이며 “전체”로 두면 그 조건은 쓰이지 않습니다.
- 조회 — 조건 칸들의 가장 오른쪽에 있는 조회 버튼을 누르거나 입력 칸에서 Enter 키를 누릅니다. 처음 열 때는 자동으로 한 번 조회합니다.
- 요약 지표 확인 — 점검한 주차 수, 유동성 부족 주차, 최소 기말 예상 잔고, 주차 배정 차이 명세, 확인 필요 건수, 정합성 대사 차이 건수를 먼저 봅니다.
- 탭 이동 — 주차별 유동성 갭 → 예정 항목 명세 → 구분별 집계 → 대사 결과 순서로 봅니다.
- 행 클릭 상세 — 주차별 유동성 갭에서 행을 누르면 그 주에 현금화되는 예정 항목이 팝업으로 열립니다.
- 내려받기 — 현재 탭의 조회 결과를 CSV(UTF-8)로 저장합니다.
숫자를 믿을 수 있는가 — 검증 결과
점검 화면이 틀린 숫자를 보여 주면 점검 자체가 의미를 잃습니다. 그래서 화면에 올리기 전에 대사식을 세워 검증용 샘플 데이터 전수에 돌렸습니다.
| 검사 | 검사 건수 | 차이 건수 | 최대 차이 |
|---|---|---|---|
| 기초 잔고 + 유입 − 유출 = 기말 예상 잔고 | 24 | 0 | 0 |
| 주차 기초 잔고 = 직전 주 기말 예상 잔고 | 22 | 0 | 0 |
| 명세 유입 합계 = 주차 유입 합계 + 예측 기간 밖 | 2 | 0 | 0 |
| 명세 유출 합계 = 주차 유출 합계 + 예측 기간 밖 | 2 | 0 | 0 |
| 구분별 금액 합계 = 명세 합계 | 4 | 0 | 0 |
| 마지막 주 기말 − 최초 기초 = 누적 갭 | 2 | 0 | 0 |
| 주차 유입 · 유출 = 명세 재집계 (별도 스크립트) | 24 | 0 | 0 |
| 순 갭 = 유입 − 유출 (별도 스크립트) | 24 | 0 | 0 |
| 판정 규칙 재실행 — 주차 24 · 명세 109 | 133 | 0 | - |
검사 건수는 모두 237건이고 차이는 0건입니다. 이 숫자는 정합성 검사이고, 화면에서 점검 필요로 표시되는 건수와는 다른 이야기입니다. 점검 화면을 보여 주려고 일부러 어긋나게 만든 항목이 샘플에 들어 있습니다.
| 점검 화면 예외 | 건수 | 내용 |
|---|---|---|
| 주차 점검 필요 (G01 · G02 · G03) | 2 · 5 · 1 | 장부 배정 차이 · 한도 미달 · 차입한도를 써도 부족 |
| 주차 확인 필요 (G05) | 6 | 확정 유입 비율이 60퍼센트 미만 |
| 명세 점검 필요 (F01) | 6 | 장부 주차와 재계산 주차가 다름 |
| 명세 확인 필요 (F02 · F04) | 4 · 4 | 만기 후 30일 초과 확정 유입 · 예측 기간 밖 |
| 정상 (G00 · F00) | 10 · 95 | 조치 없음 |
정합성 차이 0건과 점검 필요 건수는 서로 다른 층의 숫자입니다. 앞은 “화면이 계산을 제대로 했다”이고, 뒤는 “화면이 계산한 결과 다시 볼 줄이 이만큼 있다”입니다.
무엇으로 만들었나
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 컨트롤 | 조회조건 영역, 요약 지표 여섯 칸, 탭 네 개, 주차 상세 팝업 | 한 화면에서 조회 · 점검 · 상세 · 대사까지 이어서 보도록 탭으로 나눴습니다. |
| 표 | 주차 · 명세는 열 고정이 되는 분석용 표, 구분 · 대사는 일반 표 | 열이 많은 탭은 앞 열을 고정해 가로로 밀어도 회사와 주차가 보이게 했습니다. |
| 판정 로직 | 점검 코드 G00 · G01 · G02 · G03 · G05 · F00 · F01 · F02 · F04 를 한 곳에서 판정 | 판정 순서와 임계값을 한 곳에 두어 회사 기준으로 바꿀 때 한 군데만 고칩니다. |
| 데이터 연결 | OData V2 서비스 하나를 앱 설정에 선언하고 화면은 모델 경로에만 바인딩 | 운영 서비스로 바꿀 때 서비스 주소 한 줄만 교체하면 되고 화면 코드는 그대로입니다. |
| 서비스 구성 | 주차 · 명세 · 구분 · 대사 네 가지 데이터 묶음과 부족 주차 수 · 최소 기말 잔고를 구하는 함수 두 개 | 조회조건은 서비스 필터로 보내고 정렬 · 건수도 서비스가 처리합니다. |
| 오류 처리 | 연결 실패 · 요청 실패 · 빈 응답을 구분해 사용자 메시지로 안내 | 서비스에 닿지 않을 때 빈 화면이나 콘솔 오류로 끝나지 않게 했습니다. |
| 테마 | sap_horizon | Fiori 기본 테마를 그대로 따라 다른 앱과 같은 모양을 유지합니다. |
앱 정보
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) — 자금 |
| 관련 기준서 · 대상 영역 | 관련 기준서 없음 / 대상 영역: 자금 예측 |
| SAP 표준 T-code | FF7B · FF7A · FBL5N · FBL1N · F110 |
| 화면 성격 | 조회 · 점검 화면 (탭 4개 + 주차 상세 팝업) |
| 데이터 연동 | OData V2 서비스 |
| 테마 | sap_horizon |
실행 화면
실제 화면 6종입니다. 순서는 사용 순서를 따랐습니다. 처음 연 화면에서 시작해 주차별 갭, 명세, 구분별 집계, 대사 결과, 행 상세로 이어집니다. 화면 속 금액은 검증용 샘플 데이터이며 실제 회사의 숫자가 아닙니다.
처음 열었을 때 — 조회조건과 요약 지표, 주차별 유동성 갭

화면을 열면 2026 회계연도로 자동 조회됩니다. 맨 위 조회조건, 그 아래 요약 지표 여섯 칸(점검한 주차 수 · 유동성 부족 주차 · 최소 기말 예상 잔고 · 주차 배정 차이 명세 · 확인 필요 건수 · 정합성 대사 차이), 아래에 탭 네 개가 놓입니다. 조회 버튼은 입력 칸의 맨 오른쪽 끝에 있고 Enter 키로도 같은 조회가 됩니다.
회사 2000 의 주차별 유동성 갭 — 한도에 견준 기말 예상 잔고

한 줄이 한 주입니다. 기초 잔고에 그 주 유입을 더하고 유출을 뺀 기말 예상 잔고가 다음 주의 기초 잔고가 됩니다. 기말 예상 잔고가 최소 유동성 한도 아래로 내려간 주는 G02, 미사용 차입한도를 써도 모자라면 G03 으로 올라갑니다. 샘플에서는 회사 2000 의 후반부 주차가 여기에 걸리도록 일부러 넣었습니다.
예정 항목 명세 — 현금화 예상일 기준으로 주차를 다시 구한다

명세 한 줄이 예정 항목 하나입니다. 만기일에 지연 반영 일수를 더한 현금화 예상일이 속한 주차를 재계산 주차로 구하고, 장부에 넣어 둔 주차와 다르면 F01 로 올립니다. 만기 후 30일을 넘긴 채권을 확정 유입으로 올린 줄은 F02, 재계산 주차가 12주 밖인 줄은 F04 로 따로 세웁니다.
구분별 집계 — 어떤 종류의 현금이 움직이는가

매출채권 회수 · 환급 · 차입 실행 · 매입채무 지급 · 급여 · 세금 · 차입금 상환 · 설비투자 · 배당 아홉 구분마다 건수와 금액, 예상 금액, 지연 반영 금액을 모읍니다. 주차별 숫자가 어느 종류의 현금에서 나왔는지 거꾸로 짚을 때 씁니다.
대사 결과 — 정합성 대사와 참고 대사

정합성 대사 여섯 가지의 검사 건수와 차이 건수, 최대 차이를 보여 줍니다. 이 탭이 0 이 아니면 계산이나 데이터 연결을 의심해야 하고, 점검 필요 건수와는 다른 층의 숫자입니다.
주차 한 줄을 열어 본다 — 그 주에 현금화되는 예정 항목

주차별 유동성 갭 탭에서 행을 누르면 그 주차의 기말 예상 잔고와 한도 대비 판정, 같은 주차에 현금화되는 예정 항목이 팝업으로 열립니다. 어느 거래처의 어떤 항목 때문에 그 주가 모자라는지 바로 짚을 수 있습니다.
화면 뒤에서 일어나는 일
조회 버튼을 누르면 화면은 입력된 조건을 필터로 바꿔 서비스에 보냅니다. 서비스는 필터에 맞는 행만 정렬해 돌려주고, 요약 지표의 부족 주차 수와 최소 기말 예상 잔고는 별도 함수 호출로 셉니다. “전체”로 둔 조건은 필터로 만들지 않고, 기준일 구간은 시작 · 종료 날짜를 그대로 범위 조건으로 보냅니다.
점검 판정 규칙 — 조건에서 사용자 조치까지
| 대상 | 코드 | 판정 조건 | 결과 | 사용자 조치 |
|---|---|---|---|---|
| 주차 | G03 | 기말 예상 잔고 + 미사용 차입한도 < 최소 유동성 한도 | 점검 필요 | 한도를 써도 모자라는 금액을 확인하고 조달 · 지급 조정 계획을 먼저 본다 |
| 주차 | G02 | 기말 예상 잔고 < 최소 유동성 한도 | 점검 필요 | 미사용 차입한도로 메울 수 있는지 확인한다 |
| 주차 | G01 | 장부 배정 유입 · 유출이 재계산 값과 다름 | 점검 필요 | 지연을 반영해 주차를 옮겨야 할 명세를 찾는다 |
| 주차 | G05 | 확정 유입 비율 60퍼센트 미만 | 확인 필요 | 예상 유입의 근거를 회사가 먼저 확인한다 |
| 주차 | G00 | 위 조건에 걸리지 않음 | 정상 | 조치 없음 |
| 명세 | F01 | 장부 주차 ≠ 재계산 주차 | 점검 필요 | 현금화 예상일이 속한 주차로 옮겨 다시 집계한다 |
| 명세 | F02 | 유입이고 만기 경과일 30일 초과이며 확정 표시 | 확인 필요 | 회수 약속 등 확정 근거를 회사가 확인한다 |
| 명세 | F04 | 재계산 주차가 예측 기간(12주) 밖 | 확인 필요 | 기간 밖 합계로 따로 보고 예측 기간 확장 여부를 정한다 |
| 명세 | F00 | 위 조건에 걸리지 않음 | 정상 | 조치 없음 |
주차는 G03 → G02 → G01 → G05 순서로 판정하고 앞 조건에 걸리면 뒤 조건은 보지 않으므로 한 줄에는 코드가 하나만 붙습니다.
산출 · 대사 순서
- 주차 배정 — 명세마다 현금화 예상일이 속한 주차(재계산 주차)를 구합니다.
- 주차별 유입 · 유출 — 같은 재계산 주차의 유입과 유출을 각각 더합니다.
- 기말 예상 잔고 = 기초 잔고 + 유입 − 유출. 다음 주 기초 잔고는 직전 주 기말 예상 잔고입니다.
- 누적 갭 = 주차별 순 갭의 누적 합.
- 한도 대비 여유 = 기말 예상 잔고 − 최소 유동성 한도. 차입한도 후 부족액 = max(0, 한도 미달액 − 미사용 차입한도).
- 정합성 대사 — 기초 + 유입 − 유출 = 기말, 주차 기초 = 직전 주 기말, 명세 합계 = 주차 합계 + 기간 밖, 구분별 합계 = 명세 합계, 마지막 주 기말 − 최초 기초 = 누적 갭.
조회조건
| 조회조건 | 필수 | 기본값 | 서비스 필터 |
|---|---|---|---|
| 회계연도 | 필수 | 2026 | 회계연도 같음 |
| 회사 | 선택 | 전체 | 회사 같음 |
| 방향 | 선택 | 전체 | 방향 같음 (명세 · 구분별) |
| 구분 | 선택 | 전체 | 구분 같음 (명세 · 구분별) |
| 기준일 시작 · 종료 | 선택 | 비어 있음 | 주 시작일 · 현금화 예상일 범위 |
| 거래처 · 내용 | 선택 | 비어 있음 | 포함 검색 (명세) |
| 점검 코드 · 점검 결과 | 선택 | 전체 | G 는 주차, F 는 명세에 적용 |
좁은 화면에서 달라지는 것
창 폭이 줄어들면 조회조건 칸이 한 줄에 하나씩 쌓이고 요약 지표는 두 칸씩 두 줄로 내려옵니다. 표는 가로로 밀 수 있고 앞 열이 고정됩니다.
SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 점검 관점을 더해 확장합니다. 이 절은 어디까지가 표준이고 어디서부터가 이 앱인지, 두 화면의 숫자를 어디서 맞춰 보는지를 정리합니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | 표준 화면으로 되는 정도 | 이 앱이 더하는 관점 |
|---|---|---|
| 유동성 예측과 현금 포지션 확인 | FF7B · FF7A 로 충분합니다 | 주차 단위 기말 예상 잔고를 한도에 견준 판정을 한 줄에 보여 줍니다 |
| 고객 · 공급업체 개별 항목 확인 | FBL5N · FBL1N 으로 충분합니다 | 개별 항목을 현금화 예상일 기준 주차로 다시 모아 줍니다 |
| 지연을 반영했을 때 어느 주가 달라지는가 | 항목별로 날짜를 보며 직접 계산해야 합니다 | 장부 주차와 재계산 주차가 다른 줄만 F01 로 올립니다 |
| 차입한도를 써도 모자라는 주 | 표준 화면에서 한 번에 가리기 어렵습니다 | 한도 미달액과 미사용 차입한도를 견줘 G03 으로 올립니다 |
| 지급 실행 | F110 이 담당합니다 | 지급 일정과 명세의 현금화 예상일을 견주는 점검 관점만 더합니다 |
T-code 별 연계 지점
| T-code | 이름 | 연계 |
|---|---|---|
| FF7B | 유동성 예측 조회 | 주차별 유입 · 유출 예정을 표준 유동성 예측과 같은 관점으로 다시 모아 견줍니다. |
| FF7A | 현금 포지션 | 첫 주 기초 잔고가 표준 현금 포지션의 은행 잔고와 맞는지 대조합니다. |
| FBL5N | 고객 개별 항목 조회 | 매출채권 회수 예정 명세의 원천 항목을 확인합니다. |
| FBL1N | 공급업체 개별 항목 조회 | 매입채무 지급 예정 명세의 원천 항목을 확인합니다. |
| F110 | 자동 지급 | 지급 실행 일정과 명세의 현금화 예상일을 견줍니다. |
오가는 방법은 두 갈래입니다. 이 앱에서 시작할 때는 부족한 주의 상세에서 거래처와 항목을 확인한 뒤 FBL5N · FBL1N 으로 원천을 열고, 표준 화면에서 시작할 때는 이상한 잔고를 찾은 뒤 이 앱의 예정 항목 명세에서 그 항목이 어느 주로 재배정되는지 봅니다. 정식 자금 계획과 지급 실행은 표준 화면에 그대로 남으므로 운영 전환 때 기존 리포트를 없앨 필요가 없습니다.
요구사항 매핑표
| 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|
| 현금화 예상일 기준 주차 재배정 | 예정 항목 명세 | FlowSet.ExpectDate · WeekCalc | 지연 반영 일수는 회사가 정하는 값 |
| 기말 예상 잔고와 누적 갭 | 주차별 유동성 갭 | GapSet.CloseCalc · CumGap | 마지막 주 기말 − 최초 기초 = 누적 갭 |
| 최소 유동성 한도 대비 판정 | 주차별 유동성 갭 | GapSet.Headroom · MinBuffer | 한도는 회사가 정하는 값(확인 필요) |
| 차입한도 후 부족액 | 주차별 유동성 갭 | GapSet.ShortAfterLine · CreditLine | 미사용 차입한도는 회사가 정하는 값(확인 필요) |
| 구분별 현금 흐름 | 구분별 집계 | CatSet.Amount · EstAmt · DelayAmt | 아홉 구분 |
| 정합성 확인 | 대사 결과 | ReconSet | 237건 전수 차이 0 |
확장 포인트 — 운영에서 실제로 손대는 자리
| 자리 | 무엇을 손대나 | 누가 |
|---|---|---|
| 예정 항목 범위 | 어느 구분(채권 · 채무 · 세금 · 급여 · 차입 · 설비 · 배당)을 예측에 넣을지 | 자금팀 |
| 지연 반영 일수 | 거래처 · 구분별 평균 지연 일수를 어디서 가져올지 | 자금팀 · 영업관리 |
| 한도 설정 | 최소 유동성 한도와 미사용 차입한도를 법인별로 어디서 읽을지 | 자금팀 · 재무기획 |
| 임계값 | 확정 유입 비율 60퍼센트, 만기 경과 30일, 예측 기간 12주 | 자금팀 |
CDS 구성 — 코드와 운영 작업
아래 코드는 이 화면이 쓰는 데이터를 S/4HANA 의 미결 항목 테이블 위에 CDS 로 올릴 때의 스케치입니다. 객체 이름은 기능을 뜻하는 영문으로 지었습니다. 표준 필드명은 확인한 것만 쓰고, 확인하지 못한 자리는 “확인 필요”로 남겼습니다. 실제 시스템의 릴리스에 맞춘 검증은 구현 단계에서 거쳐야 합니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 (설정) | 한도 설정 테이블 | 법인별 최소 유동성 한도 · 미사용 차입한도 · 지연 반영 일수 | 회사가 정하는 값이라 코드에 넣지 않습니다 |
| 차원 | ZI_LiqFlowItem | 예정 항목 한 줄에 현금화 예상일과 재계산 주차를 붙인 기본 뷰 | 주차 배정 식을 한 곳에서만 구합니다 |
| 큐브 | ZI_LiqWeekCube | 재계산 주차별 유입 · 유출과 기말 예상 잔고 | 잔고 이월을 한 뷰에 가둡니다 |
| 쿼리 / Consumption | ZC_LiqGapCheck | 점검 코드를 판정하고 화면 컬럼 이름으로 노출 | 판정 순서와 임계값을 이 뷰 하나가 책임집니다 |
| 권한 (DCL) | 쿼리용 역할 | 회사코드 단위 조회 제한 | 합계가 아닌 줄 단위에서 남의 회사 숫자가 새지 않게 합니다 |
| 서비스 | 서비스 정의 · 바인딩 | OData V2 로 게시 | 화면은 서비스 주소만 바라봅니다 |
① 기본 뷰 — 현금화 예상일과 재계산 주차를 한 곳에서
이 앱의 모든 숫자는 예정 항목이 어느 주로 들어가는지에서 출발합니다. 주차 배정 식이 화면과 배치에서 갈라지면 같은 항목이 다른 주에 잡히므로 한 뷰에서만 구합니다. 아래는 고객 미결 항목 쪽 스케치이고 공급업체 쪽은 같은 모양으로 유출을 만듭니다.
" ───────────────────────────────────────────────────────────────
" ZI_LiqFlowItem · 예정 항목 기본 뷰 (고객 미결 항목 쪽)
" 역할 : 현금화 예상일과 재계산 주차를 이 뷰 한 곳에서만 구한다.
" 이렇게 나눈 이유 : 주차 배정 식이 둘로 갈라지면 화면과 배치가 다른 숫자를 낸다.
" 스케치이며 지급조건 일수 처리와 필드명은 구현 단계에서 확인해야 한다.
" ───────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '유동성 갭 — 예정 항목(스케치)'
define view entity ZI_LiqFlowItem
as select from bsid
{
key bukrs as Bukrs,
key belnr as Belnr,
key buzei as Buzei,
'I' as Direction,
kunnr as Partner,
wrbtr as Amount,
dats_add_days( zfbdt, cast( zbd1t as abap.int4 ), 'FAIL' ) as DueDate
}
② 큐브 — 주차별 유입 · 유출과 기말 예상 잔고
유입과 유출을 재계산 주차로 모으고 기초 잔고를 이어 받아 기말 예상 잔고와 한도 대비 여유를 계산합니다. 잔고 이월은 주차 순서에 기대므로 윈도 계산 위치와 성능을 구현 단계에서 확인해야 합니다.
" ───────────────────────────────────────────────────────────────
" ZI_LiqWeekCube · 주차별 큐브
" 역할 : 재계산 주차별 유입·유출을 모으고 기말 예상 잔고를 구한다.
" 이렇게 나눈 이유 : 잔고 이월은 주차 순서에 기대므로 윈도 계산을 한 뷰에 가둔다.
" ───────────────────────────────────────────────────────────────
define view entity ZI_LiqWeekCube
as select from ZI_LiqFlowWeek as w
{
key w.Bukrs, key w.WeekNo, w.WeekStart,
w.OpenBal,
w.InAmt,
w.OutAmt,
w.OpenBal + w.InAmt - w.OutAmt as CloseCalc,
w.MinBuffer,
w.OpenBal + w.InAmt - w.OutAmt - w.MinBuffer as Headroom
}
③ 쿼리 — 점검 코드를 판정한다
판정 순서 G03 → G02 → G01 → G05 와 임계값을 이 쿼리가 책임집니다. 회사가 임계값을 바꾸려면 이 뷰의 상수 하나를 고치거나 설정 테이블에서 읽도록 확장합니다.
" ───────────────────────────────────────────────────────────────
" ZC_LiqGapCheck · 주차별 점검 쿼리
" 판정 순서 : G03 → G02 → G01 → G05 → G00 (앞 조건에 걸리면 뒤는 보지 않는다)
" 임계값(확정 유입 비율 60) 은 이 뷰 한 곳의 상수다.
" ───────────────────────────────────────────────────────────────
define view entity ZC_LiqGapCheck
as select from ZI_LiqWeekCube
{
key Bukrs, key WeekNo, CloseCalc, Headroom,
case
when Headroom < 0 and ( 0 - Headroom ) > CreditLine then 'G03'
when Headroom < 0 then 'G02'
when InBook <> InAmt or OutBook <> OutAmt then 'G01'
when CertPct < 60 then 'G05'
else 'G00'
end as CheckCode
}
④ 권한과 서비스
주차 합계 화면에서는 보이지 않던 남의 회사 숫자가 거래처 단위 명세 화면에서는 줄마다 드러납니다. 그래서 쿼리 뷰에 회사코드 단위 권한을 걸어 줄 단위에서도 제한합니다. 서비스 정의에서는 노출할 뷰를 정하고 OData V2 바인딩으로 게시하며, 앱 설정의 서비스 주소만 교체하면 운영 서비스로 붙습니다.
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다. 아래 항목은 코딩이 아니라 합의입니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 예정 항목 범위 | 예측에 넣을 구분과 전표 이전 예정 항목의 원천 | 주차별 유출이 빠져 잔고가 실제보다 좋아 보입니다 | 자금팀 |
| 지연 반영 일수 | 거래처 · 구분별 지연 일수의 산출 기준 | 현금화 예상일이 만기일과 같아져 재배정이 의미를 잃습니다 | 자금팀 · 영업관리 |
| 한도 설정 | 최소 유동성 한도와 미사용 차입한도 | 한도 대비 판정이 모두 정상이거나 모두 부족으로 나옵니다 | 자금팀 · 재무기획 |
| 기초 잔고 원천 | 첫 주 기초 잔고를 표준 현금 포지션의 어느 계정 범위에서 가져올지 | 첫 주부터 잔고가 어긋납니다 | 자금팀 · 회계팀 |
| 권한 설계 | 회사코드별 조회 범위 | 남의 회사 숫자가 줄 단위로 보입니다 | 보안 · 권한 |
| 대사 체계 | 표준 T-code 와 맞출 항목과 주기 | 화면 숫자를 믿어도 되는지 매번 다시 묻게 됩니다 | 자금팀 |
| 전송 · 서비스 활성화 | 전송 요청 순서, 서비스 게시와 앱 설정의 서비스 주소 교체 | 개발 환경 서비스에 운영 화면이 붙습니다 | IT 부서 · Basis |
운영 데이터로 갈 때
미결 항목은 수만 건이 될 수 있습니다. 이 앱이 보는 것은 항목 전수가 아니라 주차와 구분으로 모은 합계이므로 집계는 반드시 데이터베이스 쪽(큐브 뷰)에서 끝내야 합니다. 화면이 항목을 받아 합산하는 구조로 가면 응답이 느려집니다. 회계연도를 필수 조건으로 두고 기준일 구간으로 범위를 좁히며, 접근 경로가 쓰이는지 실행 계획으로 점검합니다. 응답 시간 기준은 회사가 정해야 합니다.
자주 묻는 질문
도입을 검토할 때 자주 나오는 질문을 네 묶음으로 모았습니다.
숫자와 산식
주차는 어떻게 다시 정하나요?
현금화 예상일이 속한 주차입니다. 주차 = 정수올림((현금화 예상일 − 첫 주 시작일 + 1) ÷ 7) 로 구하고, 첫 주 시작일보다 앞서거나 12주를 넘으면 “기간 밖”으로 따로 세웁니다. 현금화 예상일은 만기일에 회사가 정하는 지연 반영 일수를 더한 값입니다. 장부가 만기일 기준으로 주차를 넣어 두었다면 지연된 항목은 재계산 주차와 달라지고, 그 줄이 F01 로 올라옵니다.
기말 예상 잔고와 누적 갭은 무엇이 다른가요?
기말 예상 잔고는 기초 잔고 + 유입 − 유출이고 다음 주의 기초 잔고로 이어집니다. 누적 갭은 주차별 순 갭(유입 − 유출)을 처음부터 더해 간 값이라 잔고의 출발점이 빠져 있습니다. 그래서 마지막 주 기말 예상 잔고 − 최초 기초 잔고가 누적 갭과 같아야 하고, 이 식을 대사 항목으로 둡니다.
G02 와 G03 은 어떻게 다른가요?
G02 는 기말 예상 잔고가 최소 유동성 한도 아래로 내려간 주입니다. G03 은 한도 미달액이 미사용 차입한도보다 커서, 차입한도를 모두 써도 모자라는 주입니다. 판정은 G03 을 먼저 보므로 한 주에는 코드가 하나만 붙습니다. 한도와 차입한도는 회사가 정하는 값이며 이 화면이 대신 정하지 않습니다.
확인 필요는 오류인가요?
아닙니다. 확정 유입 비율이 60퍼센트 미만인 주(G05), 만기 후 30일을 넘긴 채권을 확정으로 올린 줄(F02), 12주 밖으로 밀린 줄(F04)은 화면이 계산으로 옳고 그름을 가릴 수 없고 근거를 사람이 봐야 하는 경우입니다. 그래서 점검 필요와 섞지 않고 따로 셉니다.
화면과 조작
조회조건에서 꼭 입력해야 하는 것은 무엇인가요?
회계연도 하나입니다. 회사 · 방향 · 구분 · 기준일 구간 · 거래처 · 점검 코드 · 점검 결과는 비워 두거나 “전체”로 두면 그 조건이 걸리지 않습니다. 점검 코드는 G 로 시작하면 주차 탭에, F 로 시작하면 명세 탭에 적용됩니다.
결과를 내려받을 수 있나요?
현재 탭의 조회 결과를 UTF-8 CSV 로 내려받습니다. 결산이나 자금 점검표에 붙이거나 담당자에게 확인을 요청할 때 쓰도록 만들었습니다.
화면의 숫자는 실제 회사 자료인가요?
아닙니다. 가상 회사 두 곳과 가상 거래처로 만든 검증용 샘플 데이터이며, 실제 고객사의 잔고 · 한도 · 금액을 쓰지 않았습니다.
표준 T-code 와 데이터
표준 T-code 를 쓰는 것과 무엇이 다른가요?
FF7B · FF7A 같은 표준 화면은 유동성 예측과 현금 포지션을 보여 줍니다. 이 앱은 그 위에 “지연을 반영해 주차를 다시 구했을 때 장부 배정과 어긋나는 항목”과 “차입한도를 써도 모자라는 주”를 한 화면에서 가려내는 관점을 더합니다. 표준 실행과 정식 자금 계획은 표준 화면에 그대로 둡니다.
원천 데이터는 어디서 오나요?
매출채권 회수 예정은 고객 미결 항목(BSID), 매입채무 지급 예정은 공급업체 미결 항목(BSIK)에서 옵니다. 세금 · 급여 · 차입금 상환 · 설비투자처럼 전표 이전에 잡는 예정 항목은 유동성 예측용 메모 레코드(FDES)에서 가져오는 것으로 설계했지만, 그 필드는 실제 시스템에서 확인이 필요합니다. 첫 주 기초 잔고의 원천(표준 현금 포지션의 은행 잔고)도 같습니다.
판정 기준 숫자는 어디서 바꾸나요?
최소 유동성 한도와 미사용 차입한도, 지연 반영 일수는 회사가 정하는 값이라 설정 데이터에서 읽습니다. 확정 유입 비율 60퍼센트, 만기 경과 30일 같은 임계값은 판정 쿼리의 상수 한 곳에 있으므로 회사 기준에 맞춰 그 자리만 바꾸면 됩니다.
도입과 운영
이 화면은 어떤 회계기준과 관련이 있나요?
특정 기준서에 묶인 화면이 아니라 자금 예측 영역의 점검 화면입니다. 기준서 시행일이 따로 없고, 예측 기간(12주)과 한도 기준은 회사가 정합니다.
점검 필요가 나오면 자금 조달을 해야 하나요?
그렇게 읽으면 안 됩니다. 점검 필요는 한도 미달이나 주차 배정 차이처럼 다시 확인할 대상을 가리는 표시입니다. 이 화면은 점검 도구이며 자금 조달과 지급 일정의 최종 판단은 회사가 합니다.
운영 데이터로 가면 느리지 않을까요?
이 앱이 보는 것은 미결 항목 수만 건이 아니라 주차와 구분으로 모은 합계입니다. 집계는 데이터베이스 쪽(큐브 뷰)에서 끝내고, 화면은 서비스가 걸러 준 결과만 받습니다. 회계연도를 필수 조건으로 두고 기준일 구간으로 범위를 좁히며, 실행 계획으로 접근 경로를 점검하는 것이 구현 단계의 일입니다.
여러 법인은 어떻게 보나요?
회사 조건으로 법인을 고르거나 전체로 두면 법인별 줄이 나뉘어 나옵니다. 법인 간 자금 풀링이나 연결 수준의 현금 포지션은 이 화면의 범위가 아니며, 법인별 점검을 먼저 끝내 두면 그 단계의 확인이 쉬워집니다.