단기 자금 운영 통합 관리 — 지급 예정 편성부터 선지급 소진 · 청구 확정 · 자금 포지션 반영까지 승인과 대사를 한 화면에서
편성 · 승인 · 전기 · 역처리 · 일괄 실행 · 대사 예외 조치 · 다차원 분석(드릴스루 · 기준 대비 차이 · 요인분해) · 영역 간 연계 · 감사 이력 — 소개 영상과 실제 화면 36종을 함께 싣습니다.
소개 영상블로그 목차 순서대로 · 자막 포함
도입 포인트 — 이 앱을 사용해야 하는 이유
자금 담당자는 하루에도 여러 번 같은 질문을 받습니다. 이번 달 지급 예정은 얼마인지, 선지급은 어디까지 소진됐는지, 청구서 금액과 확정 금액이 맞는지, 그 문서는 누가 승인했는지입니다. 지금은 표준 화면 여러 개와 엑셀, 메일 승인을 오가며 답을 맞춥니다. 숫자가 어긋나면 어느 문서에서 났는지 찾는 데 시간이 더 걸립니다.
이 앱은 그 자리를 한 흐름으로 채웁니다. 지급 예정 편성, 선지급 소진, 청구 확정을 문서로 처리하고 승인 · 전기 · 역처리를 거치게 하며, 일괄 실행과 대사 예외 조치, 분석과 감사 이력까지 같은 화면 안에서 이어 갑니다. 관련 기준서는 IAS 7 현금흐름표(K-IFRS 제1007호)와 IFRS 7 금융상품: 공시(K-IFRS 제1107호)이고, 앱은 정보를 모아 점검하는 도구이며 최종 판단은 회사와 감사인이 합니다.
핵심 포인트 일곱 가지
| 핵심 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 편성부터 반영까지 한 앱에서 | 지급 예정 편성 · 선지급 소진 · 청구 확정 문서를 처리하고 승인 · 전기 · 역처리까지 같은 화면에서 이어 갑니다. | 표준 화면 여러 개와 엑셀을 오가며 문서 상태를 따로 적어 둡니다. |
| ② 작성자와 승인자를 서버가 가른다 | 작성자는 자기 문서를 승인할 수 없고 5천만 원 이상은 서로 다른 승인자 두 명이 필요합니다. 거절된 시도도 기록됩니다. | 메일 승인이라 누가 언제 승인했는지 나중에 맞춰 봐야 합니다. |
| ③ 일괄 실행은 모의 실행부터 | 대상과 합계를 저장 없이 먼저 보고 실행합니다. 같은 대상과 기간은 중복 생성되지 않습니다. | 엑셀로 계산한 값을 사람이 다시 입력해 문서를 만듭니다. |
| ④ 대사 예외를 조치까지 추적 | 규칙 R1~R4 로 차이를 점검하고 조정 · 보류 · 허용 종결을 남기며, 다시 대사하면 해소 여부가 판단됩니다. | 엑셀 대사표에 차이를 적고 조치 결과는 메일에 흩어집니다. |
| ⑤ 분석 숫자에서 전표 라인까지 | 칸 금액을 누르면 그 금액을 이룬 전표 라인이 열리고 합계가 같은지 바로 보입니다. | 리포트를 닫고 다른 화면에서 같은 조건을 손으로 다시 넣습니다. |
| ⑥ 차이를 요인으로, 사유를 행에 | 기준 대비 차이를 요인으로 나누고 합이 총차이와 같은지 검산하며, 변동 사유를 행에 남깁니다. | 엑셀로 차이를 나누고 사유는 메일로 걷습니다. |
| ⑦ 영역 간 연계와 감사 이력 | 전기하면 부서 자금 배분 · 청구서 연계 · 자금 포지션 문서가 따라 생기고, 모든 쓰기와 전이가 이전 · 이후 값과 함께 남습니다. | 문서 번호를 수작업으로 대조하고 변경 이력은 따로 찾습니다. |
사례로 보는 효과
검증용 샘플 데이터(가상 값)로 2026-09 처리 금액을 계획과 비교하면 41,139,738.56원 차이가 났고, 요인 다섯 개로 나눈 합계가 같은 금액으로 맞았습니다. 대사 쪽에서는 일부러 남겨 둔 예외 24건(R1 3건 · R2 17건 · R3 2건 · R4 2건)을 미해결 18건 · 조치 중 2건 · 보류 1건 · 해소 2건 · 허용 종결 1건으로 추적했고, 조정 전표를 만들어 다시 대사하면 해소로 바뀌는 것까지 확인했습니다. 위 숫자는 모두 샘플 값이며 효과를 약속하는 수치가 아닙니다.
도입하면 달라지는 것
- 마감 준비 — 편성 · 승인 · 대사 상태가 한 화면에 모여 상태를 따로 적는 일이 줄어듭니다.
- 회의의 주제 — "어느 숫자가 맞나" 보다 "어느 예외를 먼저 조치할까" 를 이야기합니다.
- 승인 이력 — 누가 · 언제 · 어떤 값에서 어떤 값으로 바꿨는지 감사 로그로 남습니다.
- 분석의 출발점 — 숫자를 의심하면 전표 라인까지 내려가 직접 확인합니다.
이런 회사에 맞습니다
매월 지급 예정과 선지급 · 청구서를 여러 법인에서 다루고, 승인 단계와 담당 부서가 나뉘어 있어 문서 상태와 대사 결과를 한눈에 보고 싶은 조직에 맞습니다. 월 처리 건수가 수백에서 수천 건이고 승인자가 둘 이상인 자금 · 경영지원 부서를 염두에 두었습니다.
실행 화면 — 화면 36종으로 보는 처리 흐름
사용 방법
- 조회조건 — 화면 위의 회사와 기간을 고릅니다(둘 다 선택 사항, 기본은 전체 · 열린 기간). 모듈을 옮겨도 조건이 이어집니다.
- 역할 고르기 — 오른쪽 위 사용자에서 조회자 · 처리자 · 승인자 · 관리자를 바꿉니다. 역할에 따라 버튼이 달라집니다.
- 요약 확인 — 개요의 타일(마감 진행률 · 기한 경과 · 승인 대기 · 반려 · 전기 대기 · 미해결 예외)을 보고 눌러서 목록으로 이동합니다.
- 탭 이동 — 왼쪽 메뉴 순서(개요 → 기준정보 → 문서 처리 → 일괄 실행 → 대사 → 분석 → 영역 간 연계 → 이력)가 업무 순서입니다.
- 행 클릭 상세 — 문서 행을 누르면 분개 항목 · 상태 이력 · 연계 문서가 열리고, 상태에 맞는 버튼만 보입니다.
- 조회와 내려받기 — 분석은 조회 버튼(또는 Enter)으로 조회하고, 목록은 엑셀 내보내기, 분석은 표 CSV · PPT 보고서로 내려받습니다.
무엇으로 만들었나
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 컨트롤 | sap.tnt.ToolPage · SideNavigation · sap.m 표 · sap.ui.table.TreeTable · 직접 그린 SVG 차트 | 표준 컨트롤만 쓰면 사내망에서 라이브러리 반입 심사가 필요 없습니다. |
| 집계 · 판정 로직 | 서비스 파일 하나가 상태 전이 · 채번 · 검증 · 금액 계산을 판정 | 화면이 아니라 서버가 판정해야 직접 요청해도 같은 규칙이 적용됩니다. |
| OData 서비스 구성 | 모델 1개로 읽기 · 쓰기 · 펑션 호출, 조회조건은 $filter · $orderby 로 서버에 전달, 분석 큐브는 범위 단위로 받아 브라우저에서 집계 | 축을 바꿀 때 서버를 다시 부르지 않아 응답이 빠르고, 칸 금액 = 드릴스루 합계를 확인할 수 있습니다. |
| 테마 · 언어 | sap_horizon · 한국어 | SAP 화면과 같은 시각 언어로 이어집니다. |
앱 정보
| 항목 | 내용 |
|---|---|
| 영역 | 자금 |
| 업무 흐름 범위 | 지급 예정 편성 → 선지급 소진 → 청구 확정 → 자금 포지션 반영 |
| 모듈 구성 | 개요 · 기준정보 · 문서 처리 · 일괄 실행 · 대사 · 분석 · 영역 간 연계 · 이력과 권한 |
| 관련 기준서 | IAS 7 현금흐름표(K-IFRS 제1007호) · IFRS 7 금융상품: 공시(K-IFRS 제1107호) |
| SAP 표준 T-code | FF7A · FF7B · F110 · FBL3N · FEBAN |
| 화면 성격 | 통합 관리 |
| 데이터 연동 | OData V2 |
| 테마 | sap_horizon |
처음 열었을 때 — 처리할 일부터 보입니다

