수입 신용장 사용·금융비용 다차원 분석 — 개설·선적 사용·잔액·이자를 한 큐브로 보고 예정 대비 차이를 여섯 요인으로 가르다
큐브 집계 · 축 끌어다 놓기 · 칸에서 신용장 라인까지 드릴스루 · 예정 대비 차이와 여섯 요인분해 · 변동 사유 · AI 분석 · AI 에이전트 — 소개 영상과 실제 화면 37종, 그리고 CDS 코드까지
소개 영상주요 기능 순서대로 · 자막 포함
도입 포인트 — 이 앱을 사용해야 하는 이유
수입 신용장(L/C)을 쓰는 회사에는 두 가지 질문이 늘 남습니다. 개설해 둔 한도 가운데 실제로 선적에 쓴 것은 얼마이고 놀고 있는 것은 얼마인가, 그리고 그 사이에 은행에 낸 이자와 수수료는 예정보다 얼마나 늘었고 왜 늘었는가입니다. 개설 금액, 선적 사용, 미사용 잔액, 유산스 이자, 개설·인수 수수료는 모두 같은 신용장 라인에서 나오지만 보는 사람마다 기준 축이 다릅니다. 구매는 공급사로, 자금은 은행과 만기 구간으로, 물류는 인코텀즈와 선적 이행으로 읽습니다.
지금 방식은 대개 은행 통지서와 표준 화면의 전표를 건별로 열어 엑셀에 옮기고, 축마다 시트를 따로 만들어 합계를 맞추며, 예정 대비 차이는 별도 파일에서 손으로 분해하는 것입니다. 시트가 늘수록 같은 이름의 비율이 서로 다른 값으로 나오고, 차이의 원인을 설명하는 데 회의 시간이 쓰입니다.
핵심 포인트 여덟 가지
| 핵심 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 축을 바꿔도 합계가 갈라지지 않는 피벗 | 공급사 · L/C 유형 · 개설 은행 · 보증금 · 만기 구간 · 통화 등 11개 차원을 끌어다 놓아 행 3단계 · 열 2단계로 봅니다. 모든 축이 같은 큐브에서 나와 총합이 어긋날 자리가 없습니다. | 축마다 엑셀 시트를 따로 만들고, 합계가 다르면 시트를 맞추는 일부터 합니다. |
| ② 칸에서 신용장 라인까지 한 번에 | 숫자를 누르면 그 금액을 만든 신용장 품목 라인이 열리고, 칸의 값과 라인 합이 같은지 그 자리에서 보입니다. | 리포트를 닫고 표준 화면에서 전표를 다시 찾아 조건을 손으로 맞춥니다. |
| ③ 금융비용률을 계산항목으로 | 금융비용률 · 사용률 · 이자 부담률 · 미사용 잔액 비율이 칸마다 계산됩니다. 식은 서비스가 정하고 화면은 같은 식을 어느 축에서나 적용합니다. | 엑셀 수식이 시트마다 달라 같은 이름의 비율이 서로 다른 값으로 나옵니다. |
| ④ 예정 대비 차이를 여섯 요인으로 | 금융비용의 예정 대비 차이를 사용 금액 · 적용 환율 · 유산스 기간 · 이자율 · 수수료 · 미계획 개설로 가르고, 요인 합이 총차이와 같은지 검산 줄이 매번 보여 줍니다. | 차이 원인을 엑셀로 따로 분해하고, 합이 맞는지 다시 손으로 맞춥니다. |
| ⑤ 차이가 난 행에 사유를 남긴다 | 사유가 조회 범위와 행에 묶여 저장되어, 축을 바꿔도 다음 기간에도 같은 행에서 다시 보입니다. | 같은 질문을 기간마다 다시 하고, 지난번 답은 메일함에서 찾습니다. |
| ⑥ 숫자는 서비스가 계산하는 AI 분석 | 금액과 비율은 서비스가 계산한 값만 쓰고, 해설은 그 값을 문장으로 옮깁니다. 기본은 규칙 기반 해설이며 외부 모델 연결은 꺼져 있습니다. 같은 범위로 PPTX 보고서도 만듭니다. | AI가 만든 숫자를 보고서에 써도 되는지부터 따져야 합니다. |
| ⑦ 화면을 열지 않아도 도는 AI 에이전트 | 감시 규칙 5개에 임계값과 받을 역할이 붙어 있고, 걸린 항목은 역할별 대기함에 올라옵니다. 실행은 하루 한 번으로 제한되고 실행 기록이 남습니다. | 숫자가 나빠진 날 아무도 화면을 열지 않으면 그대로 지나갑니다. |
| ⑧ 표준 T-code와 이어지는 점검 | 구매오더 조회(ME23N) · 송장 입력(MIRO) · 공급업체 개별 항목(FBL1N) · 전표 조회(FB03) 등과 같은 필드를 쓰므로, 이 화면에서 찾은 차이를 표준 화면에서 원천으로 확인합니다. | 표준 화면과 엑셀 사이를 오가며 숫자를 눈으로 대조합니다. |
사례로 보는 효과
검증용 샘플 데이터(가상 공급사 12곳 · 가상 은행 4곳 · 개설월 2026.04~2026.09 · 가정 환율과 이자율)에서 예정 금융비용은 45.37억원, 실적은 50.34억원으로 +4.97억원(+11.0%) 차이가 발생했습니다. 요인분해는 아래처럼 나뉩니다.
| 요인 | 금액(원) | 억원 환산 | 읽는 법 |
|---|---|---|---|
| 사용 금액 | −314,538,448 | −3.15 | 선적에 쓰지 않은 개설분은 예정 이자가 빠져 줄어드는 방향으로 나옵니다. |
| 적용 환율 | +97,449,164 | +0.97 | 예산 환율과 적용일 환율의 차이입니다. |
| 유산스 기간 | −7,338,962 | −0.07 | 예정 일수와 실제 일수의 차이입니다. |
| 이자율 | +209,029,649 | +2.09 | 예정 연 이자율과 은행이 적용한 이자율의 차이입니다. |
| 수수료 | +188,967,814 | +1.89 | 예정 수수료와 실제 개설·인수 수수료의 차이입니다. |
| 미계획 개설 | +323,715,096 | +3.24 | 계획 외 개설 226라인에서 차이가 발생했고 가장 큰 몫입니다. |
| 합계(총차이) | +497,284,313 | +4.97 | 예정 45.37억원 → 실적 50.34억원. 검산: 요인 합 − 총차이 = 0원 |
가장 큰 몫은 미계획 개설(+3.24억원)이고, 그 반대편에 사용 금액(−3.15억원)이 있어 둘이 서로 상쇄합니다. 이자율과 유산스 기간 요인은 합쳐 +2.02억원으로, 은행 약정 금리와 만기 조건을 점검해야 할 신호입니다. 순서를 바꾸면 요인별 금액은 달라질 수 있지만 합은 항상 총차이와 같습니다.
규모로 보면 개설 금액 5,343.20억원 중 4,528.69억원(84.8%)이 선적에 쓰였고 814.50억원(15.2%)이 미사용 잔액으로 남았습니다. 금융비용 50.34억원은 유산스 이자 34.80억원과 개설·인수 수수료 15.54억원의 합이며, 사용 금액 대비 금융비용률은 1.11%입니다.
도입하면 달라지는 것
- 마감 전 준비 — 공급사별 · 은행별 금융비용, 라인 확인, 요인분해가 한 화면에서 나와 엑셀 취합과 캡처가 줄어듭니다.
- 회의의 주제 — "어느 숫자가 맞는가" 대신 "어느 요인을 점검할 것인가"를 이야기합니다.
- 다음 기간으로 이어지는 기록 — 변동 사유와 레이아웃이 남아 같은 설명을 되풀이하지 않습니다.
- 놓치지 않는 점검 — 화면을 열지 않아도 감시 규칙에 걸린 항목이 역할별 대기함에 올라옵니다.
- 역할별 시각 — CFO · 구매 책임자 · 물류 책임자 · 자금 책임자가 같은 큐브를 자기 기준 축으로 읽습니다.
이런 회사에 맞습니다
원재료나 설비 부품을 해외에서 수입하며 여러 은행에 신용장을 개설하고, 유산스(기한부) 결제로 이자와 수수료를 부담하는 제조·유통 회사에 맞습니다. 특히 개설 한도 대비 사용률과 미사용 잔액을 은행별 · 공급사별로 따로 관리해야 하거나, 금융비용 예정 대비 차이를 매월 설명해야 하는 자금팀 · 회계팀에 쓰임새가 큽니다.
실행 화면
사용 방법
- 조회조건을 넣습니다. 회사코드(필수)와 시작 · 종료 개설월을 고릅니다. 차원 값을 비워 두면 전체 범위입니다.
- 조회 버튼을 누르거나 Enter를 칩니다. 큐브가 한 번 읽혀 오고 차트와 피벗이 함께 그려집니다.
- 임원 요약에서 전체 모양을 확인합니다. 역할(CFO · 구매 · 물류 · 자금)을 바꾸면 표시 항목과 행 축이 그 역할에 맞게 바뀝니다.
- 탭과 축을 옮깁니다. 차원 칩을 끌어 행 축(최대 3) · 열 축(최대 2)에 놓으면 서버를 다시 부르지 않고 바로 다시 묶입니다.
- 칸이나 행을 눌러 상세를 엽니다. 칸은 신용장 품목 라인으로, 차이 모드의 행은 변동 사유 입력으로 이어집니다.
- 내보냅니다. 피벗과 라인은 CSV로, 분석 결과는 AI 분석 창의 PPTX 보고서로 내려받습니다.
무엇으로 만들었나
화면은 UI5 표준 컨트롤 위에 얹었고, 데이터는 OData V2 모델이 매니페스트에 선언된 서비스를 상대 경로로 읽어 옵니다. 서비스는 읽기 모델(큐브 · 예정 · 계산항목 · 차원 값 · 신용장 품목 라인)과 쓰기 모델(변동 사유 · 레이아웃 · 감시 규칙)을 함께 제공합니다.
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 컨트롤 | sap.m 페이지 · 패널 · 대화 상자, sap.ui.table 트리 테이블(피벗), 직접 그린 SVG 차트(막대 · 요인 워터폴) | 표준 컨트롤을 쓰면 접근성과 테마를 그대로 따릅니다. |
| 집계 로직(브라우저) | 큐브 재집계 모듈이 칸 단위로 묶은 값을 행 축 · 열 축 배치에 맞춰 다시 합산합니다. | 축을 바꿔도 서버를 다시 부르지 않으려고. |
| 판정 · 계산(서비스) | 요인분해, 계산항목의 식, 규칙 기반 해설, 에이전트 규칙 판정과 실행 한도는 서비스가 계산합니다. | 숫자의 출처를 서비스 한 곳으로 모으려고. |
| 데이터 모델(OData V2) | 엔티티셋 16개와 펑션 3개. 쓰기는 변동 사유 · 레이아웃 · 감시 규칙에 한정합니다. | 읽기 전용 집합에 실수로 쓰지 않도록. |
| 보고서 생성(브라우저) | PPTX 보고서는 브라우저 안에서 파일을 지어 내려받습니다. 서버에 파일을 남기지 않습니다. | 내려받은 파일이 곧 그 시점의 기록이 되도록. |
| 테마 | sap_horizon | SAP 표준 테마의 색 · 간격 · 접근성 규칙을 그대로 따릅니다. |
SAP 표준 기능을 그대로 이어받은 부분
신용장 품목 라인은 구매오더 조건과 개설 · 수수료 · 이자 전표의 같은 필드에서 나옵니다. 이 화면은 표준 문서를 대체하지 않고, 같은 필드를 여러 축으로 묶어 비교하고 차이를 요인으로 나누는 관점을 더합니다.
처음 열었을 때 — 조회 전 틀에서 피벗과 차트까지
화면 맨 위에는 조회 조건, 그 아래 분석 축 보드, 임원 요약, 차트와 피벗이 세로로 쌓여 있습니다. 조회를 누르기 전에는 틀만 보이고, 조회하면 한 번에 채워집니다.

