자금 솔루션 · 자금 수지

SAP 설비투자 집행 자금 다차원 분석 — 계획 대비 396억원 차이를 요인 일곱 개로 가르는 자금 수지 리포트

큐브 집계 · 끌어다 놓는 축 구성 · 칸에서 원천 라인까지의 드릴스루 · 집행 계획 대비 차이와 일곱 요인분해 · 행에 남는 변동 사유 · 숫자를 모델에 맡기지 않는 AI 해설 · 하루 한 번 도는 AI 에이전트 — 소개 영상과 실제 화면 35종, 그리고 CDS 코드까지

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

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

설비투자는 한 번 결의하면 몇 달에 걸쳐 나가는 돈입니다. 월마다 계획보다 얼마나 더 나갔나, 왜 더 나갔나, 다음 달 자금은 괜찮은가를 묻게 되는데, 이 세 답은 자금 포지션 · 개별 항목 조회 · 엑셀 · 은행 자료로 흩어져 있습니다. 이 앱은 세 답을 한 화면에 모읍니다. 집행 계획과 실제 이체액을 같은 차원으로 묶고, 차이를 요인으로 쪼개고, 그 숫자가 어느 원천 라인에서 왔는지까지 내려갑니다.

자금 수지 영역의 업무 분석 도구이며 관련 기준서는 두지 않습니다. 설비 취득 지출의 현금흐름표 분류는 IAS 7 현금흐름표(K-IFRS 제1007호)에 따라 회계팀이 판단하고, 이 화면은 분류 이전 단계인 계획 대비 집행 차이와 지급 시점을 점검하는 데 씁니다.

한 줄 요약 — 집행 계획과 실제 이체액의 차이를 큐브 한 장으로 묶어 축을 바꿔 가며 보고, 칸에서 원천 라인까지 내려가며, 차이를 일곱 요인으로 쪼개 원인을 확인하는 설비투자 자금 분석 화면입니다.

핵심 포인트 일곱 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 축을 바꿔도 숫자가 갈라지지 않는 피벗투자 유형 · 지급 은행 · 자산군 · 지급일 대비 같은 차원을 끌어다 놓아 행 3단계 · 열 2단계로 봅니다. 모든 축이 같은 큐브에서 나오므로 합계가 어긋날 자리가 없습니다.투자 유형별 표와 은행별 표를 따로 만들고, 합계가 맞지 않으면 엑셀에서 원인을 찾습니다.
② 칸에서 원천 라인까지 한 번에칸을 누르면 그 금액을 만든 집행 라인이 열리고 합계가 칸 금액과 같은지 그 자리에서 보입니다.리포트를 닫고 개별 항목 조회를 다시 열어 조건을 손으로 맞춥니다.
③ 계획 대비 차이를 일곱 요인으로집행 계획과 실제 이체액의 차이를 수량 · 단가 · 설계변경 · 선급금 · 집행월 이동 · 계획 외 신규 · 계획 미발생으로 가릅니다. 합이 총차이와 맞는지 매번 검산합니다."왜 계획보다 많이 나갔나"를 엑셀로 만들고, 산식이 사람마다 달라집니다.
④ 차이 사유가 행에 남는다사유가 조회 범위와 행 경로에 묶여 저장되어 축을 바꿔도 다음 기간에도 그 행에 따라옵니다.같은 질문을 매달 다시 하고 지난달 답은 메일 속에 묻힙니다.
⑤ 사람이 열지 않아도 도는 감시감시 규칙마다 임계값과 받을 역할이 붙어 있어, 지연 지급 비중이나 미지급 잔액이 걸리면 대기함에 보고가 올라갑니다. 하루 한 번 제한은 서버가 판정합니다.자금이 빠듯해진 날 아무도 화면을 열지 않으면 그대로 지나갑니다.
⑥ 결재용 보고서를 바로보고 있는 범위의 표와 차트를 담은 PowerPoint 보고서가 브라우저에서 바로 만들어집니다.화면을 캡처해 숫자를 옮겨 적고 보고서를 다시 만듭니다.
⑦ 지급 시점까지 읽는 계산항목단위당 실집행액, 지연 지급 비중, 선급금 상계율, 기말 미지급 잔액처럼 전기되지 않는 지표를 식으로 정의해 같은 표에서 봅니다.약정 지급일을 넘긴 건과 월말 미지급을 은행 자료와 따로 대조합니다.

사례로 보는 효과 — 396억원 차이의 진짜 이유

검증용 샘플 데이터(2026년 1~9월)에서 실집행액은 1조 6,830.22억원으로 집행 계획 16,434.16억원보다 396.06억원(+2.4%) 많았습니다. 표준 화면은 여기까지 말해 줍니다. 요인으로 가르면 수량 변동 +309.60억원과 단가 변동 +67.31억원이 가장 크고, 설계변경·증액 반영이 +37.43억원, 선급금 상계가 −7.77억원입니다. 계획에 없던 신규 집행 +354.46억원과 계획했으나 집행되지 않은 −364.98억원은 서로 거의 상쇄됩니다. 일곱 요인의 합은 총차이와 맞고 그 검산 줄이 매번 화면에 나옵니다.

투자 유형으로 보면 교체·갱신 +172.87억원, 신규 설비 +113.76억원, 유지보수·대수선 +61.33억원 순으로 계획을 넘었고 안전·환경만 −1.26억원 줄었습니다. 같은 숫자를 칸에서 원천 라인으로 내려가면 신규 설비 3,454.41억원이 227건의 합계와 일치합니다. 큐브 검산 63건과 원천 대조 300건 모두 차이가 0원입니다.

도입하면 달라지는 것

  • 월 자금 회의의 질문 — "어느 표가 맞나"가 아니라 "이 수량 증가를 어떻게 할 것인가"로 옮겨 갑니다.
  • 보고 준비 — 표 · 요인분해 · 사유 · 보고서가 한 화면에서 나와 엑셀 취합과 캡처가 줄어듭니다.
  • 다음 기간으로 이어지는 기록 — 변동 사유와 저장한 보기가 남아 같은 설명을 다시 하지 않습니다.
  • 지급 시점 관리 — 지연 지급 비중과 기말 미지급 잔액이 같은 표에 있어 이체 마감과 결재 대기를 함께 점검합니다.

이런 회사에 맞습니다

설비투자 규모가 크고 월 단위 집행 계획을 관리하는 제조 · 유통 · 서비스 기업, 법인이 여러 개이고 거래 은행과 지급 방식(펌뱅킹 · 인터넷뱅킹 · 해외 송금 · 신용장 결제 · 전자어음)이 여럿인 곳, 설계변경과 선급금 정산이 잦아 집행액이 결의액과 달라지는 곳에 맞습니다. 사용하는 부서는 자금팀 · 설비 관리팀 · 재무팀이고, 경영진은 첫 화면의 경영 요약만으로도 쓸 수 있습니다.

실행 화면

실제로 돌아가는 화면 35종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 하는 자리인지를 아래에 적었습니다. 숫자는 모두 같은 검증용 샘플 데이터에서 나온 것이라 화면끼리 맞춰 보셔도 됩니다.