마감 진행률 · 기한 경과 · 승인 대기 · 반려 · 전기 대기 · 미해결 예외 · 보류 · 안 읽은 보고를 타일로 보여 줍니다. 타일 숫자는 위에서 고른 회사 · 기간 기준이고, 예외는 기간과 무관하게 회사 기준입니다.

역할에 맞는 할 일이 종류별로 쌓이고, 행을 누르면 해당 화면으로 이동합니다. 행을 누르면 해당 화면으로 바로 이동하며, 역할이 바뀌면 보이는 할 일도 달라집니다.
기준정보 관리 — 계정과 대상을 서버가 검증합니다

보조원장 잔액과 총계정 잔액을 나란히 두고 신규 · 수정 · 사용 중지를 합니다. 보조원장과 총계정 잔액을 나란히 두어 대사의 출발점을 보여 줍니다.

약정 · 선지급 · 청구서 대상을 구분해 관리합니다. 편성 · 소진 · 청구 대상을 구분해 관리하고, 사용 중인 대상은 삭제 대신 사용 중지로 처리합니다.

필수 항목을 채우면 서버가 검증하고 번호를 채번합니다. 필수값과 형식(예: 계정은 숫자 6자리)을 서버가 확인하고 거절 사유를 알려 줍니다.

엑셀 파일을 고르면 행마다 검증 결과를 먼저 보여 줍니다. 오류 행은 반영에서 빠집니다. 정상 3건과 오류 1건을 올리면 오류 행이 표시되고 정상 건만 반영 대상이 됩니다.