조회 조건에는 회사코드 1000과 개설월 2026.04~2026.09가 기본값으로 들어 있고, 차원 값은 "전체"입니다. 조회 버튼은 조건 영역 안 오른쪽 끝에 있습니다.

금융비용이 예정과 함께 표시되고 차이가 바로 보입니다. 지표는 선택한 역할에 맞춰 바뀝니다.

행을 펼치면 아래 단계가 열리고, 합계 열과 행은 어느 배치에서도 같은 총합을 가집니다.

행 축은 최대 3개 · 열 축은 최대 2개까지 받습니다. 칩은 끌어다 놓거나 화살표 버튼으로 옮깁니다.

이때 서버로 나가는 요청은 0건이었고, 총합은 옮기기 전과 같았습니다.

피벗을 오래 읽을 때 화면을 넓게 쓰도록 조건 · 축 영역을 접을 수 있습니다.
경영 요약 — 같은 큐브를 역할 네 가지로 읽는다
임원 요약은 역할을 바꾸면 기준 차원과 표시 항목이 함께 바뀝니다. 같은 6개월 · 같은 합계 위에서 CFO는 개설 은행, 구매 책임자는 공급사, 물류 책임자는 인코텀즈, 자금 책임자는 만기 구간을 기준으로 봅니다.

CFO 역할은 금융비용 · 금융비용률 · 사용률 · 이자 부담률을 개설 은행별로 읽고, 예정 초과 상위 은행을 함께 보여 줍니다.

구매 책임자 역할은 공급사별 개설 금액과 금융비용률을 놓고 예정 초과 상위 공급사를 봅니다.

물류 책임자 역할은 선적이 이행되지 않은 개설 잔액과 미사용 비율을 인코텀즈별로 봅니다.

자금 책임자 역할은 유산스 이자와 이자 부담률을 만기 구간별로 놓고 긴 만기 구간의 부담을 봅니다.
축 전환과 범위 — 끌어다 놓아도 총합은 그대로
열 축을 두 단계로 쌓거나 차원 값을 골라 범위를 좁혀도 서버를 다시 부르지 않습니다. 어떤 배치든 총합은 같아야 하며, 이 글의 검증에서도 축 배치를 바꿔 총합과 요청 건수를 확인했습니다.

열 축에 두 차원을 함께 놓으면 헤더가 조합으로 늘어납니다. 칸이 많아지는 만큼 열 폭은 좁아지고 가로 스크롤이 생깁니다.

개설월 · 분기 · 공급사 · L/C 유형 · 개설 은행 · 보증금 · 만기 구간 · 통화 · 인코텀즈 · 자재그룹 · 자재의 값을 고르면 선택한 값만 필터로 전달됩니다.

조회 조건 줄에 현재 범위가 요약됩니다. 좁힌 뒤 합계는 선택한 값들의 큐브 합과 같습니다.

차트와 피벗은 같은 값을 그리며, 폭 손잡이로 차트 영역의 너비를 조절할 수 있습니다.

