재무회계

자금 예측 유동성 갭 점검 — 앞으로 12주의 현금 유입·유출 예정을 현금화 예상일 기준으로 다시 모아 부족해지는 주차를 미리 가려 보는 화면

주차 재배정 · 기말 예상 잔고 · 최소 유동성 한도 대비 · 차입한도 후 부족액 · 정합성 대사 — 소개 영상과 실제 화면 6종, 그리고 CDS 코드까지

소개 영상1분 29초8개 장면음성 안내 · 자막조회 → 주차별 갭 → 명세 → 구분별 → 대사 → 상세

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

자금 팀이 매주 월요일 아침에 묻는 질문은 단순합니다. 앞으로 열두 주 동안 통장에 돈이 모자라는 주가 있는가. 답은 매출채권 회수 예정, 매입채무 지급 예정, 급여 · 세금 · 차입금 상환 같은 전표 이전의 예정 항목을 주 단위로 모아 기초 잔고에서 더하고 빼 보면 나옵니다. 문제는 이 “주 단위로 모으는 일”에 있습니다. 대개 만기일 기준으로 주를 넣어 두기 때문에, 고객이 늘 열흘씩 늦게 내는 채권은 장부상 이번 주에 들어오는 돈으로 잡혀 있습니다.

이 앱은 그 자리를 메웁니다. 예정 항목마다 현금화 예상일이 속한 주차를 다시 구해 장부 주차와 견주고, 다시 모은 주차별 유입 · 유출로 기말 예상 잔고와 누적 갭을 계산해 최소 유동성 한도, 미사용 차입한도와 나란히 놓습니다. 모자라는 주에는 이유가 붙은 점검 코드를 답니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 점검 관점을 더해 확장합니다.

만기일로 넣은 주차와 현금이 들어오는 주차는 다르다

장부 주차가 틀렸다는 뜻이 아니라 기준이 다르다는 뜻입니다. 만기일 기준 주차는 계약대로의 약속이고, 현금화 예상일 기준 주차는 과거 지연 이력을 반영한 예상입니다. 이 앱은 둘을 나란히 두고 달라진 줄만 F01 로 올립니다. 어느 쪽이 맞는지 정하는 것은 자금 팀의 몫이고, 화면은 “이 줄을 옮기면 어느 주가 얼마나 달라지는가”를 보여 줍니다.

잔고가 한도 아래인 것과 차입한도를 써도 모자란 것은 다른 이야기다

한도 아래로 내려가도 미사용 차입한도로 메울 수 있는 주가 있고, 그마저 모자란 주가 있습니다. 앞은 조달 계획을 확인하면 되는 주(G02), 뒤는 지급 조정까지 검토해야 하는 주(G03)입니다. 이 앱은 둘을 코드로 가르고 상단 요약에서 부족한 주차 수와 최소 기말 예상 잔고를 먼저 보여 줍니다.

화면이 계산할 수 없는 것은 사람에게 돌려준다

확정 유입 비율이 낮은 주나 오래 연체된 채권을 확정으로 올린 줄은 계산으로 옳고 그름을 가릴 수 없습니다. 이런 줄을 오류로 몰면 현업이 화면을 믿지 않게 됩니다. 그래서 점검 필요가 아니라 확인 필요로 따로 세우고, 근거 자료를 회사가 확인하도록 안내합니다.

사용 방법

  1. 조회조건 입력 — 회계연도는 필수(4자리, 예: 2026)입니다. 회사 · 방향 · 구분 · 기준일 구간 · 거래처 · 점검 코드 · 점검 결과는 선택이며 “전체”로 두면 그 조건은 쓰이지 않습니다.
  2. 조회 — 조건 칸들의 가장 오른쪽에 있는 조회 버튼을 누르거나 입력 칸에서 Enter 키를 누릅니다. 처음 열 때는 자동으로 한 번 조회합니다.
  3. 요약 지표 확인 — 점검한 주차 수, 유동성 부족 주차, 최소 기말 예상 잔고, 주차 배정 차이 명세, 확인 필요 건수, 정합성 대사 차이 건수를 먼저 봅니다.
  4. 탭 이동 — 주차별 유동성 갭 → 예정 항목 명세 → 구분별 집계 → 대사 결과 순서로 봅니다.
  5. 행 클릭 상세 — 주차별 유동성 갭에서 행을 누르면 그 주에 현금화되는 예정 항목이 팝업으로 열립니다.
  6. 내려받기 — 현재 탭의 조회 결과를 CSV(UTF-8)로 저장합니다.

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