정상 건만 반영하고 성공 · 실패 건수를 알려 줍니다. 반영 뒤에는 성공과 실패 건수를 알려 주고, 실패 사유는 표에서 확인합니다.
문서 처리와 승인 — 승인 버튼은 승인자에게만 보입니다

상태 · 유형 · 기간으로 걸러 보고 엑셀로 내보냅니다. 상태 · 유형 · 기간으로 걸러 보고 엑셀로 내보냅니다.

분개 항목 · 상태 이력 · 연계 문서를 탭으로 보고 상태에 맞는 버튼만 보입니다. 차변과 대변 합계가 맞는지 상세 머리에 표시됩니다.

차변 · 대변 일치와 필수값을 서버가 확인한 뒤 승인 대기로 넘깁니다. 검토 요청 시 필수값과 차대 일치를 서버가 확인합니다.

작성자와 다른 승인자만 승인할 수 있고, 금액 구간에 따라 2단계 승인이 필요합니다. 같은 사용자가 승인하려 하면 직무 분리 메시지로 거절됩니다.

열린 기간에만 전기되고, 권한이 없는 동작은 이유를 안내합니다. 전기는 열린 기간에서만 되며, 권한이 없는 동작은 이유를 안내합니다.

승인자 · 관리자가 사유와 함께 역처리하면 반대 금액의 역분개 문서가 생깁니다. 역처리는 사유가 필수이고 원문서와 연결된 반대 문서가 만들어집니다.

조회자에게는 쓰기 · 처리 버튼이 보이지 않습니다. 조회자로 전환하면 쓰기 · 처리 버튼이 보이지 않고, 직접 요청해도 서버가 거절합니다.
일괄 실행 — 시뮬레이션 합계와 실행 결과가 같다

실행 조건과 실행 이력을 한 화면에 둡니다. 실행 조건과 실행 이력을 한 화면에 둡니다.

대상과 금액을 저장 없이 먼저 확인합니다. 모의 실행은 저장하지 않으며 대상 건수와 합계를 먼저 보여 줍니다.

실행하면 작성중 문서가 만들어지고 실행 이력에 남습니다. 실행하면 작성중 문서가 만들어지고, 같은 조건 재실행은 중복 없이 0건으로 끝납니다.
대사와 예외 조치 — 차이를 남기고 조치까지 따라갑니다

예외를 상태 · 규칙별로 걸러 조치합니다. 예외를 상태 · 규칙별로 걸러 보고 대상을 눌러 조치합니다.

규칙마다 점검 건수 · 차이 건수 · 최대 차이를 보여 주고, 예외 목록으로 이어집니다. 규칙마다 점검 건수와 차이 건수 · 최대 차이를 비교합니다.

예외에서 조정 전표를 만들면 문서 번호가 예외에 연결됩니다. 조정 전표를 만들면 예외가 조치 중이 되고, 전기 뒤 다시 대사하면 해소로 바뀝니다.
분석 — 축을 바꿔도 합계가 같습니다

행 · 열 축을 바꿔 가며 처리 금액을 보고 계획 대비 차이를 함께 봅니다. 처리 금액 · 유동성 영향 같은 측정값을 행 · 열 축으로 펼치고 계획 대비 차이를 함께 봅니다.

축을 끌어 놓아 행과 열을 바꿉니다. 축을 바꿔도 서버를 다시 부르지 않고 같은 큐브를 다시 묶어, 총합이 변하지 않습니다.

금액 칸을 누르면 그 금액을 이룬 전표 라인이 열립니다. 질의 조건과 합계 일치 여부가 머리에 표시됩니다.

전표 번호를 누르면 문서 상세로 이동합니다. 전표 번호에서 문서 상세로 이어져 처리 상태까지 확인합니다.

총차이가 어느 요인에서 났는지 막대로 보여 줍니다. 요인 합이 총차이와 같은지 검산 줄이 매번 표시됩니다.

열 조합이 한도를 넘으면 반쯤 그린 표 대신 범위를 좁히라는 안내를 띄웁니다. 열 조합이 한도를 넘으면 반쯤 그린 표 대신 범위를 좁히라고 안내합니다.
영역 간 연계 — 전기하면 다음 영역 문서가 따라옵니다

재무 문서에서 원가 · 구매 · 자금 문서로 이어지는 흐름을 그리고, 상자를 누르면 문서 상세로 이동합니다. 재무 문서에서 원가 · 구매 · 자금 영역 문서로 이어지는 흐름을 보고 상자를 눌러 상세로 이동합니다.
AI 해설과 에이전트 — 숫자는 서버가 계산합니다

현재 범위의 핵심 발견을 규칙으로 요약합니다. 기본은 규칙 기반 해설이며 모델 연결은 설정으로만 켭니다(기본 꺼짐).

해설에 쓴 근거 표를 펼쳐 숫자를 직접 확인합니다. 해설에 쓴 근거 표를 펼쳐 숫자를 직접 확인합니다.

차이가 큰 행에 사유를 남기면 해설에서 그 단계를 건너뜁니다. 이미 사유가 적힌 차이는 해설에서 건너뜁니다.