좁은 화면에서는 위아래로 쌓입니다.
칸에서 신용장 라인까지 — 드릴스루
피벗의 칸을 누르면 그 금액을 만든 신용장 품목 라인이 열립니다. 라인은 한 번에 정해진 단위(기본 500건)로 읽고, 모두 읽으면 칸의 값과 라인의 합이 같은지 화면이 알려 줍니다.

칸의 값과 읽은 라인의 합이 같으면 "칸의 값과 라인 합이 같습니다"가 초록으로 표시됩니다. 검증에서 칸 4개 모두 일치했습니다.

라인이 읽는 단위보다 많으면 일부만 먼저 읽고 "아직 일부만 읽음"으로 표시하며, 더 읽기와 모두 읽기로 이어서 읽습니다.

검산 패널은 측정값 6개의 큐브 합계와 라인 합계를 비교하고, 아래에는 개설월별 라인 수와 금액이 놓입니다.
계산항목 — 금융비용률과 미사용 잔액 비율
계산항목은 서비스가 식을 내려 주고 화면이 칸마다 같은 식을 적용합니다. 금융비용률(%)은 금융비용을 선적 사용 금액으로, 사용률(%)은 선적 사용을 개설 금액으로, 이자 부담률(%)은 유산스 이자를 선적 사용 금액으로, 미사용 잔액 비율(%)은 잔액을 개설 금액으로 나눕니다.

값이 클수록 사용 금액 대비 부담이 큰 칸이며 점검 대상을 고르는 기준으로 씁니다.

합계 열은 구성 요소의 합과 같고, 계산항목과 측정값이 같은 값으로 대사됩니다.
예정 대비 차이 — 같은 표가 요인 분해 보고서가 된다
비교를 "예정 대비 차이"로 바꾸면 칸마다 예정 · 실적 · 차이 · 차이율이 붙고, 차트는 막대에서 요인 워터폴로 바뀝니다. 금액과 비율 임계를 둘 다 넘는 칸만 색이 칠해집니다.

붉은색은 비용을 늘린 칸, 초록은 줄인 칸입니다. 임계는 금액과 비율 둘 다 넘어야 색이 칠해집니다.

사유는 500자까지 적고 저장하며, 조회 범위와 행 경로에 묶여 보존됩니다.

사유가 적힌 행은 AI 분석의 점검 대상에서 빠집니다.

분해 범위를 좁히면 그 범위의 요인만 보이고, 요인 합 − 총차이 = 0원 검산 줄이 매번 표시됩니다.

미계획 개설과 사용 금액 막대가 가장 크고 서로 반대 방향입니다.

기준 대비 차이를 보는 동안에도 조회 조건과 축 보드는 그대로 위에 남습니다.
AI 분석과 보고서
AI 분석은 지금 조회한 범위를 읽어 요약과 점검 대상을 문장으로 써 줍니다. 기본은 외부 AI 서비스를 부르지 않는 규칙 기반 해설이며, 숫자는 서비스가 계산한 값만 그대로 문장에 옮깁니다.

요약은 신용장 1,660건 · 원천 라인 3,482건의 금융비용 50.34억원이 예정 45.37억원 대비 +4.97억원(+11.0%) 차이가 난다고 쓰고, 점검 대상마다 사유 확인이 필요하다고 끝맺습니다.

축 · 값 · 라인 수 · 예정 · 실적 · 차이 · 주된 요인이 상위 항목별로 나열됩니다.

버튼을 누르면 보고서 파일을 만들었다는 메시지가 뜨고 6장짜리 파일이 내려받아집니다. 파일은 서버에 남지 않습니다.
AI 에이전트 — 규칙이 곧 점검 대상
에이전트는 감시 규칙 5개를 정해 두고 하루 한 번 점검합니다. 규칙마다 임계값과 받을 역할이 붙어 있고, 걸린 항목은 그 역할의 대기함으로 올라옵니다. 임계값과 사용 여부는 화면에서 고칠 수 있습니다.

공급사 금융비용률 상한(1.4%) · 은행별 이자율·기간 요인(4천만원) · 선적 미이행 잔액(3억원) · 금융비용 예정 대비 초과(20%) · 91일 이상 유산스 이자(6천만원)입니다.

지금 실행하기를 누르면 규칙을 판정하고 걸린 항목을 보고로 올립니다. 검증에서 처음 실행은 4건의 보고를 올렸습니다.

같은 날 두 번째 실행은 LIMITED로 판정되어 새 보고 없이 기록만 남습니다.
레이아웃 저장과 복원
축 · 조회 조건 · 표시 항목 · 표시 행 수 · 접힘 상태를 이름을 붙여 저장하고 불러옵니다. 기본 레이아웃으로 지정해 두고 "열 때 자동 조회"를 켜면, 열자마자 조회된 채로 시작합니다.

저장 전에는 저장된 레이아웃이 없다는 안내가 보입니다.

별표는 기본 지정, 화살표는 적용, 휴지통은 삭제입니다.

열 때 자동 조회 덕에 조회 버튼을 누르지 않아도 채워진 채 시작합니다.
좁은 화면과 한계
휴대폰 폭에서는 열 폭과 패널이 접히고 대화 상자는 화면 전체로 열립니다. 큐브가 클 때를 위한 상한도 있어, 상한을 넘으면 화면이 안내 메시지로 범위를 줄이라고 알려 줍니다.

조건 · 축 · 임원 요약이 접힌 줄로 보이고, 값 열은 가로 스크롤 안에서 움직입니다.