사용 방법

  1. 조회조건 입력 — 필수 항목은 기간(부터·까지)이고, 법인은 선택입니다. 법인을 "전체 법인"으로 두면 법인 필터를 만들지 않습니다. 비교 기준을 "집행 계획과 비교"로 두면 계획 대비 화면을 쓸 수 있고, 금액 단위는 원·백만원·억원 중에서 고릅니다.
  2. 조회 버튼과 Enter 키 — 조회 버튼은 하단 막대가 아니라 조회 조건 영역 안, 입력 칸들의 오른쪽 끝에 있고 초기화 버튼이 같은 줄 오른쪽에 붙어 있습니다. 기간·법인 칸에서 Enter 를 눌러도 같은 조회가 실행됩니다. 조회는 큐브를 한 번 읽을 뿐이며 이후 축을 바꾸는 동작은 서비스를 다시 부르지 않습니다.
  3. 요약 지표 확인 — 조회가 끝나면 위쪽 지표 줄 다섯 칸이 채워집니다. 칸은 보는 사람(경영·재무·설비투자·자금)에 따라 바뀌므로 먼저 역할을 고릅니다.
  4. 축 구성과 이동 — 차원 보관함의 칩을 행 축·열 축으로 끌어다 놓거나, 칩을 눌러 나오는 메뉴로 옮깁니다. 행 축은 최대 3단계, 열 축은 최대 2단계이며 칩의 X 로 축에서 뺍니다. 값 필터 단추로 차원별 값을 여러 개 골라 범위를 좁힙니다.
  5. 행 펼침과 칸 클릭 — 표의 행을 펼쳐 하위 차원으로 내려갑니다. 칸을 누르면 원천 라인 창이 열리고 칸 금액과 원천 합계가 일치하는지 머리에 표시됩니다.
  6. 계산항목과 계획 차이 — 측정값에서 계산항목(단위당 실집행액, 지연 지급 비중 등)을 고르면 표와 차트가 그 지표만 보여 줍니다. 계획 차이 스위치를 켜면 칸마다 실적·계획·차이·증감률이 나오고, 오른쪽 아래에 차이 워터폴과 요인 표가 나타납니다.
  7. 변동 사유·해설·에이전트 — 차이가 난 행을 골라 변동 사유를 적고, 해설 창에서 규칙 기반 해설과 근거 표를 확인합니다. 에이전트 창은 감시 규칙을 하루 한 번 점검합니다.
  8. 보기 저장과 CSV — 보기 저장으로 축·조건·측정값·행 수·접힘 상태를 이름 붙여 저장하고, 기본 보기와 자동 조회를 정할 수 있습니다. CSV 단추는 현재 표를 UTF-8(BOM) 파일로 내려받고, 보고서 PPTX 는 현재 범위를 PowerPoint 로 내려받습니다. 자동 조회를 켠 보기를 기본으로 두면 열 때 곧바로 조회됩니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
피벗 표sap.ui.table.TreeTable — 행 트리 × 동적 열행을 펼쳐 하위 차원으로 내려가고 열 조합이 늘어도 한 표에 담기 위해서입니다
차트직접 그린 SVG(묶음 막대 · 워터폴)외부 차트 라이브러리 반입 심사를 없애고 표와 같은 값을 그리기 위해서입니다
레이아웃 보드끌어다 놓기와 이동 메뉴마우스 없이도 키보드로 축을 옮길 수 있게 했습니다
집계 · 판정 로직서비스(데이터 서비스)의 계산 모듈금액 · 비율 · 요인분해 · 해설 · 에이전트 판정을 서비스가 계산하고 화면은 읽기만 합니다
데이터 연결OData V2 모델 — 엔티티셋 바인딩과 필터조회조건은 필터로 전달하고 큐브는 한 번 읽어 브라우저에서 다시 묶습니다
테마sap_horizon표준 컨트롤과 같은 시각 언어로 맞췄습니다
항목내용
솔루션자금 솔루션
업무 영역자금 수지 · 설비투자 집행
관련 기준서 · 대상 영역- · 자금 수지(설비투자 집행 자금)
SAP 표준 T-codeFF7A · FF7B · FBL1N · FBL3N · F110
Namespacezui5.capexcash
화면 성격다차원 분석 리포트(큐브 · 피벗 · 드릴스루 · 요인분해)
데이터 연동OData V2(검증용 샘플 데이터로 시연)
테마sap_horizon
SAP 표준 기능을 그대로 이어받은 부분 — 자금 포지션 · 유동성 예측 · 개별 항목 조회 · 지급 실행은 표준 화면이 그대로 담당합니다. 이 화면은 그 데이터 구조를 이어받아 투자 유형 · 자산군 · 지급일 대비 같은 축으로 모으고 계획 대비 차이를 요인으로 쪼개는 관점을 더해 확장합니다.

처음 열었을 때 — 조회 전 틀부터

조회조건부터 피벗까지가 한 화면에 쌓입니다. 조회 전에도 틀이 먼저 서 있고, 머리 영역은 접을 수 있습니다.

조회 전 — 틀이 먼저 보입니다
조회 전 — 틀이 먼저 보입니다 — 조회조건 · 레이아웃 보드 · 피벗 틀

처음 열면 조회조건과 차원 보관함, 행 축·열 축 보드, 빈 피벗 틀이 먼저 보입니다. 조회 전에도 어떤 축으로 볼지 미리 정해 둘 수 있습니다. 조회 버튼은 입력 칸들의 오른쪽 끝에 있고, 조건 칸에서 Enter 를 눌러도 같은 조회가 실행됩니다.

조회 직후 — 표와 차트가 함께 채워집니다
조회 직후 — 표와 차트가 함께 채워집니다 — 기본 배치 : 행 투자 유형 › 지급 은행, 열 분기

조회를 누르면 서비스가 큐브를 한 번 읽어 표와 오른쪽 SVG 차트를 채웁니다. 위쪽 지표 줄은 선택한 역할에 맞는 다섯 칸이고, 금액 단위는 억원이 기본입니다. 합계 행의 실집행액 16,830.22억원이 이후 모든 화면의 기준 숫자입니다.

레이아웃 보드 확대
레이아웃 보드 확대 — 쓰지 않는 차원 · 행 축 · 열 축 세 칸

차원 칩은 세 칸 사이를 끌어서 옮깁니다. 칩 오른쪽 X 로 축에서 뺄 수 있고, 칩을 눌러 이동 메뉴로도 옮길 수 있어 키보드만으로도 구성할 수 있습니다. 행 축은 최대 3단계, 열 축은 최대 2단계입니다.

축을 끌어다 놓은 뒤
축을 끌어다 놓은 뒤 — 행에 자산군 추가, 열에 지급일 대비 추가

차원 칩을 다른 칸에 놓으면 표가 바로 다시 묶입니다. 이 동작은 서비스를 다시 부르지 않고 브라우저에 있는 큐브를 다시 합산하므로 합계는 그대로입니다. 열이 늘어난 만큼 열 머리글이 두 줄로 나뉘어 표시됩니다.

머리 영역 접기
머리 영역 접기 — 조회 조건을 접으면 요약 한 줄만 남습니다

조회 조건 패널은 접을 수 있고 접으면 법인·기간·비교 기준·금액 단위가 한 줄 요약으로 남습니다. 표 영역을 넓게 쓰고 싶을 때 쓰는 기능이며 접은 상태도 보기 저장에 함께 담깁니다.

경영 요약 — 보는 사람에 따라 바뀌는 첫 줄

보는 사람(경영 · 재무 · 설비투자 · 자금)을 바꾸면 앞세우는 지표와 쪼개 보는 차원이 함께 바뀝니다. 다시 조회하지 않습니다.

경영 — 어느 유형에 얼마나 몰렸나
경영 — 어느 유형에 얼마나 몰렸나 — 역할 : 경영

역할을 바꾸면 위 지표 줄과 쪼개 보는 차원이 함께 바뀝니다. 경영 역할은 투자 유형별 집행 비중과 계획 차이를 앞세웁니다. 다시 조회하지 않고 같은 큐브에서 바로 바뀝니다.

재무 — 선급금 상계와 설계변경 반영
재무 — 선급금 상계와 설계변경 반영 — 역할 : 재무

재무 역할은 선급금 상계와 설계변경·증액 반영을 투자 유형별로 나란히 보여 줍니다. 집행 결의액이 실집행액으로 바뀌는 과정을 읽는 화면입니다.

설비투자 — 자산군별 수량과 단가
설비투자 — 자산군별 수량과 단가 — 역할 : 설비투자

설비투자 역할은 자산군별 집행 수량과 단위당 실집행액을 보여 줍니다. 기계장치·건물 구축물·차량 운반구·IT 장비로 나눠 단가가 어디서 올랐는지 읽습니다.

자금 — 미지급 잔액과 지연 지급
자금 — 미지급 잔액과 지연 지급 — 역할 : 자금

자금 역할은 지급 은행별 기말 미지급 잔액과 지연 지급 비중을 앞세웁니다. 비중이 큰 은행부터 이체 마감 시각과 결재 대기 건을 확인하는 순서로 씁니다.

축 전환과 범위 — 은행별 · 지급일별로 쪼개 보기

열 축을 두 단계로 쌓고, 값 필터로 범위를 좁히고, 표와 차트의 너비를 조절합니다. 어떤 배치에서도 총합은 같습니다.