감시 규칙에 걸린 항목이 받을 역할 관점의 보고로 올라옵니다. 감시 규칙에 걸리면 받을 역할 관점의 보고가 대기함에 올라옵니다.

하루 한 번 점검을 실행하고 결과 문구를 보여 줍니다. 점검은 하루 한 번만 돌고, 두 번째 호출은 서버가 제한합니다.
이력 · 감사 · 역할

모든 쓰기 · 전이 · 실행 요청이 이전 값과 이후 값과 함께 남고, 거절된 시도도 기록됩니다. 정상 처리와 거절된 시도가 이전 값 · 이후 값과 함께 남습니다.
좁은 화면에서 달라지는 것

390px 폭에서 메뉴가 접히고 타일이 쌓입니다. 폭 390px 에서 메뉴가 접히고 타일이 쌓입니다.

표 아래에 차트가 쌓입니다. 표가 먼저 나오고 차트는 표 아래로 내려갑니다.

차트는 표 아래에서 이어집니다. 아래로 스크롤하면 차트가 이어집니다.
화면 뒤에서 일어나는 일
화면은 서버가 돌려준 값을 보여 줄 뿐이고, 상태 전이 · 채번 · 검증 · 금액 계산은 서비스가 판정합니다. 판정 조건에서 결과 상태, 사용자 조치로 이어지는 규칙은 아래와 같습니다.
| 규칙 | 판정 조건 → 결과 상태 | 사용자 조치 |
|---|---|---|
| 상태 전이 | 작성중 → 검토중 → 승인됨 → 전기됨 → (역처리됨). 반려되면 고친 뒤 다시 요청합니다. | 허용되지 않은 전이는 400 으로 거절됩니다. |
| 승인 판정 | 작성자 = 승인자면 거절, 50,000,000원 이상은 서로 다른 승인자 2명. | 직무 분리를 서버가 판정합니다. |
| 전기 판정 | 차변 합계 = 대변 합계, 열린 기간. | 둘 중 하나라도 어긋나면 전기하지 않습니다. |
| 대사 판정 | 규칙 R1~R4 의 좌변 − 우변이 허용 범위를 넘으면 예외. | 조정 · 보류 · 허용 종결 중에서 조치하고 점검 필요로 남깁니다. |
조회조건
| 조건 | 필수 | 기본값 | $filter 처리 |
|---|---|---|---|
| 회사 | 선택 | 전체 | Bukrs eq '1000' |
| 기간 | 선택 | 열린 기간(2026-09) | Period eq '2026-09' |
| 문서 상태 · 유형 | 선택 | 전체 | Status eq 'REVIEW' and DocType eq 'PLN' |
| 분석 기간 범위 | 필수 | 2026-07 ~ 2026-09 | Period ge '2026-07' and Period le '2026-09' |
| 비교 기준 | 선택 | 계획 | Version eq 'PLAN' |
결과 컬럼
| 컬럼 | 의미 | 산출식 |
|---|---|---|
| 처리 금액 | 문서 라인 금액 합 | Σ 전표 라인 금액 |
| 유동성 영향 | 방향을 반영한 금액 합 | Σ(부호 × 라인 금액) |
| 전표 라인 | 라인 건수 | Σ 1 |
| 지연 일수 | 계획일 대비 지연 | Σ 지연 일수 |
| 차이 | 실적 − 기준 | 실적 처리 금액 − 계획 처리 금액 |
좁은 화면에서 달라지는 것
폭 600px 이하에서는 메뉴가 접히고 차트가 표 아래로 내려갑니다. 열 조합이 한도(36)를 넘으면 표를 반쯤 그리는 대신 범위를 좁히라는 안내가 나옵니다.
파일 구성
liqhub/
├─ 화면 : view · controller · fragment · css · i18n
├─ model/ : OData 호출 · 큐브 집계 · 보고서 생성
├─ odata/ : 서비스 로직 · 서비스 선언 · 엔티티셋별 데이터
├─ media/ : 소개 영상
└─ readme.html
SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지
표준으로 되는 것과 안 되는 것
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다.
| 하고 싶은 일 | SAP 표준 | 표준에서 걸리는 자리 | 이 앱이 하는 일 |
|---|---|---|---|
| 문서 승인 · 전기 흐름 | 표준 전기 화면 | 승인 단계와 직무 분리를 자금 담당 관점으로 모아 보기 어렵습니다 | 문서 상태와 승인 단계를 한 화면에서 처리 |
| 현금 포지션 확인 | FF7A | 문서 단위 처리 상태와는 따로 봅니다 | 문서에서 포지션 반영 문서로 이어서 확인 |
| 유동성 예측 | FF7B | 예측 값의 원천 문서를 거슬러 보기 번거롭습니다 | 편성 · 소진 추이를 분석 화면에서 같은 축으로 확인 |
| 자동 지급 | F110 | 지급 제안의 원천 청구 확정을 별도로 맞춥니다 | 확정 청구액을 청구서 금액과 대사(R4) |
| 계정 라인 조회 | FBL3N | 조건을 다시 입력해야 합니다 | 드릴스루한 전표 라인을 그대로 대조 |
| 은행 명세 후처리 | FEBAN | 미결 항목과 보조원장 차이의 연결이 따로입니다 | 잔액 차이(R1)를 예외로 남겨 조치 추적 |
| 대사 예외의 조치 이력 | 없음 | 표준에는 예외를 조치까지 묶어 추적하는 화면이 없습니다 | 조정 · 보류 · 허용 종결과 재대사 해소 판정 |
T-code 별 연계 지점
| T-code | 이름 | 이어받는 데이터 · 오가는 방법 | 표준에 남겨 둘 일 |
|---|---|---|---|
FF7A | 현금 포지션 | 자금 포지션 반영 문서의 결과를 표준 화면에서 다시 확인합니다. 표준 화면 값은 이 앱의 자금 포지션 문서 · 분석 화면에서 같은 기간으로 맞춰 봅니다. | 현금 포지션 공시 대응은 표준에 남깁니다. |
FF7B | 유동성 예측 | 지급 예정 편성과 선지급 소진 추이를 예측 값과 나란히 봅니다. | 예측 계획 자체의 관리는 표준에서 합니다. |
F110 | 자동 지급 | 승인 · 전기된 청구 확정 금액이 지급 실행으로 이어지는 지점을 청구서 금액과 대사합니다. | 지급 실행은 표준에서 합니다. |
FBL3N | G/L 계정 라인 조회 | 드릴스루한 전표 라인을 계정 라인 항목으로 대조합니다. | 법정 장부 조회는 표준에서 합니다. |
FEBAN | 은행 명세 후처리 | 은행 · 보조원장 잔액 차이(R1)의 원천을 확인합니다. | 은행 명세 처리 자체는 표준에서 합니다. |
기존 리포트를 없애야 하는지 묻는다면 답은 "없애지 않는다" 입니다. 표준 리포트는 그대로 두고, 이 앱의 숫자와 같은 기간으로 맞춰 보는 대사 지점으로 쓰십시오.
S/4HANA 분석 스택과의 자리
표준 CDS 분석 쿼리와 Fiori 분석 앱, Analysis for Office 는 SAP 표준 기능으로 그대로 쓰시면 됩니다. 이 앱은 그 옆에서 승인 · 일괄 실행 · 대사 예외 조치처럼 쓰기가 있는 업무와, 같은 큐브를 축만 바꿔 보는 분석을 더합니다. 특정 Fiori 앱 이름은 확인하지 못해 적지 않았습니다(확인 필요).
기준서 요구사항 매핑
| 기준서 | 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IAS 7 현금흐름표(K-IFRS 제1007호) | 현금흐름 정보의 구분 보고 | 자금 포지션 반영 문서 · 분석(단계 · 유형 축) | 전표 라인(ACDOCA · BSEG) | 점검 보조 — 현금흐름표 작성 도구가 아닙니다 |
| IFRS 7 금융상품: 공시(K-IFRS 제1107호) | 유동성 위험 관련 정보 | 지급 예정 편성 · 소진 추이 분석 | 자금 포지션 계획 항목(FDES) · BSEG | 공시 문안의 최종 판단은 회사와 감사인 |
문단 번호는 원문 확인 전이라 적지 않았고, 시행일과 경과규정은 다루지 않습니다.
확장 포인트 — 운영에서 실제로 손대는 자리
| 자리 | 무엇을 정하나 | 손대는 방법 |
|---|---|---|
| 상태 흐름 · 승인 단계 | 상태와 허용 전이, 금액 구간(예: 5천만 원 이상 2인) | 회사 승인 규정에 맞게 서비스 규칙 표를 바꿉니다 |
| 계정 · 대상 매핑 | 자금 관리 대상 계정과 편성 · 소진 · 청구 대상 구분 | 매핑 테이블 한 곳에서 관리 |
| 대사 규칙 · 허용 범위 | R1~R4 의 산식과 허용 범위 | 규칙 표의 산식과 허용 범위를 조정 |
| 권한 | 회사 단위 접근과 역할 | SAP 권한 객체와 역할로 교체 |
| 에이전트 규칙 | 감시 지표 · 임계값 · 받을 역할 | 규칙 표에서 조정 |
CDS 구성 — 운영 데이터로 갈 때의 구조
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | ZLIQ_ACCT_MAP(매핑 테이블) | 계정 · 대상 구분과 허용 범위를 담는 기준 | 로직이 아니라 데이터로 바꿀 수 있어서 |
| 차원 | ZI_LiqAccount · ZI_LiqPhase | 이름 · 그룹 · 단계 같은 축 값 | 큐브와 분리해 재사용 |
| 큐브 | ZI_LiquidityCube | 전표 라인을 축 조합별로 집계 | 모든 분석 숫자의 단일 출처 |
| 쿼리 | ZC_LiquidityQuery | 행 · 열 · 측정값 정의와 계획 대비 | 화면이 읽는 소비 뷰 |
| 권한 | ZC_LiquidityQuery 접근 제어 | 회사 단위 접근 제한 | 집계 단계에서 걸어 합계로 새지 않게 |
| 서비스 | ZUI_LiquidityHub 서비스 정의 | OData 서비스로 노출 | 화면과 서버 사이의 계약 |
① 기준 — 계정 · 대상 매핑 테이블
가장 먼저 정할 것은 어떤 계정이 자금 관리 대상이고 어느 구분(편성 · 소진 · 청구)에 속하는지입니다. 이 표가 흔들리면 이후 모든 집계가 어긋나므로 코드가 아니라 데이터로 두어 현업이 직접 관리하게 합니다.
" ───────────────────────────────────────────────
" ZLIQ_ACCT_MAP 자금 관리 대상 계정 매핑
" 역할 : 계정 → 대상 구분(편성 · 소진 · 청구)과 그룹
" 이유 : 계정 추가 때 코드를 고치지 않고 이 표만 갱신하기 위해
" ───────────────────────────────────────────────
@EndUserText.label : '자금 관리 계정 매핑'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
define table zliq_acct_map {
key client : abap.clnt not null;
key bukrs : bukrs not null;
key saknr : saknr not null;
kind : abap.char(2); " PL 편성 · DR 소진 · CF 청구
acct_group : abap.char(6); " ASSET · LIAB · EXP · REV · CLR
active : abap_boolean;
}
② 차원 — 계정 차원 뷰
차원 뷰는 화면에 보일 이름과 그룹을 큐브와 떼어 둡니다. 이름이 바뀌어도 큐브를 건드리지 않습니다.
" ───────────────────────────────────────────────
" ZI_LiqAccount 계정 차원
" 역할 : 계정 번호 → 이름 · 그룹 · 대상 구분
" 이유 : 축 값 이름을 큐브와 분리해 재사용
" ───────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@ObjectModel.representativeKey: 'Saknr'
@Analytics.dataCategory: #DIMENSION
define view entity ZI_LiqAccount
as select from zliq_acct_map as m
association [0..1] to I_GLAccountText as _Text
on _Text.ChartOfAccounts = 'YCOA' and _Text.GLAccount = m.saknr
{
key m.bukrs as CompanyCode,
key m.saknr as Saknr,
m.kind as Kind,
m.acct_group as AcctGroup,
_Text
}
where m.active = 'X'
③ 큐브 — 전표 라인 집계
큐브는 모든 분석 숫자의 단일 출처입니다. 처리 금액은 절대값 합, 유동성 영향은 방향을 반영한 합으로 나누어 두었고, 통화 환산을 여기서 끝냅니다.
" ───────────────────────────────────────────────
" ZI_LiquidityCube 자금 분석 큐브
" 역할 : ACDOCA 라인을 기간 · 계정 · 구분 축으로 집계
" 이유 : 화면 · 보고서 · 에이전트가 같은 숫자를 읽도록
" ───────────────────────────────────────────────
@Analytics.dataCategory: #CUBE
@AccessControl.authorizationCheck: #CHECK
define view entity ZI_LiquidityCube
as select from acdoca as a
inner join zliq_acct_map as m
on m.bukrs = a.rbukrs and m.saknr = a.racct
association [0..1] to ZI_LiqAccount as _Account
on _Account.CompanyCode = $projection.CompanyCode
and _Account.Saknr = $projection.Saknr
{
key a.rbukrs as CompanyCode,
key a.gjahr as FiscalYear,
key a.poper as Period,
key a.racct as Saknr,
m.kind as Kind,
@Semantics.currencyCode: true
a.rhcur as Currency,
@Semantics.amount.currencyCode: 'Currency'
sum( abs( a.hsl ) ) as AdjAmt,
@Semantics.amount.currencyCode: 'Currency'
sum( case m.acct_group when 'EXP' then a.hsl else -a.hsl end ) as NetImpact,
count( * ) as DocLines,
_Account
}
group by a.rbukrs, a.gjahr, a.poper, a.racct, m.kind, a.rhcur
④ 쿼리 — 소비 뷰
쿼리는 행 · 열 · 측정값 기본 배치를 정하는 얇은 층입니다. 계획 대비는 같은 큐브의 계획 버전을 같은 축으로 읽습니다.
" ───────────────────────────────────────────────
" ZC_LiquidityQuery 분석 쿼리
" 역할 : 화면이 읽는 소비 뷰(기본 행 · 열 · 측정값)
" 이유 : 화면 변경이 큐브에 번지지 않도록 얇게
" ───────────────────────────────────────────────
@Analytics.query: true
@EndUserText.label: '자금 분석'
define view entity ZC_LiquidityQuery
as select from ZI_LiquidityCube
{
@AnalyticsDetails.query.axis: #ROWS
Kind,
@AnalyticsDetails.query.axis: #COLUMNS
Period,
@DefaultAggregation: #SUM
AdjAmt,
@DefaultAggregation: #SUM
NetImpact,
@DefaultAggregation: #SUM
DocLines
}
⑤ 권한 — 접근 제어
권한은 드릴스루에만 걸면 합계 뺄셈으로 새어 나가므로 집계 단계의 회사 단위에서 겁니다.
" ───────────────────────────────────────────────
" ZC_LiquidityQuery 접근 제어(DCL)
" 역할 : 회사 단위 조회 권한
" 이유 : 집계 합계로 남의 숫자가 드러나지 않게
" ───────────────────────────────────────────────
@EndUserText.label: '자금 분석 권한'
@MappingRole: true
define role ZC_LiquidityQuery {
grant select on ZC_LiquidityQuery
where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
⑥ 서비스 — OData 노출
서비스 정의로 쿼리를 노출하면 화면은 같은 엔티티 이름으로 읽습니다. 쓰기가 있는 처리 기능은 RAP 액션이나 표준 BAPI 로 이어 붙이는 자리입니다(확인 필요).
" ───────────────────────────────────────────────
" ZUI_LiquidityHub 서비스 정의
" 역할 : 쿼리와 처리 기능을 OData 로 노출
" 이유 : 화면과 서버 사이의 계약을 한 곳에 둠
" ───────────────────────────────────────────────
@EndUserText.label: '단기 자금 운영 서비스'
define service ZUI_LiquidityHub {
expose ZC_LiquidityQuery as LiquidityQuery;
expose ZI_LiqAccount as Account;
}
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 상태 흐름 · 승인 단계 · 금액 구간 | 허용 전이와 몇 원부터 2인 승인인지 | 화면마다 해석이 달라지고 직무 분리가 흔들립니다 | 자금팀 · 경영지원 |
| 직무 분리 · 역할 | 데모 사용자 전환을 SAP 권한 객체와 역할로 교체 | 누구나 승인할 수 있는 상태로 남습니다 | 보안 · 권한 |
| 처리 펑션 연결 | 전기 · 일괄 실행을 표준 BAPI · RAP 액션 · F110 같은 표준 처리와 연결 | 앱 안에서만 처리돼 원장과 어긋납니다 | 자금팀 · IT |
| 문서 번호 범위 | 유형별 번호 접두와 연도 구분 | 번호가 겹치거나 추적이 어렵습니다 | IT · 회계 |
| 대사 규칙 · 허용 범위 | R1~R4 의 산식과 허용 금액 | 허용 범위가 사람마다 달라집니다 | 자금팀 · 회계 |
| 영역 간 연계 문서 | 부서 자금 배분 · 청구서 연계 · 자금 포지션의 원천 | 연계 문서가 샘플 규칙에 머뭅니다 | 각 영역 담당 |
숫자를 믿을 수 있는가 — 검증 결과
샘플 데이터를 전수로 돌린 대사식 결과입니다(가상 값). 차이 건수는 모두 0건이며, 의도적으로 넣은 대사 예외 24건은 차이 건수와 분리해 기록했습니다.
| 대사식 | 검사 건수 | 차이 건수 |
|---|---|---|
| 문서 상태별 건수 합계 = 전체 문서 수 | 1,106 | 0 |
| 상태 이력 마지막 값 = 문서 현재 상태 | 1,106 | 0 |
| 전표마다 차변 = 대변 | 553 | 0 |
| 역처리 금액 = 원문서 × (−1) | 6 | 0 |
| 일괄 실행 문서 합계 = 모의 실행 합계 | 65 | 0 |
| 큐브 합계 = 원천 라인 합계 | 45 | 0 |
| 축 배치를 바꿔도 피벗 총합 불변 | 5 | 0 |
| 칸 금액 = 드릴스루 합계 | 8 | 0 |
| 요인 합 = 총차이 | 1 | 0 |
| 대사 예외 24 = 18 + 2 + 1 + 2 + 1 | 24 | 0 |
| 할 일 미완료 40 = 10 + 3 + 18 + 9 | 40 | 0 |
운영 데이터로 갈 때
운영 데이터로 갈 때는 전표 라인이 수천만 건이 되므로 집계를 화면이 아니라 큐브 뷰에서 끝내고, 조회조건(회사 · 기간)을 필수 파라미터로 받아야 합니다. 큐브 키 조합에 맞는 인덱스(보조 인덱스)와 분석 쿼리 캐시 정책을 정하고, 샘플에서 브라우저가 하던 축 재집계도 범위가 커지면 서버 쪽 집계로 옮기는 것이 안전합니다. 응답 시간 기준은 회사가 정해야 하는 값이며 이 글은 숫자를 단정하지 않습니다(확인 필요).
자주 묻는 질문
적용 범위와 숫자, 화면 조작, 분석과 AI, 도입과 운영 순서로 묶었습니다.
숫자와 산식
이 앱은 어떤 범위까지 다루나요
지급 예정 편성 · 선지급 소진 · 청구 확정과 그에 딸린 승인 · 전기 · 역처리 · 대사 · 분석 · 감사 이력입니다. 샘플은 2026-01 ~ 2026-09 가상 값이며 실제 회사 데이터가 아닙니다. 적용 시기와 범위는 회사의 업무 규정에 따라 정해야 하며 이 글은 시행일을 단정하지 않습니다.
분석 숫자는 어떻게 믿을 수 있나요
큐브 합계와 원천 라인 합계, 어떤 축 배치에서도 같은 총합, 칸 금액과 드릴스루 합계, 요인 합과 총차이를 검산 항목으로 두었습니다. 샘플 기준 모두 차이 0건이었습니다.
처리 금액과 유동성 영향은 어떻게 다른가요
처리 금액은 라인 금액의 합이고, 유동성 영향은 방향(자금 유입 · 유출 관점)을 반영한 합입니다. 방향 규칙은 운영 전환 때 회사 기준으로 확정해야 합니다(확인 필요).
대사 규칙 R1~R4 는 무엇인가요
R1 은행 · 거래처 보조원장과 총계정 잔액, R2 편성 월 수와 경과 월 수, R3 소진 누계와 소진 문서 합계, R4 확정 청구액과 청구서 금액을 비교합니다. 허용 범위를 넘는 차이는 예외로 남고 점검이 필요합니다.
외화와 환율은 어떻게 처리하나요
샘플은 원화 기준입니다. 외화 거래는 큐브에서 통화 환산을 끝내는 구조로 설계했으나 환산 기준일과 환율 유형은 회사가 정해야 합니다(확인 필요).
화면과 조작
승인 버튼이 보이지 않는 이유는 무엇인가요
역할이 승인자나 관리자가 아니거나, 본인이 작성한 문서이기 때문입니다. 직무 분리는 화면이 아니라 서버가 판정하므로 직접 요청해도 거절됩니다.
5천만 원 이상은 왜 2인 승인인가요
샘플에 둔 가정값입니다. 실제 금액 구간과 단계 수는 회사 승인 규정으로 정해야 합니다.
일괄 실행을 두 번 누르면 어떻게 되나요
같은 유형 · 회사 · 기간의 대상은 중복 생성되지 않고 0건으로 끝납니다. 먼저 모의 실행으로 대상과 합계를 확인하는 것이 순서입니다.
엑셀 업로드는 어떻게 검증하나요
파일을 고르면 행마다 검증 결과를 미리 보여 주고, 오류 행은 반영에서 빠지며 정상 건만 반영됩니다. 양식은 내려받을 수 있습니다.
좁은 화면에서도 쓸 수 있나요
폭 600px 이하에서는 메뉴가 접히고 차트가 표 아래로 내려갑니다. 표가 넓은 화면은 가로로 스크롤합니다.
레이아웃을 저장하면 무엇이 남나요
축 · 조회조건 · 측정값 · 표시 행 수 · 접힘 상태를 이름 붙여 저장합니다. 기본 레이아웃과 자동 조회를 지정하면 열 때 조회된 채로 시작합니다.
분석과 AI
드릴스루는 어떻게 동작하나요
칸의 행 경로와 열 조합이 조건이 되어 그 금액을 이룬 전표 라인이 열립니다. 질의 조건과 합계 일치 여부가 머리에 표시됩니다.
요인분해는 무엇을 보여 주나요
기준 대비 총차이를 요인별 금액으로 나누고 요인 합이 총차이와 같은지 검산 줄을 보여 줍니다. 원인을 단정하지 않고 점검할 자리를 알려 주는 용도입니다.
AI 해설은 숫자를 만드나요
아닙니다. 금액과 비율은 서비스가 계산하고, 기본은 규칙 기반 해설입니다. 모델 연결은 설정 하나로 켜며 기본은 꺼져 있고, API 키는 앱 안에 두지 않습니다.
에이전트는 어떻게 도나요
감시 규칙에 걸리면 받을 역할 관점의 보고가 대기함에 올라옵니다. 실행은 하루 한 번으로 서버가 제한하고, 걸린 것이 없어도 활동 기록을 남깁니다. 운영에서는 SM36 이나 cron 같은 배치에 연결하는 것을 전제로 합니다.
PowerPoint 보고서는 어디서 만들어지나요
브라우저 안에서 외부 라이브러리 없이 만들어 내려받습니다. 현재 범위의 표와 차트가 담깁니다.
도입과 운영
표준 T-code 를 대체하나요
아닙니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회와 검증 관점을 더해 확장합니다. 법정 · 공시 · 감사 대응은 표준에 남깁니다.
운영 연결은 어떻게 하나요
서비스 파일이 읽는 데이터를 CDS 뷰와 표준 처리로 바꾸고, 사용자 역할을 SAP 권한으로 교체합니다. 화면은 같은 OData 계약을 유지합니다. 소요 기간은 회사의 합의 사항에 달려 있어 단정하지 않습니다.
권한과 보안은 어떻게 되나요
샘플의 데모 사용자 전환은 운영에서 제거하고 SAP 권한 객체와 역할로 대체합니다. 집계 단계의 회사 단위 접근 제어를 권장합니다.
대용량에서도 쓸 수 있나요
샘플은 수천 건 규모입니다. 수천만 건에서는 집계를 서버로 옮기고 조회 범위를 필수로 받아야 합니다. 구체적인 응답 시간은 환경에 따라 달라 확인이 필요합니다.
계정 체계나 매핑이 바뀌면요
매핑 테이블에서 계정과 대상 구분을 갱신하면 큐브와 화면이 같은 기준을 따릅니다. 코드를 고치지 않습니다.
이 앱의 판단을 그대로 신뢰해도 되나요
이 앱은 점검 도구입니다. 화면의 점검 필요 · 확인 필요 표시는 확정이 아니라 확인하라는 뜻이며, 최종 판단은 회사와 감사인이 합니다. 세무 신고가 걸린 사안은 회사와 세무 대리인이 판단합니다.