"열이 84개라 앞의 36개만 보여 줍니다" 안내가 뜹니다. 열은 최대 36개, 행 노드는 최대 1,500개입니다.
화면 뒤에서 일어나는 일
한 번의 조회에서 서비스는 큐브(신용장 라인 단위 집계)와 예정 · 계산항목 · 차원 값을 돌려주고, 화면은 이를 칸 단위로 묶어 둔 뒤 축 배치에 맞게 다시 합산합니다.
- 읽기 — 회사코드 · 개설월 범위 · 차원 값 필터로 큐브와 예정을 읽습니다. 큐브는 차원 조합 × 측정값 6개의 긴 형태(17,454행)이고, 예정은 16,530행입니다.
- 묶기 — 긴 형태를 차원 조합 2,909개 칸으로 묶습니다. 이후 축을 바꾸는 일은 이 칸을 다시 합산하는 일입니다.
- 계산항목 적용 — 서비스가 준 식을 칸마다 적용해 비율과 합계를 만듭니다.
- 그리기 — 행 축 노드를 트리로 만들고 열 축을 헤더로 펼친 뒤 차트를 같은 값으로 그립니다.
- 검산 — 큐브 합계와 라인 합계, 요인 합과 총차이를 화면 안에서 비교해 보여 줍니다.
축 전환 — 브라우저 재집계
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 행 축이 3개를 넘게 놓이려 함 | "행 축은 3개까지입니다" 안내, 배치는 바뀌지 않음 | 행 축에서 하나를 빼고 놓습니다. |
| 열 축이 2개를 넘게 놓이려 함 | "열 축은 2개까지입니다" 안내 | 열 축에서 하나를 빼고 놓습니다. |
| 행 축을 모두 비우려 함 | "행 축은 비울 수 없습니다" 안내 | 행 축에 차원을 하나 이상 남깁니다. |
| 열이 36개를 넘음 | 앞의 36개만 표시하고 안내 줄 표시 | 열 축을 줄이거나 차원 값을 골라 범위를 좁힙니다. |
| 행 노드가 1,500개를 넘음 | 앞의 1,500개까지만 표시하고 안내 줄 표시 | 차원 값을 골라 범위를 줄입니다. |
| 축 배치만 바뀜 | 서버 요청 없이 즉시 재집계, 총합 동일 | 필요하면 행·열 바꾸기나 기본 축 버튼을 씁니다. |
요인분해 — 순차 대입과 검산
요인분해는 예정(t0)에서 시작해 사용 금액 → 적용 환율 → 유산스 기간 → 이자율 → 수수료 → 미계획 개설 순으로 실적 값을 하나씩 대입합니다. 각 단계에서 같은 금융비용 식을 다시 계산하므로 단계 차이의 합이 곧 총차이입니다.
| 단계 | 대입하는 값 | 이 단계에서 나오는 요인 | 전체 범위 값(백만원) |
|---|---|---|---|
| 0 | 예정 조건 | 시작점 | 4,536.8 |
| 1 | 실적 선적 사용 외화 | 사용 금액 | −314.5 |
| 2 | 적용일 환율 | 적용 환율 | +97.4 |
| 3 | 실제 유산스 일수 | 유산스 기간 | −7.3 |
| 4 | 은행 적용 이자율 | 이자율 | +209.0 |
| 5 | 실제 개설·인수 수수료 | 수수료 | +189.0 |
| 6 | 계획 외 개설 라인 | 미계획 개설 | +323.7 |
| 끝 | 실적 | 합 = 총차이 | 5,034.1 (+497.3) |
드릴스루 — 칸과 라인 대사
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 라인을 모두 읽고 합이 칸의 값과 같음 | "칸의 값과 라인 합이 같습니다" 초록 표시 | 그대로 확인을 마칩니다. |
| 라인을 모두 읽었는데 합이 다름 | "칸의 값과 라인 합이 다릅니다" 표시 | 차이 발생으로 보고 원천 확인이 필요합니다. 표준 화면에서 같은 전표를 대조합니다. |
| 라인이 읽는 단위보다 많음 | "n / m건 읽음" · "아직 일부만 읽음" 표시 | 더 읽기 또는 모두 읽기를 눌러 이어서 읽습니다. |
감시 규칙 — 판정과 대기함
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 규칙의 임계값을 넘는 항목이 있음 | 해당 역할의 대기함에 보고가 올라옴(탭 배지 숫자 증가) | 대기함에서 보고를 열어 점검이 필요한 항목에 사유를 남깁니다. |
| 규칙은 사용 해제됨 | 그 규칙은 판정에서 빠짐 | 필요하면 사용 스위치를 켜고 저장합니다. |
| 오늘 이미 실행함 | LIMITED로 기록, 새 보고 없음 | 내일 다시 실행합니다. |
| 임계값이 숫자가 아님 | "임계는 0 이상의 숫자여야 합니다" 안내 | 0 이상의 숫자로 고쳐 저장합니다. |
조회조건
| 필드 | 필수 | 기본값 | 전달 방식 |
|---|---|---|---|
| 회사코드 | 필수 | 1000 | 필터(같음) |
| 시작 기간 · 종료 기간 | - | 2026.04 · 2026.09 | 필터(범위). 시작이 종료보다 늦으면 안내 메시지 |
| 차원 값 | - | 전체(비움) | 선택한 차원 값을 필터로 전달. 비우면 전체 |
| 표시 항목 | - | 금융비용 | 브라우저에서 선택한 측정값을 읽음(서버 재조회 없음) |
| 금액 단위 | - | 백만원 | 표시만 바꿈. 원 · 천원 · 백만원 · 억원 |
| 비교 | - | 실적만 | 예정 대비 차이로 바꾸면 예정 · 차이 · 차이율 열이 붙음 |
| 단계 보기 | - | 끔 | 켜면 앞 열 대비 증감으로 표시 |
| 역할 | - | CFO | 임원 요약의 기준 차원과 표시 항목을 바꿈 |
| 표시 행 수 | - | 14 | 피벗 한 화면에 그리는 행 수 |
| 원천 라인 읽는 단위 | - | 500 | 드릴스루에서 한 번에 읽는 라인 수 |
결과 컬럼
| 컬럼 · 측정값 | 의미 | 산출식 |
|---|---|---|
| 개설 원화 금액 | 신용장으로 개설한 금액 | 라인 합계(5,343.20억원) |
| 선적 사용 원화 금액 | 선적 서류 인수로 쓴 금액 | 라인 합계(4,528.69억원) |
| 미사용 잔액 | 개설했으나 쓰지 않은 금액 | 개설 − 사용(814.50억원) |
| 유산스 이자 | 사용 금액에 붙는 기간 이자 | 사용 외화 × 환율 × 이자율 × 일수 ÷ 360(34.80억원) |
| 개설·인수 수수료 | 은행에 내는 수수료 | 라인 합계(15.54억원) |
| 금융비용 | 이자와 수수료의 합 | 이자 + 수수료(50.34억원) |
| 금융비용률(%) | 사용 금액 대비 금융비용 | 금융비용 ÷ 사용 × 100(1.11%) |
| 사용률(%) | 개설 대비 사용 비율 | 사용 ÷ 개설 × 100(84.76%) |
| 이자 부담률(%) | 사용 금액 대비 이자 | 이자 ÷ 사용 × 100(0.77%) |
| 미사용 잔액 비율(%) | 개설 대비 잔액 비율 | 잔액 ÷ 개설 × 100(15.24%) |
| 예정 · 차이 · 차이율 · 사유 | 차이 모드에서만 붙는 열 | 차이 = 실적 − 예정, 차이율 = 차이 ÷ 예정 |
좁은 화면에서 달라지는 것
- 행 이름 열이 좁아지고 값 열은 그대로 읽히도록 가로 스크롤 안에서 움직입니다.
- 차원 값 선택 같은 대화 상자가 화면 전체로 열립니다.
- 차트와 피벗이 가로로 나란히 놓이지 않고 위아래로 쌓입니다.
- 임원 요약 지표는 줄바꿈되어 가로 넘침이 생기지 않습니다.
파일 구성
앱 폴더 ├─ Component.js · manifest.json · index.html 앱 진입, 모델 선언(서비스 상대 경로) ├─ view/Main.view.xml 화면 한 장(조회 조건 · 축 보드 · 임원 요약 · 차트와 피벗) │ └─ fragment/ AI 분석 · 에이전트 · 레이아웃 · 변동 사유 · 라인 보기 대화 상자 ├─ controller/ Main 컨트롤러 · 기본 컨트롤러 ├─ model/ 큐브 재집계 · SVG 차트 · 서식 · 레이아웃 직렬화 · PPTX 보고서 · 오류 처리 ├─ odata/ 서비스 정의 · 서비스 로직 · 샘플 데이터 ├─ i18n/ 화면 문구(한국어) └─ css/ 화면 보조 스타일(sap_horizon 의미 색 사용)
SAP 표준 기능 확장 포인트
표준 실행은 SAP 표준 T-code가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 신용장을 개설하고 전표를 만드는 일, 법정 · 감사 · 세무 신고에 쓰는 숫자를 확정하는 일은 표준 화면에 그대로 둡니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | 표준 화면으로 충분한 것 | 이 앱이 더하는 관점 |
|---|---|---|
| 구매오더 조건 확인 | 구매오더 조회(ME23N)에서 건별로 열람 | 예정 조건을 읽어 실적과 같은 축으로 비교 |
| 송장·선적 인수 확인 | 송장 입력(MIRO) | 선적 사용 금액을 개설 금액과 한 행에 놓고 잔액 계산 |
| 공급사 한 곳의 미결 확인 | 공급업체 개별 항목(FBL1N) | 공급사 · 은행 · 만기를 한 표의 축으로 묶어 비교 |
| 전표 한 건의 내용 확인 | 전표 조회(FB03)에서 헤더와 라인 확인 | 칸을 누르면 그 금액을 만든 라인들이 합계와 함께 열림 |
| 만기 결제 실행 | 자동 지급 프로그램(F110) | 실행은 하지 않고 이자와 수수료 부담을 분석 |
| 기말 외화 평가 | 외화 평가(FAGL_FCV) | 금융비용 중심이므로 평가 손익과 겹치지 않음 |
| 차이를 요인으로 나누기 | 표준 T-code 범위 밖(보통 엑셀로 작성) | 여섯 요인으로 가르고 합이 총차이와 같은지 검산 |
T-code 별 연계 지점
| T-code | 이름 | 연계 |
|---|---|---|
| ME23N | 구매오더 조회 | 같은 데이터 구매오더 품목의 수량 · 단가 · 통화 · 인코텀즈. 대사 지점 예정 라인 합계가 구매오더 조건과 맞는지 봅니다. |
| MIRO | 송장 입력 | 같은 데이터 선적 서류 인수 시점의 외화 금액. 대사 지점 선적 사용 금액이 송장 입력 당시 값과 같은지 봅니다. |
| FBL1N | 공급업체 개별 항목 | 같은 데이터 공급사 계정의 미결·청산 문서. 대사 지점 공급사별 만기 금액을 이 화면의 사용 금액과 견줍니다. |
| FB03 | 전표 조회 | 같은 데이터 개설·수수료·이자 전표의 라인. 대사 지점 라인의 이자와 수수료가 전표와 같은지 봅니다. |
| F110 | 자동 지급 프로그램 | 같은 데이터 만기 결제 실행 결과. 대사 지점 지급 건수와 이 화면의 선적 사용 건수를 비교합니다. |
| FAGL_FCV | 외화 평가 | 같은 데이터 보고기간 말 미결제 외화 채무 평가. 대사 지점 이 화면의 금융비용과 평가 차이가 겹치지 않는지 확인 필요입니다. |
| MB51 | 자재 문서 목록 | 같은 데이터 입고 자재 문서의 수량 · 일자. 대사 지점 입고 수량과 선적 사용을 맞춥니다. |
기존 리포트를 없애야 하나요? 아니요. 운영 전환 뒤에도 표준 T-code와 기존 리포트는 법정 · 감사 · 세무 신고 대응과 문서 단위 확인에 그대로 둡니다.
기준서 요구사항과 화면의 대응 — K-IFRS 제1109호 금융상품 · 제1023호 차입원가
기준서의 요구사항은 명칭 수준으로만 적습니다. 이 화면은 분류 · 집계 · 대사를 돕는 조회 · 점검 도구이며, 요구사항을 어떻게 적용하는지의 판단은 회사와 감사인이 합니다. 시행일과 경과규정은 이 글에서 확인하지 않았으므로 확인 필요입니다.
| 기준서 | 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| K-IFRS 제1109호 금융상품 | 금융부채 관련 이자비용의 인식 | 유산스 이자 측정값, 이자율 · 유산스 기간 요인 | 이자 전표 | 유효이자율법 적용 여부는 회사 정책 — 확인 필요 |
| K-IFRS 제1109호 금융상품 | 거래원가(개설·인수 수수료)의 처리 | 수수료 측정값, 수수료 요인 | 수수료 전표 | 비용 처리와 가산 구분은 확인 필요 |
| K-IFRS 제1023호 차입원가 | 자본화 대상 차입원가 여부 | 이 화면의 범위 밖(비용 규모만 제시) | 자산 취득 정보 | 적격자산 판단은 회사 — 확인 필요 |
S/4HANA 분석 스택과의 자리
S/4HANA의 분석은 CDS 큐브와 분석 쿼리를 중심으로, 그 위에 Fiori 분석 앱과 Analysis for Office 같은 도구를 얹는 구조입니다. 이 화면이 읽는 데이터도 같은 층(큐브와 쿼리)에서 나오도록 구성했으므로, 같은 쿼리를 다른 분석 도구에서 읽어도 숫자가 갈라지지 않습니다.
확장 포인트 — 운영에서 실제로 손대는 자리
| 자리 | 무엇을 바꾸나 | 손대는 사람 | 주의 |
|---|---|---|---|
| 기준 매핑 테이블 | 만기 구간 경계, 보증금 구분 코드, L/C 유형 코드의 이름 | 현업 · 자금팀 | 변경 이력과 이송 규칙을 정해 둡니다. |
| 이자 산정 기준 | 일수 기준(360일 등)과 이자율을 읽는 원천 | 회계팀 · 자금팀 | 은행 통지서의 이자와 대사합니다. |
| 추가 차원(확장 필드) | 프로젝트 · 사업부 같은 확장 필드를 차원으로 추가 | IT | 큐브와 쿼리, 서비스의 차원 목록이 함께 늘어납니다. |
| 계산항목 식 | 금융비용률 외에 회사 고유 비율 추가 | 자금팀 · IT | 식은 서비스가 정하므로 화면 수정은 필요 없습니다. |
| 감시 규칙 | 임계값 · 받을 역할 · 규칙 추가 | 자금팀 | 규칙을 늘려도 하루 한 번 실행 한도는 그대로입니다. |
| 권한 | 회사코드 · 은행 단위 접근 제어 | 보안 · 권한 담당 | 집계 단계에 걸어야 합계로 새지 않습니다. |
| BAdI · 사용자 출구 | 신용장 번호 등 회사 고유 항목을 전표에 남기는 경우 그 값을 큐브로 전달 | IT | 표준 필드로 충분한지 먼저 확인합니다. |
CDS 구성
아래는 운영 데이터로 갈 때의 구성 스케치입니다. 이름은 기능을 뜻하는 영문으로 짓고, 기준 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순서로 나눕니다. 실제 조인 조건과 필드는 시스템 구성에 맞춰 확인 필요입니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | ZLCUSG_MAP | 만기 구간 · 보증금 구분 코드를 분석 축 값으로 바꾸는 매핑 | 구간 경계를 코드 수정 없이 현업이 유지하려고 |
| 차원 | ZI_LcUsageVendor | 공급사와 이름 · 국가 | 차원 값 선택과 텍스트를 한 곳에서 관리하려고 |
| 큐브(원천) | ZI_LcUsageLine | 신용장 품목 라인 — 개설 · 선적 사용 · 이자 · 수수료를 한 행에 | 잔액과 금융비용 대사의 기준이 되는 가장 작은 단위 |
| 큐브(예정) | ZI_LcUsagePlan | 구매오더 조건에서 읽은 예정 금융비용 | 예정과 실적이 같은 차원으로 비교되도록 |
| 큐브 | ZI_LcUsageCube | 라인을 차원 조합 × 측정값으로 집계 | 금융비용 계산을 한 곳에서 한 번만 |
| 쿼리 | ZC_LcUsageQuery | 행 · 열 축, 필터, 금융비용률 같은 계산항목 | 화면과 분석 도구가 같은 쿼리를 읽도록 |
| 권한 | ZC_LcUsageQuery(DCL) | 회사코드 단위 접근 제어 | 합계로 새지 않게 집계 단계에 걸려고 |
| 서비스 | ZUI_LcUsage | 쿼리와 차원을 OData로 노출 | 화면은 서비스만 알면 되도록 |
① ZLCUSG_MAP — 기준 매핑 테이블
유산스 일수를 "30일 이내 · 31~60일 · 61~90일 · 91~120일 · 121일 이상" 같은 구간으로, 보증금 구분 코드를 이름으로 바꾸는 규칙을 코드가 아닌 테이블에 둡니다. 경계가 바뀌어도 뷰를 고치지 않습니다.
" ──────────────────────────────────────────────────────────
" ZLCUSG_MAP — 분석 기준 매핑
" 역할 : 만기 구간(BAND) · 보증금 구분(MARG) 코드를 축 값으로 변환
" 이렇게 나눈 이유 : 구간 경계와 구분 이름을 현업이 직접 유지하도록
" ──────────────────────────────────────────────────────────
@EndUserText.label : '수입 신용장 금융비용 분석 기준 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zlcusg_map {
key client : abap.clnt not null;
key map_type : abap.char(4) not null; " BAND : 만기 구간 / MARG : 보증금 구분
key map_code : abap.char(10) not null; " T1~T5 / M0 · M1 · M2
day_from : abap.int4; " 구간 시작일수 (BAND 에서만 사용)
day_to : abap.int4; " 구간 종료일수
label : abap.char(40); " 화면에 보이는 이름
}
② ZI_LcUsageVendor — 공급사 차원
차원은 값과 이름을 한 곳에서 내려 주는 뷰입니다. 이 뷰가 있으면 "차원 값 선택" 대화 상자와 피벗 행 이름이 같은 텍스트를 씁니다.
" ──────────────────────────────────────────────────────────
" ZI_LcUsageVendor — 공급사 차원
" 역할 : 공급사 코드 + 이름 + 국가
" 이렇게 나눈 이유 : 큐브가 이름까지 들고 다니면 행 수가 늘어난다
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '공급사 차원'
@Analytics.dataCategory: #DIMENSION
@ObjectModel.representativeKey: 'Supplier'
define view entity ZI_LcUsageVendor
as select from lfa1
{
@ObjectModel.text.element: [ 'SupplierName' ]
key lifnr as Supplier,
@Semantics.text: true
name1 as SupplierName,
land1 as Country
}
③ ZI_LcUsageLine — 신용장 품목 라인
이 뷰에서 "라인식"의 재료가 정해집니다. 개설 금액, 선적 사용 금액, 이자, 수수료를 한 행에 두어 개설 − 사용 = 잔액, 이자 + 수수료 = 금융비용을 라인마다 검산할 수 있게 합니다.
" ──────────────────────────────────────────────────────────
" ZI_LcUsageLine — 수입 신용장 품목 라인
" 역할 : 개설 전표(opn) + 선적 인수 라인(shp) → 라인 단위 금융비용
" 이렇게 나눈 이유 : 라인식 대사의 기준을 큐브와 분리해 두면
" 큐브 합계가 틀릴 때 라인에서 바로 원인을 찾는다
" 주의 : L/C 번호 보관 위치와 약정 금리 원천은 확인 필요
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 신용장 품목 라인'
define view entity ZI_LcUsageLine
as select from acdoca as opn
left outer join acdoca as shp
on shp.rbukrs = opn.rbukrs
and shp.xblnr = opn.xblnr
and shp.lifnr = opn.lifnr
association [0..1] to ZI_LcUsageVendor as _Supplier
on $projection.Supplier = _Supplier.Supplier
{
key opn.rbukrs as CompanyCode,
key opn.belnr as OpenDocument,
key opn.docln as OpenItem,
opn.lifnr as Supplier,
opn.rwcur as TransCurrency,
opn.budat as OpenDate,
@Semantics.amount.currencyCode: 'TransCurrency'
opn.wsl as OpenFc,
@Semantics.amount.currencyCode: 'TransCurrency'
shp.wsl as UseFc,
cast( opn.hsl as abap.dec(23,0) ) as OpenAmt,
cast( coalesce( shp.hsl, 0 ) as abap.dec(23,0) ) as UsedAmt,
cast( opn.hsl - coalesce( shp.hsl, 0 ) as abap.dec(23,0) ) as BalAmt,
_Supplier
}
④ ZI_LcUsagePlan — 예정 금융비용
예정은 구매오더 조건에서 읽은 사용 외화 · 환율 · 이자율 · 일수 · 수수료로 같은 식을 풀어 둔 값입니다. 실적과 같은 차원 키를 가져야 칸 단위로 비교됩니다.
" ──────────────────────────────────────────────────────────
" ZI_LcUsagePlan — 예정 금융비용
" 역할 : 구매오더 조건 → 예정 사용 외화 · 환율 · 이자율 · 일수 · 수수료
" 이렇게 나눈 이유 : 예정 기준이 사람마다 달라지지 않게 한 곳에서 정의
" 주의 : 예정 이자율 원천(약정서·시장금리)은 확인 필요
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 신용장 예정 금융비용'
define view entity ZI_LcUsagePlan
as select from ekpo as po
inner join ekko as ph on ph.ebeln = po.ebeln
{
key ph.bukrs as CompanyCode,
key po.ebeln as PurchaseOrder,
key po.ebelp as PurchaseOrderItem,
ph.lifnr as Supplier,
ph.waers as TransCurrency,
ph.inco1 as Incoterms,
po.matnr as Material,
po.matkl as MaterialGroup,
cast( 0 as abap.dec(23,0) ) as PlanCostAmt " 예정 이자·수수료 산식은 확인 필요
}
⑤ ZI_LcUsageCube — 큐브
라인을 차원 조합 × 측정값으로 집계합니다. 이자 계산은 이 뷰 한 곳에서만 하고, 화면과 분석 도구는 이 값을 그대로 읽습니다.
" ──────────────────────────────────────────────────────────
" ZI_LcUsageCube — 신용장 사용·금융비용 큐브
" 역할 : 라인을 11개 차원 조합별로 집계 (측정값 6개)
" 이렇게 나눈 이유 : 금융비용 계산을 한 곳에서 한 번만 하려고
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 신용장 사용·금융비용 큐브'
@Analytics.dataCategory: #CUBE
define view entity ZI_LcUsageCube
as select from ZI_LcUsageLine
{
key CompanyCode,
key Supplier,
key TransCurrency,
key substring( OpenDate, 1, 6 ) as Period,
@DefaultAggregation: #SUM
OpenAmt,
@DefaultAggregation: #SUM
UsedAmt,
@DefaultAggregation: #SUM
BalAmt
// 이자 · 수수료 · 금융비용은 이자 산정 기준 확정 뒤 추가 — 확인 필요
}
group by CompanyCode, Supplier, TransCurrency, substring( OpenDate, 1, 6 )
⑥ ZC_LcUsageQuery — 분석 쿼리
행 · 열 축과 필터, 계산항목을 쿼리에 둡니다. 화면이 서비스에서 받는 계산항목의 식도 이 쿼리에서 정의합니다.
" ──────────────────────────────────────────────────────────
" ZC_LcUsageQuery — 분석 쿼리
" 역할 : 행 · 열 축, 필터, 계산항목(금융비용률 · 사용률 등)
" 이렇게 나눈 이유 : 화면과 분석 도구가 같은 쿼리를 읽도록
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 신용장 사용·금융비용 쿼리'
@Analytics.query: true
define view entity ZC_LcUsageQuery
as select from ZI_LcUsageCube
{
@AnalyticsDetails.query.axis: #ROWS
key Supplier,
@AnalyticsDetails.query.axis: #COLUMNS
key Period,
@AnalyticsDetails.query.axis: #FREE
key TransCurrency,
@AnalyticsDetails.query.formula: 'UsedAmt / OpenAmt * 100'
OpenAmt,
UsedAmt,
BalAmt
}
⑦ ZC_LcUsageQuery — 권한(DCL)
권한은 집계 단계에 걸어야 합계로 다른 조직의 숫자가 새지 않습니다. 회사코드 단위가 기본이고, 은행 단위가 필요하면 조건을 더합니다.
@EndUserText.label: '신용장 쿼리 권한'
@MappingRole: true
define role ZC_LcUsageQuery {
grant select on ZC_LcUsageQuery
where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
⑧ ZUI_LcUsage — 서비스 정의와 바인딩
쿼리와 차원을 OData로 노출합니다. 화면은 이 서비스 주소만 알면 되고, 앱의 서비스 주소만 바꾸면 운영 데이터로 전환됩니다.
@EndUserText.label: '수입 신용장 사용·금융비용 서비스'
define service ZUI_LcUsage {
expose ZC_LcUsageQuery as LcUsageQuery;
expose ZI_LcUsageVendor as Vendor;
}
// 바인딩 : OData V2 - UI 로 서비스 바인딩을 만들고 활성화 (이름은 시스템 규칙에 맞춰 확인 필요)
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다. 아래 여섯 가지는 코딩이 아니라 합의입니다.
| 정할 항목 | 정하지 않으면 | 맡을 곳 |
|---|---|---|
| 이자 산정 기준 | 은행 통지서의 이자와 첫 대사에서 어긋납니다. | 회계팀 · 자금팀 |
| 신용장 라인 원천 확정 | 라인식 대사(3,482건 기준)가 맞지 않아 어디서 어긋났는지 찾기 어렵습니다. | 회계팀 · 구매팀 |
| 약정 금리 원천 | 이자율 요인이 사람마다 다르게 해석됩니다. | 자금팀 |
| 예정(기준) 원천 | 예정 대비 차이의 기준이 달라 요인분해 결과를 논의하기 어렵습니다. | 구매팀 · 자금팀 |
| 차원 범위와 매핑 | 차원이 코드 그대로 나오거나 구간 경계가 바뀔 때마다 뷰를 고쳐 다시 이송해야 합니다. | 현업 · 자금팀 |
| 권한 설계 | 전사 합계와 자기 몫의 차이로 다른 조직의 숫자가 드러납니다. | 보안 · 권한 담당 |
숫자를 믿을 수 있는가 — 검증 결과
리포트에서 가장 비싼 질문은 "이 숫자 맞아?"입니다. 검증용 샘플 데이터로 대사식을 전수로 돌린 결과입니다.
| 대사식 | 검사 건수 | 차이 건수 |
|---|---|---|
| 큐브 합계 = 원천 라인 합계(측정값 6개) | 6 | 0 |
| 예정 합계 = 예정 라인 합계(측정값 6개) | 6 | 0 |
| 개설 − 사용 = 미사용 잔액(라인) | 3,482 | 0 |
| 이자 + 수수료 = 금융비용(라인) | 3,482 | 0 |
| 개설 외화 × 환율 = 개설 원화(라인) | 3,482 | 최대 0.5 |
| 요인 합 = 총차이(검산) | 전체 범위 | 0원 |
| 축 배치 6종의 총합이 같음 | 6 | 0 |
| 칸 드릴스루: 칸의 값 = 라인 합 | 4 | 0 |
선적 미이행(사용 0) 라인 364건과 계획 외 개설 라인 226건은 의도적 예외로, 대사 차이와 분리해 기록했습니다.
운영 데이터로 갈 때
- 합의 — 위 여섯 가지 항목을 먼저 정합니다.
- CDS 작성과 이송 — 기준 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순서로 만들고 이송합니다.
- 서비스 활성화와 주소 교체 — 서비스를 활성화하고 앱의 서비스 주소만 바꿉니다.
- 병행 대사 — 한두 기간은 표준 화면과 병행해 대사합니다.
자주 묻는 질문
숫자와 산식, 화면과 조작, 분석 기능, 도입과 운영 순서로 모았습니다. 숫자는 모두 검증용 샘플 데이터 기준입니다.
숫자와 산식
금융비용은 어떻게 계산되나요?
선적에 쓴 외화 금액에 환율을 곱하고, 연 이자율과 유산스 일수(360일 기준)를 곱한 유산스 이자에 개설·인수 수수료를 더한 값입니다. 원 단위로 반올림하며, 검증용 샘플에서는 이자 34.80억원과 수수료 15.54억원을 더한 50.34억원이 라인 3,482건 모두에서 금융비용과 같았습니다.
미사용 잔액은 무엇인가요?
개설 금액에서 선적에 쓴 금액을 뺀 값입니다. 샘플 기준 개설 5,343.20억원 중 4,528.69억원이 쓰였고 814.50억원이 남았습니다. 선적이 이행되지 않은 개설분이 공급사별로 얼마인지는 감시 규칙 R03이 따로 점검합니다.
예정 대비 +4.97억원은 무엇으로 나뉘나요?
사용 금액 −3.15억원, 적용 환율 +0.97억원, 유산스 기간 −0.07억원, 이자율 +2.09억원, 수수료 +1.89억원, 미계획 개설 +3.24억원입니다. 합은 +4.97억원(예정 45.37억원 → 실적 50.34억원, +11.0%)이며 화면의 검산 줄이 요인 합 − 총차이 = 0원을 보여 줍니다.
요인의 합이 총차이와 같다는 것은 어떻게 보장되나요?
예정 조건에서 시작해 사용 금액 → 적용 환율 → 유산스 기간 → 이자율 → 수수료 순으로 실적 값을 하나씩 바꿔 같은 식을 다시 계산하기 때문에, 단계 차이를 모두 더하면 처음과 끝의 차이가 됩니다. 계획 외 개설 라인은 금융비용 전체를 미계획 개설로 보고 나머지 요인은 0으로 둡니다.
선적 미이행 라인과 계획 외 개설 라인은 어떻게 다루나요?
선적 미이행(사용 0) 364건은 개설만 되고 이자가 붙지 않아 사용 금액 요인이 줄어드는 방향으로 나오고, 계획 외 개설 226건은 예정에 없던 라인이라 금융비용 전체가 미계획 개설로 갑니다. 두 항목은 대사 차이와 섞이지 않게 따로 기록했습니다.
개설 외화 × 환율과 개설 원화가 최대 0.5 어긋나는데 문제가 아닌가요?
원 단위 반올림 범위 안의 차이입니다. 라인 3,482건의 개설 외화 × 환율이 개설 원화와 최대 0.5원 다를 뿐이며, 합계 대사와 금융비용 대사는 차이 0건입니다.
금액 단위를 바꾸면 합계가 달라지나요?
아닙니다. 금액 단위(원 · 천원 · 백만원 · 억원)는 표시만 바꾸고 내부 값은 원 단위 그대로입니다. 표시할 때 반올림하므로 칸을 눈으로 더하면 끝자리가 어긋날 수 있습니다.
화면과 조작
축을 바꾸면 서버를 다시 부르나요?
아닙니다. 조회할 때 큐브를 한 번 읽어 칸 단위로 묶어 두고, 축을 바꿀 때는 브라우저에서 그 칸을 다시 합산합니다. 끌어다 놓기로 축을 바꾸는 동안 서버 요청이 0건이었고 총합도 변하지 않았습니다.
행 축과 열 축에는 몇 개까지 놓을 수 있나요?
행 축 3개, 열 축 2개까지입니다. 초과해서 놓으려 하면 안내 메시지가 뜨고 배치는 바뀌지 않습니다. 열이 36개를 넘거나 행 노드가 1,500개를 넘으면 앞부분만 보여 주고 범위를 좁히라고 안내합니다.
칸을 눌러 나오는 라인은 모두 읽어야 하나요?
라인이 읽는 단위(기본 500건)보다 많으면 일부만 먼저 읽고 "아직 일부만 읽음"으로 표시합니다. 더 읽기나 모두 읽기를 누르면 이어서 읽고, 모두 읽은 뒤에 칸의 값과 라인 합이 같은지 판정합니다.
레이아웃은 무엇이 저장되나요?
행 축과 열 축 배치, 조회 조건, 표시 항목과 금액 단위, 표시 행 수, 머리 영역의 접힘 상태가 저장됩니다. 기본으로 지정하고 "열 때 자동 조회"를 켜면 화면을 여는 순간 조회된 채로 시작합니다.
좁은 화면이나 휴대폰에서도 쓸 수 있나요?
쓸 수 있습니다. 390px 폭에서 차트와 피벗이 위아래로 쌓이고 대화 상자는 화면 전체로 열립니다. 다만 열이 많은 피벗은 가로 스크롤이 필요하며 상한을 넘으면 범위를 줄이라는 안내가 뜹니다.
분석 기능
AI 분석은 숫자도 만들어 내나요?
아닙니다. 금액과 비율은 서비스가 계산한 값만 쓰고, 해설은 그 값을 문장으로 옮깁니다. 기본은 외부 AI 서비스를 부르지 않는 규칙 기반 해설이고 모델 연결은 꺼져 있습니다. 점검 대상마다 "사유 확인이 필요합니다"로 끝나며 원인을 단정하지 않습니다.
PPTX 보고서에는 무엇이 담기나요?
AI 분석 창의 PPTX 보고서 버튼을 누르면 지금 보는 범위의 요약과 표, 차트가 브라우저 안에서 파일로 만들어져 내려받아집니다. 검증에서 6장짜리 파일을 받아 열어 보았고, 서버에는 파일을 남기지 않습니다.
변동 사유는 축을 바꾸면 사라지나요?
사라지지 않습니다. 사유는 조회 범위와 행 경로에 묶여 저장되므로 축을 바꾸거나 트리를 다시 펼쳐도 같은 행이면 따라옵니다. 사유는 500자까지 적을 수 있고 새로 고침해도 남습니다.
AI 에이전트는 무엇을 하고 얼마나 자주 도나요?
감시 규칙 5개(공급사 금융비용률 상한 1.4% · 은행별 이자율·기간 요인 4천만원 · 선적 미이행 잔액 3억원 · 금융비용 예정 대비 20% 초과 · 91일 이상 유산스 이자 6천만원)를 판정해 걸린 항목을 역할별 대기함에 올립니다. 실행은 하루 한 번으로 제한되어 두 번째 호출은 LIMITED로 기록됩니다.
계산항목은 차원과 어떻게 다른가요?
차원은 라인에 들어 있는 값으로 묶어 행을 만들고, 계산항목은 합계가 정해진 뒤 칸마다 식을 적용해 만든 값입니다. 금융비용률 · 사용률 · 이자 부담률 · 미사용 잔액 비율은 어느 축 배치에서도 같은 식으로 계산됩니다.
왜 금융비용률의 분모가 개설 금액이 아니라 사용 금액인가요?
이자는 선적에 쓴 금액에만 붙기 때문입니다. 개설만 하고 쓰지 않은 잔액까지 분모에 넣으면 비용률이 낮아 보입니다. 쓰지 않은 개설분은 미사용 잔액 비율로 따로 봅니다.
도입과 운영
누가 쓰고 어떤 효과를 기대할 수 있나요?
자금 담당자가 은행별 금융비용을 점검할 때, 구매 책임자가 공급사별 개설 규모를 볼 때, 물류 책임자가 선적 이행 여부와 잔액을 볼 때, CFO가 금융비용 전체를 볼 때 씁니다. 엑셀 취합과 표준 화면 오가기가 줄고 회의가 "어느 요인을 점검할 것인가"로 옮겨 갑니다.
언제부터 어디까지 적용할 수 있나요?
이 글의 숫자는 검증용 샘플 데이터(가상 공급사 12곳 · 가상 은행 4곳 · 개설월 2026.04~2026.09 · 가정 환율과 이자율)이며 실제 회사의 숫자가 아닙니다. 적용 시점과 범위는 이자 산정 기준, 신용장 원천, 예정 기준을 정한 뒤 회사가 결정합니다.
표준 T-code를 대체하나요?
대체하지 않습니다. 표준 실행은 SAP 표준 T-code가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 구매오더 조회(ME23N) · 송장 입력(MIRO) · 공급업체 개별 항목(FBL1N) · 전표 조회(FB03) 등은 법정 · 감사 대응과 문서 단위 확인에 그대로 씁니다.
데이터는 어디서 오고 정합성은 어떻게 확인하나요?
원천은 신용장 개설·수수료 전표와 선적 인수 라인, 구매오더 조건입니다. 큐브는 이 라인을 집계한 것이라 큐브 합계와 라인 합계를 측정값 6개 모두에서, 잔액과 금융비용은 라인 3,482건 모두에서 대사했고 차이는 0건이었습니다.
외화와 이자율은 어떻게 처리하나요?
외화 금액은 통화(USD · EUR · JPY · CNY)별로 읽고 원화는 적용 환율로 환산한 값을 씁니다. 이자율은 은행이 적용한 연 이자율이고, 일수는 360일 기준입니다. 회사의 이자 산정 방식이 다르면 기준 매핑에서 확인이 필요합니다.
운영 데이터로 연결하는 절차는 어떻게 되나요?
기준 매핑 테이블 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순서로 CDS를 만들어 이송하고, 서비스를 활성화한 뒤 앱의 서비스 주소를 바꿉니다. 그 전에 L/C 번호 보관 위치, 약정 금리 원천, 일수 기준, 예정 기준을 정해야 합니다.
권한과 보안은 어떻게 하나요?
회사코드 단위 접근 제어(DCL)를 집계 단계에 걸어 합계로 다른 조직의 숫자가 새지 않게 합니다. 화면은 서비스가 준 값만 보여 주고 AI 해설은 규칙 기반이 기본이며 외부 모델 연결은 꺼져 있습니다. 변동 사유와 레이아웃은 서비스에 저장됩니다.
대용량 데이터에서도 쓸 수 있나요?
라인 집계는 데이터베이스 안에서 끝내고 화면은 집계된 칸만 읽도록 구성하며, 회사코드와 개설월 범위를 필수로 둡니다. 열 36개 · 행 노드 1,500개 상한과 라인 읽는 단위 500건이 브라우저를 지킵니다. 수천만 건 규모의 응답 시간 목표는 운영 환경에서 확인이 필요합니다.
차원 값이나 매핑이 바뀌면 어떻게 하나요?
만기 구간 경계나 보증금 구분 이름 같은 매핑은 기준 테이블에서 유지하므로 뷰를 고치지 않아도 됩니다. 새 차원을 추가하려면 큐브 · 쿼리 · 서비스의 차원 목록을 함께 늘립니다.
이 화면의 결과를 회계 · 세무 판단의 근거로 써도 되나요?
이 화면은 분류 · 집계 · 대사를 돕는 점검 도구, 최종 판단은 회사와 감사인(세무 신고는 회사와 세무 대리인·관세사)의 몫입니다. 차이 발생이나 점검 필요로 표시된 항목도 회계 · 세무 결론을 내리지 않습니다. 기준서의 시행일과 경과규정은 확인 필요입니다.