열 축 두 단계
열 축 두 단계 — 열 : 분기 › 지급일 대비 › 측정값

열 축도 두 단계까지 쌓을 수 있습니다. 열 조합이 36개를 넘으면 더 추가되지 않고 범위를 줄이라는 안내가 뜹니다. 차트는 행 기준 묶음 막대로 바뀝니다.

값 필터
값 필터 — 시간 외 차원마다 값 여러 개 선택

값 필터는 차원을 고른 뒤 값을 여러 개 체크합니다. 값마다 이름과 코드와 원천 라인 수가 함께 보이고, 큐브에 있는 값만 올라옵니다. 같은 차원 안에서는 or, 차원끼리는 and 로 묶입니다.

값 두 개 선택
값 두 개 선택 — 지급 은행 두 곳 선택

가상 시중은행 A와 B 두 곳만 체크한 모습입니다. 적용을 누르면 큐브에서 해당 값만 남겨 다시 묶습니다.

좁힌 결과
좁힌 결과 — 필터 : 지급 은행 2

필터를 걸면 위 지표와 표와 차트가 함께 좁혀지고 머리 영역에 "필터: 지급 은행 2" 요약이 붙습니다. 이 범위의 실집행액 합계 10,807.65억원은 선택한 두 은행의 큐브 합계와 같습니다.

표와 차트 사이 손잡이
표와 차트 사이 손잡이 — 너비 조절 — 브라우저가 기억합니다

표와 차트 사이 손잡이를 끌어 너비를 조절합니다. 조절한 비율은 브라우저가 기억하고, 좁은 화면에서는 차트가 표 아래로 내려갑니다.

칸에서 원천 라인까지 — 기간별 요약과 드릴스루

궁금한 칸을 누르면 그 금액을 만든 원천 라인이 열립니다. 칸 금액과 원천 합계가 같은지 머리에 표시됩니다.

기간별 요약
기간별 요약 — 행 축 : 회계기간(집행월)

행 축을 회계기간으로 두면 집행월별 실집행액과 집행 결의액, 설계변경·증액 반영이 한눈에 보입니다. 9월 한 달에 2,696.32억원이 몰렸다는 것도 이 화면에서 바로 읽힙니다.

칸을 누르면 원천 라인이 열립니다
칸을 누르면 원천 라인이 열립니다 — 신규 설비 · 합계 칸 — 227건 3,454.41억원

표의 칸을 누르면 그 금액을 만든 원천 라인이 열립니다. 머리에 표의 값, 원천 합계, 일치 여부, 라인 수, 질의 조건이 함께 표시됩니다. 기본 500행씩 페이징하고 CSV 로 내려받을 수 있습니다.

다른 칸의 원천 라인
다른 칸의 원천 라인 — 증설 · 2026년 1분기 — 120건 1,181.05억원

행 경로와 열 조합이 그대로 조건이 되므로 어떤 칸에서든 같은 방식으로 내려갑니다. 칸 금액과 원천 합계가 일치하면 초록색 일치 표시가 붙습니다.

계산항목 — 지연 지급 비중과 단위당 집행액

전기되지 않는 지표를 식으로 정의해 행처럼 씁니다. 계산은 서비스가 하고 화면은 보여 주기만 합니다.

계산항목 — 단위당 실집행액
계산항목 — 단위당 실집행액 — 측정값에서 계산항목을 고릅니다

전기되지 않는 지표는 계산항목으로 정의합니다. 계산항목을 고르면 표와 차트가 그 지표만 보여 줍니다. 단위당 실집행액은 실집행액을 집행 수량으로 나눈 값이며 계산은 서비스가 맡습니다.

계산항목 — 지연 지급 비중
계산항목 — 지연 지급 비중 — 실집행액 가운데 약정 지급일을 넘긴 몫

지연 지급 비중은 지연 지급 실집행액을 전체 실집행액으로 나눈 퍼센트입니다. 행 축을 펼쳐 비중이 큰 행을 찾는 데 씁니다. 에이전트의 지연 지급 규칙도 같은 식을 씁니다.

계획 대비 차이 — 같은 표가 월 자금 회의 자료가 된다

집행 계획과 비교하면 같은 표가 차이 리포트가 됩니다. 차이를 요인으로 쪼개고 사유를 남깁니다.

계획 차이 모드
계획 차이 모드 — 칸마다 실적 · 계획 · 차이 · 증감률

계획 차이를 켜면 칸마다 실적, 계획, 차이, 증감률이 나란히 나옵니다. 색은 자금에 준 영향 방향으로 칠하고, 금액 기준과 비율 기준을 둘 다 넘을 때만 칠합니다. 기본 기준은 50백만원과 5퍼센트입니다.

차이 워터폴 · 요인분해
차이 워터폴 · 요인분해 — 계획 16,434.16 → 실적 16,830.22

오른쪽 아래 워터폴이 계획에서 실적까지를 요인별 막대로 잇습니다. 수량 변동, 단가 변동, 설계변경·증액, 선급금 상계, 집행월 이동, 계획 외 신규 집행, 계획 집행 미발생 일곱 요인의 합이 총차이와 맞고 그 검산 줄이 매번 표시됩니다.

변동 사유 기재
변동 사유 기재 — 구분과 내용을 적어 저장

차이가 난 행을 골라 사유 구분과 내용을 적습니다. 구분은 지급 시기, 수량·단가, 설계변경·증액 반영, 선급금 상계, 계획 외 신규 집행, 일회성, 기타 중에서 고릅니다.

사유가 행에 남습니다
사유가 행에 남습니다 — 저장 후 표에 사유 표시

저장한 사유는 조회 범위와 행 경로를 키로 서비스에 쓰입니다. 새로 고침해도 남고 다음 기간에도 따라오며 CSV 와 해설 근거에 함께 실립니다.

해설과 PowerPoint 보고서

숫자는 서비스가 계산하고 문장은 규칙으로 씁니다. 근거 표를 펼쳐 확인하고 PowerPoint 보고서로 내려받습니다.

해설
해설 — 현재 범위를 읽어 요약과 핵심 발견

해설은 현재 범위의 숫자를 서비스가 읽어 요약과 핵심 발견을 규칙으로 씁니다. 모델 연결은 서비스 안 설정 하나로 켜며 기본은 꺼져 있습니다. 이미 사유가 적힌 차이는 건너뜁니다.

근거 표
근거 표 — 해설에 쓴 숫자를 펼쳐 확인

해설 문장에 쓴 숫자는 근거 표로 펼쳐 볼 수 있습니다. 모델이 숫자를 만들지 않고 서비스가 계산한 값만 문장에 옮기므로 표와 문장이 같습니다.

PowerPoint 보고서
PowerPoint 보고서 — 브라우저에서 바로 내려받기

현재 범위의 표와 차트를 담은 PowerPoint 보고서를 브라우저 안에서 만들어 내려받습니다. 외부 라이브러리 없이 압축과 XML 을 직접 짓습니다.

에이전트 — 사람이 열지 않아도 도는 점검

감시 규칙에 걸린 항목이 받을 역할의 대기함에 올라갑니다. 하루 한 번 제한은 서버가 판정합니다.

감시 규칙과 대기함
감시 규칙과 대기함 — 규칙 네 개 · 임계값 · 받을 역할

에이전트 창에는 감시 규칙 네 개와 임계값, 받을 역할, 대기함, 실행 이력이 함께 있습니다. 규칙은 지연 지급 비중, 설계변경·증액, 계획 차이, 기말 미지급 잔액입니다.

지금 실행
지금 실행 — 걸린 항목이 대기함에 올라갑니다

지금 실행을 누르면 서비스가 규칙을 점검하고 걸린 항목을 받을 역할의 관점으로 대기함에 올립니다. 걸린 것이 없어도 실행 이력에 활동 기록이 남습니다.

하루 한 번 제한
하루 한 번 제한 — 두 번째 실행은 서버가 막습니다

같은 날 두 번째 실행은 서비스가 판정해 막습니다. 화면이 막는 것이 아니라 서버 규칙이므로 다른 경로로 불러도 같습니다. 운영 배치 연결은 설명서에 설명만 있습니다.

보기 저장과 복원

축과 조건을 이름 붙여 저장하고 기본 보기와 자동 조회로 지정합니다. 새로 고침해도 조회된 채로 시작합니다.