점검 화면이 틀린 숫자를 보여 주면 점검 자체가 의미를 잃습니다. 그래서 화면에 올리기 전에 대사식을 세워 검증용 샘플 데이터 전수에 돌렸습니다.

검사검사 건수차이 건수최대 차이
기초 잔고 + 유입 − 유출 = 기말 예상 잔고2400
주차 기초 잔고 = 직전 주 기말 예상 잔고2200
명세 유입 합계 = 주차 유입 합계 + 예측 기간 밖200
명세 유출 합계 = 주차 유출 합계 + 예측 기간 밖200
구분별 금액 합계 = 명세 합계400
마지막 주 기말 − 최초 기초 = 누적 갭200
주차 유입 · 유출 = 명세 재집계 (별도 스크립트)2400
순 갭 = 유입 − 유출 (별도 스크립트)2400
판정 규칙 재실행 — 주차 24 · 명세 1091330-

검사 건수는 모두 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_horizonFiori 기본 테마를 그대로 따라 다른 앱과 같은 모양을 유지합니다.

앱 정보

항목내용
업무 영역재무회계(FI) — 자금
관련 기준서 · 대상 영역관련 기준서 없음 / 대상 영역: 자금 예측
SAP 표준 T-codeFF7B · FF7A · FBL5N · FBL1N · F110
화면 성격조회 · 점검 화면 (탭 4개 + 주차 상세 팝업)
데이터 연동OData V2 서비스
테마sap_horizon
SAP 표준 기능을 그대로 이어받은 부분 — 예정 항목의 원천은 표준 고객 · 공급업체 미결 항목과 유동성 예측 메모 레코드이고, 기초 잔고는 표준 현금 포지션의 은행 잔고와 같은 관점으로 맞춥니다. 이 앱은 표준 데이터 구조를 그대로 이어받아 조회 · 점검 관점을 더해 확장하며, 정식 자금 계획과 지급 실행은 표준 화면에 그대로 둡니다.

실행 화면

실제 화면 6종입니다. 순서는 사용 순서를 따랐습니다. 처음 연 화면에서 시작해 주차별 갭, 명세, 구분별 집계, 대사 결과, 행 상세로 이어집니다. 화면 속 금액은 검증용 샘플 데이터이며 실제 회사의 숫자가 아닙니다.

처음 열었을 때 — 조회조건과 요약 지표, 주차별 유동성 갭

처음 연 화면
처음 연 화면 — 회계연도를 정하고 조회하면 12주의 주차별 유동성 갭과 요약 지표 6개가 나옵니다.

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

회사 2000 의 주차별 유동성 갭 — 한도에 견준 기말 예상 잔고

회사 2000 의 주차별 유동성 갭
회사 2000 의 주차별 유동성 갭 — 12주의 기말 예상 잔고를 최소 유동성 한도와 견주고, 부족한 주차를 점검 필요로 표시합니다.

한 줄이 한 주입니다. 기초 잔고에 그 주 유입을 더하고 유출을 뺀 기말 예상 잔고가 다음 주의 기초 잔고가 됩니다. 기말 예상 잔고가 최소 유동성 한도 아래로 내려간 주는 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 순서로 판정하고 앞 조건에 걸리면 뒤 조건은 보지 않으므로 한 줄에는 코드가 하나만 붙습니다.