보기 저장
보기 저장 — 축 · 조건 · 측정값 · 행 수 · 접힘 상태

현재 축과 조회조건과 측정값과 표시 행 수와 접힘 상태를 이름 붙여 저장합니다. 기본 보기와 자동 조회를 함께 지정할 수 있습니다.

저장한 보기 관리
저장한 보기 관리 — 적용 · 기본으로 · 이름 바꾸기 · 삭제

저장한 보기를 적용하거나 기본으로 정하고 이름을 바꾸거나 지웁니다. 기본으로 정하고 자동 조회까지 켜 두면 열자마자 조회된 채로 시작합니다.

새로 고친 뒤에도 조회된 채로
새로 고친 뒤에도 조회된 채로 — 기본 보기 + 자동 조회

새로 고침하면 저장해 둔 기본 보기가 적용되고 자동으로 조회됩니다. 사유와 보기가 서비스에 쓰였다는 확인이기도 합니다.

좁은 화면과 한계

좁은 화면에서는 차트가 표 아래로 내려가고, 범위가 상한을 넘으면 좁히라는 안내가 뜹니다. 서비스에 닿지 않을 때도 안내 창이 뜹니다.

범위 상한 안내
범위 상한 안내 — 행·열 조합이 상한을 넘을 때

행이나 열 조합이 상한을 넘으면 반쯤 그린 표 대신 범위를 좁히라는 안내가 뜹니다. 행 축을 줄이거나 필터를 걸어 범위를 좁히라고 안내합니다.

390px 좁은 화면
390px 좁은 화면 — 차트가 표 아래로

좁은 화면에서는 차트가 표 아래로 쌓입니다. 표는 가로로 밀어 보고 차트는 아래에서 이어서 봅니다.

서비스에 닿지 않을 때
서비스에 닿지 않을 때 — 오류 안내 창

서비스에 연결하지 못하면 빈 화면이나 콘솔 오류로 두지 않고 안내 창이 원인을 알려 줍니다. 메타데이터 읽기 실패와 요청 실패와 빈 응답을 구분해 안내합니다.

화면 뒤에서 일어나는 일

조회를 누르면 화면은 두 번만 서비스를 부릅니다. 첫째, 조회조건을 $filter 로 바꿔 큐브(CubeSet)를 한 번 읽습니다. 둘째, 계획 비교를 켰다면 같은 조건으로 계획(PlanSet)을 읽습니다. 그 뒤 축을 바꾸거나 값 필터를 거는 일은 서비스를 다시 부르지 않고 브라우저에서 큐브를 다시 묶는 일입니다. 요인분해(DecomposeVariance), 해설(ExplainScope), 에이전트 실행(RunAgent)은 서비스가 계산해 돌려주고, 칸 클릭의 원천 라인은 원천 라인 집합(ItemSet)을 같은 조건으로 읽습니다. 변동 사유와 보기, 에이전트 이력은 서비스에 쓰입니다.

판정 규칙 — 조건에서 조치까지

판정 조건결과 상태사용자 조치
계획 차이 켬 · 칸의 |차이| ≥ 금액 기준(기본 50백만원) 그리고 |증감률| ≥ 비율 기준(기본 5%)영향 방향 색으로 표시(둘 중 하나만 넘으면 칠하지 않음)요인분해로 원인을 확인하고 변동 사유를 남깁니다
요인 일곱 개의 합 + 집행 계획액 − 실적 실집행액 ≠ 0검산 줄에 차이 금액 표시(점검 필요)원천 라인 범위와 조회 범위를 확인합니다
원천 라인 합계 ≠ 칸 금액(드릴스루)"표의 값과 N원 차이" 표시(확인 필요)조건이 같은지 확인하고 큐브 검산 결과를 봅니다
지연 지급 비중 ≥ 8%(규칙 AG01, 설정값)자금 역할 대기함에 경고 보고이체 마감 시각과 결재 대기 건을 확인합니다
설계변경·증액 반영 합계 ≥ 20억원(규칙 AG02)설비투자 역할 대기함 보고증액 사유와 계약 변경 근거를 확인합니다
|실집행액 − 집행 계획| ≥ 100억원(규칙 AG03)재무 역할 대기함 보고요인분해와 변동 사유로 원인을 확인합니다
기말 미지급 잔액 ≥ 150억원(규칙 AG04)경영 역할 대기함 보고(경고)지급 일정과 자금 여력을 점검합니다
같은 날 에이전트를 두 번째 실행서비스가 제한(LIMIT)으로 판정하고 이력에 남김다음 날 다시 실행합니다

차이 요인의 산식

실집행액 = 집행 결의액 + 설계변경·증액 반영 − 선급금 상계이고, 집행 계획액도 같은 구성입니다. 같은 라인에 계획과 실적이 모두 있으면 집행 결의액 차이를 수량 효과와 단가 효과로 가르고, 한쪽에만 있으면 계획 외 신규 집행 · 계획 집행 미발생 · 집행월 이동으로 가릅니다. 어느 쪽이든 합은 총차이와 같습니다.

요인산식 또는 의미샘플 범위 값
수량 변동(실적 수량 − 계획 수량) × 계획 단가+309.60억원
단가 변동집행 결의액 차이 − 수량 변동+67.31억원
설계변경·증액 반영실적 설계변경·증액 − 계획 설계변경·증액+37.43억원
선급금 상계 효과−(실적 선급금 상계 − 계획 선급금 상계)−7.77억원
집행월 이동(앞당김·지연)다른 달 계획이 옮겨 온(또는 옮겨 간) 지급0.00억원
계획 외 신규 집행계획에 없던 집행 라인의 실집행액+354.46억원
계획 집행 미발생(이연·취소)계획만 있고 집행이 없는 라인의 계획액(부호 반전)−364.98억원

조회조건

조건필수 여부기본값처리 방식
법인선택전체 법인Comp eq '1000' — 전체 법인이면 필터를 만들지 않음
기간(부터)필수2026년 01월Period ge '202601'
기간(까지)필수2026년 09월Period le '202609'
비교 기준선택집행 계획과 비교계획 비교를 켜면 PlanSet 을 함께 읽음
금액 단위선택억원화면 표시 단위(원 · 백만원 · 억원) — 서비스 값은 원 단위
값 필터선택없음시간 외 차원별 값 여러 개 — 브라우저에서 큐브를 좁힘

결과 컬럼

컬럼의미 · 산출식합치는 방식
실집행액(원)집행 결의액 + 설계변경·증액 반영 − 선급금 상계기간을 합치면 합산
집행 결의액(원)집행 결의된 기성·대금 총액(선급금 상계 전)합산
설계변경·증액 반영(원)설계변경·물가 연동 등으로 집행액에 더해진 금액(음수는 감액)합산
선급금 상계(원)집행액에서 차감한 선급금 정산분합산
기말 미지급 잔액(원)집행 결의는 했으나 월말까지 지급하지 않은 금액기간을 합쳐도 끝 기간만 사용
집행 수량(설비 대·식)월별 집행 대상 설비·계약 수량합산
원천 라인 수집행·미지급 월별 라인 건수합산
단위당 실집행액(원)실집행액 ÷ 집행 수량계산항목
설계변경·증액 반영률(%)설계변경·증액 반영 × 100 ÷ 집행 결의액계산항목
선급금 상계율(%)선급금 상계 × 100 ÷ 집행 결의액계산항목
지연 지급 비중(%)지연 지급 실집행액 × 100 ÷ 실집행액계산항목
조기 지급 비중(%)조기 지급 실집행액 × 100 ÷ 실집행액계산항목
집행 비중(%)실집행액 × 100 ÷ 범위 전체 실집행액계산항목

좁은 화면에서 달라지는 것

390px 폭에서는 차트가 표 아래로 쌓이고, 표와 차트 사이 손잡이는 쓰지 않습니다. 머리 영역은 접어 두는 편이 읽기 좋고, 표는 가로로 밀어 봅니다. 행과 열 조합이 상한(행은 필터로 줄이기, 열은 36개)을 넘으면 반쯤 그린 표 대신 범위를 좁히라는 안내가 뜹니다.

파일 구성

앱 폴더
  index.html · Component.js · manifest.json
  controller/   화면 제어(조회 · 축 전환 · 드릴스루 · 저장)
  view/         메인 화면과 창(원천 라인 · 사유 · 보기 · 해설 · 에이전트 · 값 필터)
  model/        피벗 재집계 · SVG 차트 · 보고서 생성 · 서식 · 오류 안내
  css/ · i18n/
  odata/        서비스 정의(메타데이터 · 서비스 로직 · 데이터)
  media/        소개 영상
  readme.html   설명서

SAP 표준 기능 확장 포인트

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회와 검증 관점을 더해 확장합니다. 어느 표준 화면의 숫자를 이어받고 어디서 맞춰 보는지를 정리했습니다.

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

하고 싶은 일SAP 표준표준에서 걸리는 자리이 앱이 하는 일
자금 포지션 확인FF7A은행 계정별 잔액 중심이라 설비투자 단위로 쪼개 보기 어렵습니다투자 유형·자산군 축으로 같은 기간 집행액을 보여 줍니다
유동성 예측FF7B예측 항목이 계획 그룹 단위라 집행 차이 원인은 따로 찾습니다계획 대비 차이를 요인 일곱 개로 가릅니다
공급사 개별 항목FBL1N건별로 열람하며 집계 축을 바꾸기 어렵습니다칸에서 원천 라인으로 내려가 개별 항목 조회로 대조합니다
총계정원장 개별 항목FBL3N계정 단위 조회라 투자 유형 기준 합계가 없습니다집계 합계를 개별 항목 합계와 맞춰 보는 대사 지점이 됩니다
지급 실행F110실행 결과는 보지만 계획 대비 차이를 설명하지 않습니다지급일 대비(약정·조기·지연) 축으로 지급 시점 차이를 봅니다
차이 사유 기록없음집계 행에 사유를 붙일 자리가 없습니다조회 범위와 행 경로를 키로 사유를 남깁니다

T-code 별 연계 지점

T-code이름연계
FF7A자금 포지션이 앱의 은행별 기말 미지급 잔액과 은행 계정 잔액을 같은 날짜로 맞춰 봅니다. 표준에 남길 일 : 일별 자금 포지션 마감.
FF7B유동성 예측집행 계획 그룹의 월별 금액을 이 앱의 집행 계획 열과 맞춥니다. 이 앱 결과 → 예측 항목 조정 근거. 표준에 남길 일 : 예측 항목 유지.
FBL1N공급사 개별 항목칸에서 연 원천 라인의 문서번호로 개별 항목을 열어 지급 상태를 확인합니다. 표준에 남길 일 : 채무 관리.
FBL3N총계정원장 개별 항목취득 계정(건설중인자산 등)의 라인 합계를 이 앱의 집행 결의액과 대사합니다. 표준에 남길 일 : 원장 대사 · 감사 대응.
F110지급 실행지급일 대비(약정 · 조기 · 지연) 축의 결과를 지급 실행 일정과 비교합니다. 표준에 남길 일 : 지급 제안과 실행.

운영으로 옮길 때 기존 리포트를 없앨 필요는 없습니다. 법정 · 감사 · 세무 대응에 쓰는 표준 리포트는 그대로 두고, 이 화면은 월 자금 회의와 설비투자 집행 점검에 더해 씁니다.

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

이 화면이 읽는 큐브와 쿼리는 S/4HANA 의 분석 쿼리(CDS 기반 분석 모델) 방식으로 옮겨 구성합니다. Fiori 분석 앱이나 Analysis for Office 는 같은 쿼리를 다른 화면에서 읽는 선택지이며, 이 화면은 축 끌어다 놓기와 요인분해 · 해설 · 에이전트까지 한 화면에 묶었다는 점이 다릅니다. 확인하지 못한 Fiori 앱 이름은 적지 않았습니다.

분석 지표 정의표

지표산식 · 판정 기준대응 기능원천 데이터비고
실집행액집행 결의액 + 설계변경·증액 반영 − 선급금 상계피벗 · 차트총계정원장 라인(취득 계정)기간 합산
계획 대비 차이실적 실집행액 − 집행 계획액계획 차이 모드 · 워터폴집행 계획 라인금액 · 비율 기준을 모두 넘을 때 표시
요인분해수량 · 단가 · 설계변경 · 선급금 · 집행월 이동 · 계획 외 신규 · 계획 미발생워터폴 · 요인 표집행 · 계획 라인합 = 총차이 검산
지연 지급 비중지연 지급 실집행액 × 100 ÷ 실집행액계산항목 · 에이전트 규칙지급 실행 결과 · 약정 지급일임계값은 설정 가능
기말 미지급 잔액결의 후 월말까지 지급하지 않은 금액측정값 · 에이전트 규칙공급사 미결 항목끝 기간만 사용
단위당 실집행액실집행액 ÷ 집행 수량계산항목집행 수량(설비 대·식)자산군별 단가 비교

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

자리무엇을 손대나누가
투자 유형 · 자산군 매핑계정 · 계획 그룹 → 투자 유형 · 자산군 대응 표에 행 추가현업(설비 관리팀)
집행 계획 원천계획 버전 · 계획 단위 선택, 확장 필드로 수량 추가기획팀 · 개발
선급금 · 설계변경 식별전표 유형 · 계정 기준(확장 필드 또는 구현 분기)회계팀 · 개발
지연 판정 일수약정 지급일 대비 지연으로 볼 일수와 규칙 임계값자금팀
권한회사코드 · 은행 단위 접근 제어 역할보안 · 권한 담당
감시 규칙임계값 · 받을 역할 · 주기 변경자금팀 · 재무팀

CDS 구성

운영 데이터로 옮길 때의 구조입니다. 기준(매핑) → 차원 → 실적 · 계획 → 큐브 → 쿼리 → 권한 → 서비스 순서로 쌓습니다. 객체 이름은 기능을 뜻하는 영문으로 지었고, 확정하지 못한 항목은 코드 주석에 "확인 필요"로 남겼습니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준ZCX_INVMAP계정 · 계획 그룹을 투자 유형 · 자산군에 연결계정이 늘 때 뷰를 고치지 않고 행만 추가하려고
차원ZI_CapexInvType 외코드와 이름 · 정렬을 한 곳에서 정함화면 칩 이름과 필터 코드가 같은 원천을 쓰게
실적ZI_CapexPaymentFact취득 계정 라인을 집행 결의액 · 상계로 나눔원천 라인과 큐브 사이의 검산 지점을 만들려고
계획ZI_CapexPaymentPlan집행 계획을 실적과 같은 모양으로 맞춤버전 관리를 실적과 분리하려고
큐브ZI_CapexCashCube차원 조합별 집계화면이 큐브 한 번 읽기로 모든 축을 다시 묶게
쿼리ZC_CapexCashQuery조회조건 · 기본 축 배치필수 필터와 기본 배치를 서비스 쪽에서 정하려고
권한ZC_CAPEXCASHQUERY (DCL)회사코드 단위 접근 제어집계 단계에서 남의 숫자가 새지 않게
서비스ZUI_CapexCash엔티티셋으로 공개화면은 서비스 주소만 바꾸면 되게

① 설비 구분 매핑 테이블 — 계정과 투자 유형을 잇는 기준

설비투자 집행은 계정만 보면 투자 유형을 알 수 없습니다. 어떤 취득 계정과 건설중인자산 계정이 신규 설비이고 어떤 것이 교체·갱신인지를 고객사가 정하는 기준 표가 가장 먼저 필요합니다. 이 표가 흔들리면 이후의 모든 집계가 흔들리므로 현업이 직접 유지보수할 수 있게 빈 칸 없는 키 구조로 둡니다.

" ─────────────────────────────────────────────────────────────
" ZCX_INVMAP — 설비 구분 매핑(기준)
" 역할 : 계정·계획 그룹을 투자 유형(신규·증설·교체…)과 자산군에 연결한다
" 이렇게 나눈 이유 : 집계 뷰에 case 문으로 박아 두면 계정이 늘 때마다
"                  뷰를 고쳐 이송해야 한다. 표로 두면 현업이 행만 추가한다.
" ─────────────────────────────────────────────────────────────
@EndUserText.label : '설비투자 구분 매핑'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zcx_invmap {
  key mandt      : mandt not null;
  key ktopl      : ktopl not null;           " 계정과목표
  key saknr      : saknr not null;           " 계정
  key plan_group : abap.char(10) not null;   " 집행 계획 그룹
  inv_type       : abap.char(1);             " N 신규 · E 증설 · R 교체 · M 유지보수 · I IT · S 안전
  asset_cls      : abap.char(1);             " M 기계 · B 건물 · V 차량 · T IT
  valid_from     : dats;
  valid_to       : dats;
}