산출 · 대사 순서

  1. 주차 배정 — 명세마다 현금화 예상일이 속한 주차(재계산 주차)를 구합니다.
  2. 주차별 유입 · 유출 — 같은 재계산 주차의 유입과 유출을 각각 더합니다.
  3. 기말 예상 잔고 = 기초 잔고 + 유입 − 유출. 다음 주 기초 잔고는 직전 주 기말 예상 잔고입니다.
  4. 누적 갭 = 주차별 순 갭의 누적 합.
  5. 한도 대비 여유 = 기말 예상 잔고 − 최소 유동성 한도. 차입한도 후 부족액 = max(0, 한도 미달액 − 미사용 차입한도).
  6. 정합성 대사 — 기초 + 유입 − 유출 = 기말, 주차 기초 = 직전 주 기말, 명세 합계 = 주차 합계 + 기간 밖, 구분별 합계 = 명세 합계, 마지막 주 기말 − 최초 기초 = 누적 갭.

조회조건

조회조건필수기본값서비스 필터
회계연도필수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아홉 구분
정합성 확인대사 결과ReconSet237건 전수 차이 0

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

자리무엇을 손대나누가
예정 항목 범위어느 구분(채권 · 채무 · 세금 · 급여 · 차입 · 설비 · 배당)을 예측에 넣을지자금팀
지연 반영 일수거래처 · 구분별 평균 지연 일수를 어디서 가져올지자금팀 · 영업관리
한도 설정최소 유동성 한도와 미사용 차입한도를 법인별로 어디서 읽을지자금팀 · 재무기획
임계값확정 유입 비율 60퍼센트, 만기 경과 30일, 예측 기간 12주자금팀

CDS 구성 — 코드와 운영 작업

아래 코드는 이 화면이 쓰는 데이터를 S/4HANA 의 미결 항목 테이블 위에 CDS 로 올릴 때의 스케치입니다. 객체 이름은 기능을 뜻하는 영문으로 지었습니다. 표준 필드명은 확인한 것만 쓰고, 확인하지 못한 자리는 “확인 필요”로 남겼습니다. 실제 시스템의 릴리스에 맞춘 검증은 구현 단계에서 거쳐야 합니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준 (설정)한도 설정 테이블법인별 최소 유동성 한도 · 미사용 차입한도 · 지연 반영 일수회사가 정하는 값이라 코드에 넣지 않습니다
차원ZI_LiqFlowItem예정 항목 한 줄에 현금화 예상일과 재계산 주차를 붙인 기본 뷰주차 배정 식을 한 곳에서만 구합니다
큐브ZI_LiqWeekCube재계산 주차별 유입 · 유출과 기말 예상 잔고잔고 이월을 한 뷰에 가둡니다
쿼리 / ConsumptionZC_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주)과 한도 기준은 회사가 정합니다.

점검 필요가 나오면 자금 조달을 해야 하나요?

그렇게 읽으면 안 됩니다. 점검 필요는 한도 미달이나 주차 배정 차이처럼 다시 확인할 대상을 가리는 표시입니다. 이 화면은 점검 도구이며 자금 조달과 지급 일정의 최종 판단은 회사가 합니다.

운영 데이터로 가면 느리지 않을까요?

이 앱이 보는 것은 미결 항목 수만 건이 아니라 주차와 구분으로 모은 합계입니다. 집계는 데이터베이스 쪽(큐브 뷰)에서 끝내고, 화면은 서비스가 걸러 준 결과만 받습니다. 회계연도를 필수 조건으로 두고 기준일 구간으로 범위를 좁히며, 실행 계획으로 접근 경로를 점검하는 것이 구현 단계의 일입니다.

여러 법인은 어떻게 보나요?

회사 조건으로 법인을 고르거나 전체로 두면 법인별 줄이 나뉘어 나옵니다. 법인 간 자금 풀링이나 연결 수준의 현금 포지션은 이 화면의 범위가 아니며, 법인별 점검을 먼저 끝내 두면 그 단계의 확인이 쉬워집니다.