② 차원 뷰 — 투자 유형 텍스트와 정렬

차원은 코드와 이름을 따로 들고 있어야 합니다. 화면 칩에는 이름이, 필터에는 코드가 쓰이기 때문입니다. 언어 의존 텍스트는 별도 텍스트 뷰로 분리해 association 으로 잇습니다.

" ─────────────────────────────────────────────────────────────
" ZI_CapexInvType — 투자 유형 차원
" 역할 : 코드(N·E·R·M·I·S)와 이름·정렬 순서를 한 곳에서 정한다
" ─────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #NOT_REQUIRED
@EndUserText.label : '투자 유형'
@Analytics.dataCategory : #DIMENSION
@ObjectModel.representativeKey : 'InvType'
@ObjectModel.usageType : { serviceQuality: #A, sizeCategory: #S, dataClass: #CUSTOMIZING }
define view entity ZI_CapexInvType
  as select distinct from zcx_invmap
  association [0..*] to ZI_CapexInvTypeText as _Text on $projection.InvType = _Text.InvType
{
  @ObjectModel.text.association : '_Text'
  key inv_type as InvType,
  _Text
}

define view entity ZI_CapexInvTypeText
  as select from dd07t
{
  key cast( substring( domvalue_l, 1, 1 ) as abap.char(1) ) as InvType,
  @Semantics.language : true key ddlanguage                  as Language,
  @Semantics.text : true        ddtext                       as InvTypeName
} where domname = 'ZCX_INVTYPE' and as4local = 'A'

③ 실적 뷰 — 집행 문서 라인을 같은 모양으로

실적은 공급사 개별 항목과 총계정원장 라인에서 나옵니다. 여기서는 총계정원장 라인(ACDOCA)을 원천으로 잡고 건설중인자산·유형자산 취득 계정만 매핑 표로 걸러 냅니다. 금액은 회사코드 통화 기준이며 선급금 상계 라인은 부호를 구분해 별도 칸으로 옮깁니다.

" ─────────────────────────────────────────────────────────────
" ZI_CapexPaymentFact — 설비투자 집행 실적(라인)
" 역할 : 취득 계정 라인을 집행 결의액·설계변경·선급금 상계로 나눠 한 모양으로 만든다
" 확인 필요 : 선급금·설계변경 라인을 가르는 전표 유형은 고객사 기준으로 정한다
" ─────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '설비투자 집행 실적'
define view entity ZI_CapexPaymentFact
  as select from acdoca as a
    inner join   zcx_invmap as m on  m.saknr = a.racct
                                 and m.ktopl = $session.system_language  " 계정과목표 연결은 실제 환경에서 확정
{
  key a.rbukrs                                    as CompanyCode,
  key a.gjahr                                     as FiscalYear,
  key a.belnr                                     as AccountingDocument,
  key a.docln                                     as LedgerGLLineItem,
      cast( concat( a.gjahr, a.poper ) as abap.char(6) ) as Period,
      a.budat                                     as PostingDate,
      m.inv_type                                  as InvType,
      m.asset_cls                                 as AssetCls,
      @Semantics.amount.currencyCode : 'CompanyCodeCurrency'
      case when a.blart <> 'AB' then a.hsl else 0 end   as GrossAmount,
      @Semantics.amount.currencyCode : 'CompanyCodeCurrency'
      case when a.blart = 'AB'  then a.hsl else 0 end   as DeductAmount,
      a.rhcur                                     as CompanyCodeCurrency
} where a.koart = 'A' or a.koart = 'S'

④ 계획 뷰 — 집행 계획을 같은 차원으로

비교 기준은 전표에서 나오지 않는 유일한 자료입니다. 계획은 계획 그룹과 월을 키로 들고 있고, 실적과 같은 차원(법인·은행·투자 유형·자산군)으로 펼쳐 큐브에서 한 줄에 놓이게 합니다.

" ─────────────────────────────────────────────────────────────
" ZI_CapexPaymentPlan — 설비투자 집행 계획(라인)
" 역할 : 집행 계획표(ZCX_PLAN)를 실적 뷰와 같은 키·측정값으로 맞춘다
" 이렇게 나눈 이유 : 실적과 계획을 한 뷰에 섞으면 버전 관리가 어렵다
" ─────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '설비투자 집행 계획'
define view entity ZI_CapexPaymentPlan
  as select from zcx_plan as p
{
  key p.bukrs        as CompanyCode,
  key p.plan_version as PlanVersion,
  key p.plan_period  as Period,
  key p.plan_line    as PlanLine,
      p.inv_type     as InvType,
      p.asset_cls    as AssetCls,
      p.bank_key     as BankKey,
      @Semantics.amount.currencyCode : 'Currency'
      p.gross_plan   as GrossAmount,
      @Semantics.amount.currencyCode : 'Currency'
      p.adj_plan     as AdjAmount,
      @Semantics.amount.currencyCode : 'Currency'
      p.deduct_plan  as DeductAmount,
      p.qty_plan     as QuantityPlan,
      p.waers        as Currency
}

⑤ 큐브 — 실적과 계획을 한 모양으로 합친다

큐브는 이 화면의 CubeSet 과 PlanSet 이 읽는 단위입니다. 실적과 계획을 version 열로 구분해 union 하고, 차원 조합별로 합산합니다. 실집행액은 집행 결의액에 설계변경·증액을 더하고 선급금 상계를 뺀 값이며, 기말 미지급 잔액은 마지막 기간만 쓰도록 집계 방식을 따로 지정합니다.

" ─────────────────────────────────────────────────────────────
" ZI_CapexCashCube — 설비투자 집행 자금 큐브
" 역할 : 차원 조합(집행월·법인·은행·투자 유형·자산군·지급일 대비…)별 집계
" ─────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@Analytics.dataCategory : #CUBE
@EndUserText.label : '설비투자 집행 자금 큐브'
define view entity ZI_CapexCashCube
  as select from ZI_CapexPaymentFact as f
  association [0..1] to ZI_CapexInvType as _InvType on $projection.InvType = _InvType.InvType
{
  key f.CompanyCode,
  key f.Period,
  key f.InvType,
  key f.AssetCls,
      _InvType,
      @Aggregation.default : #SUM
      @Semantics.amount.currencyCode : 'CompanyCodeCurrency'
      f.GrossAmount                                              as Gross,
      @Aggregation.default : #SUM
      @Semantics.amount.currencyCode : 'CompanyCodeCurrency'
      f.DeductAmount                                             as Deduct,
      @Aggregation.default : #SUM
      @Semantics.amount.currencyCode : 'CompanyCodeCurrency'
      cast( f.GrossAmount - f.DeductAmount as abap.curr(23,2) )  as PaidAmount,
      @Aggregation.default : #SUM
      cast( 1 as abap.int4 )                                     as LineCount,
      f.CompanyCodeCurrency
} group by f.CompanyCode, f.Period, f.InvType, f.AssetCls, f.CompanyCodeCurrency

⑥ 분석 쿼리 — 화면이 읽는 모양

쿼리는 화면이 보는 축과 필터를 선언합니다. 조회조건의 법인과 기간 범위를 필수 필터로 걸고, 행과 열 축의 기본 배치를 정해 둡니다. 사용자가 축을 바꾸는 것은 화면 쪽 일이므로 쿼리는 기본값만 줍니다.

" ─────────────────────────────────────────────────────────────
" ZC_CapexCashQuery — 설비투자 집행 자금 분석 쿼리
" 역할 : 조회조건(법인·집행월)과 기본 축 배치를 정한다
" ─────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@Analytics.query : true
@EndUserText.label : '설비투자 집행 자금 분석'
@OData.publish : false
define view entity ZC_CapexCashQuery
  as select from ZI_CapexCashCube
{
  @AnalyticsDetails.query.axis : #FREE
  @Consumption.filter : { selectionType : #SINGLE, mandatory : false }
  key CompanyCode,
  @AnalyticsDetails.query.axis : #COLUMNS
  @Consumption.filter : { selectionType : #INTERVAL, mandatory : true }
  key Period,
  @AnalyticsDetails.query.axis : #ROWS
  key InvType,
  @AnalyticsDetails.query.axis : #FREE
  key AssetCls,
  @AnalyticsDetails.query.axis : #COLUMNS
  PaidAmount,
  @AnalyticsDetails.query.axis : #COLUMNS
  Gross,
  @AnalyticsDetails.query.axis : #COLUMNS
  Deduct
}

⑦ 권한 — 회사코드 기준 접근 제어

권한은 집계 단계에 걸어야 합니다. 드릴스루에만 걸면 전사 합계와 자기 몫의 차이로 남의 숫자가 드러납니다. 회사코드 권한 객체로 쿼리와 큐브 모두에 같은 역할을 겁니다.

" ─────────────────────────────────────────────────────────────
" ZC_CapexCashQuery 접근 역할 — 회사코드 권한
" 역할 : 조회 권한이 있는 회사코드의 집행 자금만 보이게 한다
" ─────────────────────────────────────────────────────────────
@EndUserText.label : '설비투자 집행 자금 접근 제어'
@MappingRole : true
define role ZC_CAPEXCASHQUERY {
  grant select on ZC_CapexCashQuery
    where ( CompanyCode ) = aspect pfcg_auth ( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

⑧ 서비스 정의와 바인딩 — 화면이 부르는 서비스

쿼리를 서비스로 공개하는 단계입니다. 서비스 정의에서 노출할 객체를 정하고 바인딩에서 OData V2 로 게시합니다. 이 화면이 부르는 엔티티셋 이름은 여기서 정한 이름과 맞춰 두고, 화면 쪽은 서비스 주소만 교체하면 됩니다.

" ─────────────────────────────────────────────────────────────
" ZUI_CAPEXCASH — 서비스 정의
" 역할 : 쿼리를 엔티티셋으로 공개한다. 바인딩은 OData V2(UI) 로 게시
" 확인 필요 : 쓰기 항목(변동 사유 · 보기 · 에이전트 이력)은 RAP 관리형 객체로 따로 둔다
" ─────────────────────────────────────────────────────────────
@EndUserText.label : '설비투자 집행 자금 서비스'
define service ZUI_CapexCash {
  expose ZC_CapexCashQuery as CubeSet;
  expose ZI_CapexInvType   as InvTypeSet;
}
" 서비스 바인딩 : 이름 ZUI_CAPEXCASH_O2 · 유형 OData V2 - UI · 게시 후 서비스 활성화

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래 표의 항목이 정해지지 않으면 기술 작업이 시작되어도 첫 회의에서 숫자가 맞지 않는 일이 생깁니다.

해야 할 일무엇을 정하나정하지 않으면누가
투자 유형·자산군 매핑어떤 계정과 계획 그룹이 신규·증설·교체인지 정하는 기준 표집계가 기존 설비 관리 보고서와 어긋나 첫 회의에서 막힙니다자금팀 · 설비 관리팀
집행 계획 원천계획 버전과 계획 단위(월·건)를 어디서 읽을지"계획이 왜 이 숫자냐"가 반복됩니다기획팀
계획 수량 확보 여부집행 수량(설비 대·식)을 계획에도 두는지차이를 수량 변동과 단가 변동으로 가르지 못합니다기획팀 · 설비 관리팀
선급금·설계변경 라인 식별어떤 전표 유형과 계정이 상계·증액인지실집행액에 들어가는 상계·증액이 섞입니다회계팀
지급 약정일과 지연 판정약정 지급일 대비 며칠부터 지연으로 보는지지연 지급 비중이 사람마다 달라집니다자금팀
기말 미지급 잔액 기준집행 결의는 했으나 이체 전인 금액의 집계 시점월말 잔액이 표준 자금 포지션과 어긋납니다자금팀 · 회계팀
권한 설계회사코드·은행 계정 단위 조회 범위전사 합계와 자기 몫의 차이로 남의 숫자가 드러납니다보안 · 권한 담당
서비스 활성화와 주소 교체서비스 게시 후 화면의 서비스 주소 설정을 교체검증용 데이터 상태로 운영 화면이 열립니다Basis · 개발
배치 등록에이전트를 하루 한 번 실행하는 잡 주기와 실행 주체사람이 화면을 열 때만 점검이 돕니다Basis · 자금팀
전송(TR) 순서매핑 표 → 뷰 → 권한 → 서비스 순서로 이송의존 객체가 없는 채 활성화되어 이송이 멈춥니다개발 · Basis

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

검증용 샘플 데이터(원천 라인 2,480건 → 큐브 1,862행 · 계획 1,788행)를 전수로 대사한 결과입니다. 사례로 든 숫자와 같은 데이터입니다. 의도적 예외 건은 없습니다.

대사식검사 건수차이 건수최대 차이
큐브 합계 = 원천 라인 합계(기간 9 × 측정값 7)6300원
칸 금액 = 원천 라인 합계(무작위 칸 60개 × 측정값 5)30000원
화면 칸 금액 = 드릴스루 합계(화면에서 칸 4개)400원
축 배치를 바꿔도 피벗 총합 = 큐브 총합(배치 7가지)700원
값 필터(지급 은행 2곳) 후 합계 = 선택 값 큐브 합100원
집행 계획액 + 차이 = 실적 실집행액(기간별)900원
요인 일곱 개 합 = 총차이(조회 범위 9가지)900원

운영 데이터로 갈 때

전표가 수천만 건이면 집계는 화면이나 서비스 코드가 아니라 데이터 뷰에서 해야 합니다. 조회조건의 법인과 기간을 필수 파라미터로 걸고, 큐브는 차원 조합 단위로 미리 합산해 한 번 읽는 행 수를 수백~수천 행으로 줄입니다. 열 조합 상한(36)과 행 필터 안내는 그대로 두고, 응답 시간 기준(첫 조회 수 초 안쪽)은 고객사 규모에서 확인해야 하므로 확인 필요로 남겨 둡니다.

자주 묻는 질문

숫자와 산식 · 화면과 조작 · 분석 기능 · 도입과 운영으로 묶어 26개 질문에 답합니다.

숫자와 산식

실집행액은 어떻게 계산하나요?

실집행액은 집행 결의액에 설계변경·증액 반영을 더하고 선급금 상계를 뺀 값입니다. 금액은 모두 서비스가 원천 라인에서 계산하며 화면과 해설은 읽기만 합니다. 이 샘플 범위에서는 집행 결의액 1조 6,868억원 안팎에 증액 40.83억원이 더해지고 선급금 상계 78.87억원이 빠져 1조 6,830.22억원이 됩니다.

큐브 합계와 원천 라인 합계는 어떻게 맞추나요?

기간 9개와 측정값 7개의 조합 63건을 큐브 합계와 원천 라인 합계로 대조합니다. 63건 모두 차이가 0원이고 그 결과가 검산 표(CubeCheckSet)로 서비스에 남아 있습니다. 운영에서도 같은 검산 뷰를 두고 야간에 한 번 돌려 두기를 권합니다.

축을 바꾸면 숫자가 달라지지 않나요?

달라지지 않습니다. 축을 바꾸는 동작은 서비스를 다시 부르지 않고 이미 읽은 큐브를 브라우저에서 다시 묶기만 합니다. 배치 7가지로 바꿔 본 총합이 모두 같았고, 값 필터를 걸면 선택한 값들의 큐브 합과 같아집니다.

계획 대비 차이는 어떤 요인으로 나뉘나요?

수량 변동, 단가 변동, 설계변경·증액 반영, 선급금 상계 효과, 집행월 이동, 계획 외 신규 집행, 계획 집행 미발생의 일곱 요인입니다. 라인마다 계획과 실적이 모두 있으면 앞의 네 요인으로, 한쪽에만 있으면 뒤의 세 요인으로 나뉩니다. 합계는 항상 총차이와 같고 화면이 검산 줄로 매번 보여 줍니다.

기말 미지급 잔액은 왜 기간을 합치지 않나요?

잔액은 흐름이 아니라 시점 값이라 여러 달을 더하면 같은 금액이 중복됩니다. 그래서 기간을 합칠 때는 마지막 기간의 값만 씁니다. 이 범위에서는 9월 말 191.57억원이 기말 미지급 잔액입니다.

외화나 환율 처리는 어떻게 하나요?

이 화면의 샘플은 원화 집행액만 다루므로 외화 환산이 없습니다. 해외 송금이 많은 고객사는 외화 금액·통화·환율·원화 환산 금액을 각각 열로 두고 합계는 원화 환산 금액으로 냅니다. 서로 다른 통화의 외화 금액을 그대로 더하지 않는 것이 원칙입니다.

화면과 조작

처음 열면 무엇이 보이나요?

조회 전에도 조회 조건, 차원 보관함, 행 축·열 축 보드, 빈 피벗 틀이 먼저 보입니다. 조회 버튼은 입력 칸 오른쪽 끝에 있고 Enter 로도 조회됩니다. 머리 영역은 접을 수 있고 접으면 요약 한 줄이 남습니다.

행과 열은 몇 단계까지 쓸 수 있나요?

행 축은 3단계, 열 축은 2단계까지입니다. 열 조합이 36개를 넘으면 더 추가되지 않고 범위를 줄이라는 안내가 뜹니다. 표가 너무 길어지는 경우에도 반쯤 그린 표 대신 필터나 행 축 축소를 안내합니다.

값 필터는 어떻게 동작하나요?

시간을 뺀 차원마다 값을 여러 개 고를 수 있습니다. 같은 차원 안의 값은 or, 차원끼리는 and 로 묶입니다. 값마다 이름·코드·원천 라인 수가 보이고 큐브에 있는 값만 올라옵니다.

칸을 누르면 무엇이 열리나요?

그 칸 금액을 만든 원천 라인이 열립니다. 행 경로와 열 조합이 조건이고 머리에 표의 값과 원천 합계, 일치 여부, 질의 조건이 보입니다. 기본 500행씩 페이징하며 CSV 로 내려받을 수 있습니다.

계산항목은 어떻게 만드나요?

전기되지 않는 지표를 토큰 식으로 정의해 CalcSet 에 둡니다. 예를 들어 단위당 실집행액은 실집행액을 집행 수량으로 나누고 지연 지급 비중은 지연 지급 실집행액을 전체로 나눕니다. 화면은 식을 해석하지 않고 서비스가 계산한 값을 보여 줍니다.

휴대폰이나 좁은 화면에서도 쓸 수 있나요?

좁은 화면에서는 차트가 표 아래로 내려가 쌓입니다. 표는 가로로 밀어 보고 차트는 아래에서 이어서 봅니다. 표와 차트 사이 손잡이로 맞춘 너비는 브라우저가 기억합니다.

분석 기능

변동 사유는 어디에 저장되고 어떻게 따라오나요?

사유는 조회 범위와 행 경로를 키로 서비스에 저장됩니다. 새로 고침해도 남고 다음 기간 조회에서도 같은 행 경로면 따라옵니다. CSV 와 해설 근거에도 함께 실립니다.

해설은 AI 가 숫자를 만드나요?

아닙니다. 기본은 규칙 기반 해설이고 숫자는 서비스가 계산한 값만 씁니다. 모델 연결은 서비스 안 설정 하나로 켜며 기본은 꺼져 있고, 켜도 모델은 문장만 다듬습니다. API 키는 화면·설명서·블로그 어디에도 두지 않습니다.

해설의 근거는 어떻게 확인하나요?

해설 창의 근거 표를 펼치면 문장에 쓴 숫자가 행으로 나옵니다. 이미 변동 사유가 적힌 차이는 해설에서 건너뜁니다. 표와 문장이 다르면 점검이 필요한 신호입니다.

PowerPoint 보고서는 어떻게 만들어지나요?

현재 범위의 지표와 표와 차트를 브라우저 안에서 .pptx 로 만들어 내려받습니다. 외부 라이브러리 없이 압축과 XML 을 직접 짓기 때문에 반입 심사가 필요 없습니다. 파일은 PowerPoint 와 호환되는 표준 구조입니다.

에이전트는 무엇을 하고 언제 도나요?

감시 규칙 네 개를 점검해 걸린 항목을 받을 역할의 관점으로 대기함에 올립니다. 실행은 서비스의 펑션이 맡고 하루 한 번 제한도 서버가 판정합니다. 운영에서는 배치 잡으로 매일 한 번 돌리도록 연결하며, 걸린 것이 없어도 활동 기록이 남습니다.

에이전트를 하루에 두 번 실행하면 어떻게 되나요?

두 번째 호출은 서비스가 제한으로 판정해 보고를 만들지 않고 이력에 제한 기록만 남깁니다. 화면에서만 막는 것이 아니라 서버가 막으므로 다른 경로로 불러도 같습니다. 다음 날 다시 실행할 수 있습니다.

도입과 운영

이 화면은 어떤 회사에 맞나요?

설비투자 집행 자금을 월 단위로 계획과 비교하는 제조·유통·서비스 기업에 맞습니다. 법인이 여러 개이고 거래 은행과 지급 방식이 여럿이며 설계변경·선급금 정산이 잦은 곳일수록 효과가 큽니다. 담당은 자금팀과 설비 관리팀, 재무팀입니다.

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

표준 실행은 SAP 표준 T-code 가 담당하고 이 화면은 조회와 검증 관점을 더해 확장합니다. 자금 포지션과 유동성 예측, 개별 항목 조회, 지급 실행 같은 표준 화면은 그대로 쓰고, 이 화면은 그 숫자를 같은 축으로 모아 차이의 원인까지 봅니다. 기존 리포트를 없앨 필요는 없습니다.

운영 데이터로 연결하려면 어떤 절차와 기간이 필요한가요?

매핑 표와 계획 원천을 정한 뒤 CDS 뷰를 이송하고 서비스를 활성화해 화면의 서비스 주소를 교체합니다. 개발보다 설비 구분과 계획 그룹을 정하는 합의가 더 오래 걸립니다. 소요는 고객사의 합의 속도에 달려 있어 일정은 확인 필요로 두는 것이 정직합니다.

권한과 보안은 어떻게 설계하나요?

회사코드 권한 객체를 쿼리와 큐브 모두에 겁니다. 드릴스루에만 걸면 전사 합계와의 차이로 남의 숫자가 드러납니다. 화면은 표준 컨트롤과 직접 그린 SVG 만 쓰고 모델 연결은 기본 꺼져 있어 외부 전송이 없습니다.

원천 라인이 수천만 건이면 성능은 어떤가요?

집계는 화면이 아니라 서비스(데이터 뷰)에서 해야 합니다. 조회조건은 법인과 기간을 필수로 걸고 큐브는 차원 조합 단위로 미리 합산해 수백~수천 행으로 줄입니다. 화면이 큐브를 한 번 읽어 브라우저에서 다시 묶는 구조라 큐브 행 수가 상한을 넘지 않도록 파라미터와 필터를 둡니다.

투자 유형이나 계정체계가 바뀌면 어떻게 하나요?

매핑 표에 행을 추가하거나 유효 기간을 바꾸면 되고 뷰는 고치지 않습니다. 새 차원을 더하려면 큐브와 쿼리에 필드를 추가하고 이송해야 합니다. 그래서 쓸 차원 범위를 도입 초기에 합의해 두는 것이 좋습니다.

이 화면의 판정은 최종 결론인가요?

아닙니다. 이 화면은 분류·집계·대사를 돕는 점검 도구이며 "점검 필요"나 "확인 필요"로 표시할 뿐 원인을 단정하지 않습니다. 최종 판단은 회사와 감사인이 하고, 세무 신고는 회사와 세무 대리인이 합니다. 현금흐름표의 투자활동 구분 정리는 IAS 7 현금흐름표(K-IFRS 제1007호)에 따라 회계팀이 판단합니다.

적용 시기와 범위는 어떻게 되나요?

이 글의 화면은 가상 법인 3곳과 가상 은행 4곳의 2026년 1월부터 9월까지 검증용 샘플 데이터로 만든 것입니다. 실제 고객사의 거래처나 계좌, 금액은 쓰지 않았습니다. 기준 시점과 대상 법인은 도입할 때 고객사 환경에 맞춰 정합니다.