수입 솔루션 · 수입 대금 결제 · 외환차손익

수입 결제 환차손익 다차원 분석 — 결제 환율 영향을 축으로 쪼개고 예정 대비 차이를 여섯 요인으로 가르다

큐브 집계 · 축 끌어다 놓기 · 칸에서 결제 라인까지 드릴스루 · 예정 대비 차이와 여섯 요인분해 · 변동 사유 · AI 분석 · AI 에이전트 — 소개 영상과 실제 화면 31종, 그리고 CDS 코드까지

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

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

수입 대금을 외화로 결제하고 나면 두 가지 질문이 남습니다. 인식할 때 환율과 결제할 때 환율이 달라 생긴 차이가 얼마이고, 그것이 어느 공급사 · 통화 · 결제 조건에서 났는가, 그리고 예정했던 결제 원화와 견주면 왜 이만큼 달라졌는가입니다. IAS 21 환율변동효과(K-IFRS 제1021호)가 다루는 외화 거래의 환율 차이를 점검하는 자금 · 회계 담당자에게 결제 시점의 환율 차이는 분류하고 집계해 두어야 하는 대상입니다.

지금 방식은 대개 표준 화면에서 공급업체 개별 항목과 전표를 건별로 열어 엑셀에 옮기고, 은행 · 헷지 자료와 맞춘 뒤, 예정 금액과 다시 비교하는 순서입니다. 축을 하나 바꾸려면 집계를 처음부터 새로 해야 하고, 합계가 달라지면 어느 쪽이 맞는지부터 가려야 합니다. 이 화면은 결제 품목 라인 단위 큐브를 한 번 읽어 와서 브라우저에서 축을 다시 묶고, 칸에서 결제 라인까지 내려가며, 예정 대비 차이를 요인으로 나눕니다. 모든 숫자는 라인 합계와 대사해 두었습니다.

한 줄 요약 — 결제 환율 차이를 공급사 · 통화 · 헷지로 쪼개 보고, 칸에서 결제 라인까지 내려가 확인하며, 예정 대비 차이를 여섯 요인으로 갈라 그 합이 총차이와 같은지 매번 검산하는 화면입니다.

핵심 포인트 여덟 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 축을 바꿔도 합계가 갈라지지 않는 피벗공급사 · 결제 조건 · 은행 · 헷지 구분 · 통화 등 11개 차원을 끌어다 놓아 행 3단계 · 열 2단계로 봅니다. 모든 축이 같은 큐브에서 나와 총합이 어긋날 자리가 없습니다.축마다 엑셀 시트를 따로 만들고, 합계가 다르면 시트를 맞추는 일부터 합니다.
② 칸에서 결제 라인까지 한 번에숫자를 누르면 그 금액을 만든 결제 품목 라인이 열리고, 칸의 값과 라인 합이 같은지 그 자리에서 보입니다.리포트를 닫고 공급업체 개별 항목을 다시 열어 조건을 손으로 맞춥니다.
③ 환율 영향을 계산항목으로환율 영향률 · 외환차손 비중 · 수수료율 · 순 환율 영향이 칸마다 계산됩니다. 식은 서비스가 정하고 화면은 같은 식을 어느 축에서나 적용합니다.엑셀 수식이 시트마다 달라 같은 이름의 비율이 서로 다른 값으로 나옵니다.
④ 예정 대비 차이를 여섯 요인으로결제 원화의 예정 대비 차이를 수량 · 외화 단가 · 인식 환율 · 결제 환율 · 결제 수수료 · 미계획 결제로 가르고, 요인 합이 총차이와 같은지 검산 줄이 매번 보여 줍니다.차이 원인을 엑셀로 따로 분해하고, 합이 맞는지 다시 손으로 맞춥니다.
⑤ 차이가 난 행에 사유를 남긴다사유가 조회 범위와 행에 묶여 저장되어, 축을 바꿔도 다음 기간에도 같은 행에서 다시 보입니다.같은 질문을 기간마다 다시 하고, 지난번 답은 메일함에서 찾습니다.
⑥ 숫자는 서비스가 계산하는 AI 분석금액과 비율은 서비스가 계산한 값만 쓰고, 해설은 그 값을 문장으로 옮깁니다. 기본은 규칙 기반 해설이며 외부 모델 연결은 꺼져 있습니다. 같은 범위로 PPTX 보고서도 만듭니다.AI가 만든 숫자를 보고서에 써도 되는지부터 따져야 합니다.
⑦ 화면을 열지 않아도 도는 AI 에이전트감시 규칙 5개에 임계값과 받을 역할이 붙어 있고, 걸린 항목은 역할별 대기함에 올라옵니다. 실행은 하루 한 번으로 제한되고 실행 기록이 남습니다.숫자가 나빠진 날 아무도 화면을 열지 않으면 그대로 지나갑니다.
⑧ 표준 T-code와 이어지는 점검공급업체 개별 항목(FBL1N) · 전표 조회(FB03) · 구매오더 조회(ME23N) 등과 같은 필드를 쓰므로, 이 화면에서 찾은 차이를 표준 화면에서 원천으로 확인합니다.표준 화면과 엑셀 사이를 오가며 숫자를 눈으로 대조합니다.

사례로 보는 효과

검증용 샘플 데이터(가상 공급사 12곳 · 결제월 2026.04~2026.09 · 가정 환율)에서 예정 결제 원화는 500.85억원, 실적은 600.21억원으로 +99.36억원(+19.8%) 차이가 발생했습니다. 합계 숫자만 보면 "왜 늘었는가"에서 멈추지만, 여섯 요인으로 가르면 어디를 점검할지가 갈립니다. 아래 표의 여섯 요인은 예정에서 실적까지 하나씩 실적 값을 대입해 가며 계산한 값이고, 합은 총차이와 같습니다.

요인금액(원)억원 환산읽는 법
수량−2,513,638,960−25.14이월(미결제) 181라인이 수량 0으로 들어가 줄어드는 방향으로 나옵니다.
외화 단가+368,436,698+3.68예정 단가와 실제 결제 단가의 차이입니다.
인식 환율+1,958,404,684+19.58예정 환율과 송장 인식 시점 환율의 차이입니다.
결제 환율+439,875,903+4.40인식 환율과 결제 시점 환율의 차이입니다.
결제 수수료+7,337,380+0.07결제 수수료 차이입니다.
미계획 결제+9,675,438,837+96.75계획 외 결제 491라인에서 차이가 발생했고 가장 큰 몫입니다.
합계(총차이)+9,935,854,542+99.36예정 500.85억원 → 실적 600.21억원. 검산: 요인 합 − 총차이 = 0원.

가장 큰 몫은 미계획 결제(+96.75억원)로, 계획 외 결제 491라인에서 차이가 발생했습니다. 환율 요인(인식 환율 + 결제 환율)의 합은 +23.98억원이고, 수량 요인은 이월 181라인이 포함되어 −25.14억원으로 나옵니다. 표시값은 소수 둘째 자리에서 반올림했기 때문에 억원 환산 열을 더하면 총차이와 0.02억원 어긋나 보이지만, 원 단위 합은 +9,935,854,542원으로 총차이와 같습니다. 이 사례에서 요인 하나만 보고 원인을 단정하지 않고, 미계획 결제 라인과 이월 라인에 사유를 남겨 점검이 필요한 항목으로 넘기는 흐름입니다.

환율 영향만 따로 보면 결제 원화에서 인식 원화를 뺀 5.28억원이고, 이는 외환차손 6.27억원에서 외환차익 0.99억원을 뺀 값과 같습니다. 외환차손을 헷지 구분으로 나누면 미적용 3.66억원 · 부분 적용 2.15억원 · 선물환 적용 0.45억원이어서, 헷지를 적용하지 않은 결제를 먼저 점검할 수 있습니다. 인식 원화 593.02억원, 결제 원화 600.21억원, 수수료 1.91억원은 같은 라인에서 나온 합계입니다.

도입하면 달라지는 것

  • 마감 전 준비 — 공급사별 · 통화별 환율 영향, 라인 확인, 요인분해가 한 화면에서 나와 엑셀 취합과 캡처가 줄어듭니다.
  • 회의의 주제 — "어느 숫자가 맞는가" 대신 "어느 요인을 점검할 것인가"를 이야기합니다.
  • 다음 기간으로 이어지는 기록 — 변동 사유와 레이아웃이 남아 같은 설명을 되풀이하지 않습니다.
  • 놓치지 않는 점검 — 화면을 열지 않아도 감시 규칙에 걸린 항목이 역할별 대기함에 올라옵니다.
  • 역할별 시각 — CFO · 구매 책임자 · 물류 책임자 · 자금 책임자가 같은 큐브를 자기 기준 축으로 읽습니다.

이런 회사에 맞습니다

원재료나 설비 부품을 해외에서 수입해 USD · EUR · JPY · CNY 같은 여러 통화로 결제하고, 신용장 유산스나 송금(TT) 등 결제 조건이 섞여 있으며, 선물환 같은 헷지를 일부 결제에만 적용하는 제조 · 유통 회사에 맞습니다. 공급사가 열 곳 안팎 이상이고 월마다 결제 환율 차이를 엑셀로 집계하는 자금팀 · 회계팀, 그리고 예정 대비 결제 원화 차이를 구매 · 물류 · 자금이 함께 읽어야 하는 조직에 특히 쓸모가 있습니다.

실행 화면

사용 방법

  1. 조회조건을 넣습니다. 회사코드(필수)와 시작 · 종료 결제월을 고릅니다. 차원 값을 비워 두면 전체 범위입니다.
  2. 조회 버튼을 누르거나 Enter를 칩니다. 큐브가 한 번 읽혀 오고 차트와 피벗이 함께 그려집니다.
  3. 임원 요약에서 전체 모양을 확인합니다. 역할(CFO · 구매 · 물류 · 자금)을 바꾸면 표시 항목과 행 축이 그 역할에 맞게 바뀝니다.
  4. 탭과 축을 옮깁니다. 차원 칩을 끌어 행 축(최대 3) · 열 축(최대 2)에 놓으면 서버를 다시 부르지 않고 바로 다시 묶입니다. 막대와 요인 워터폴을 전환합니다.
  5. 칸이나 행을 눌러 상세를 엽니다. 칸은 결제 품목 라인으로, 차이 모드의 행은 변동 사유 입력으로 이어집니다.
  6. 내보냅니다. 피벗과 라인은 CSV로, 분석 결과는 AI 분석 창의 PPTX 보고서로 내려받습니다.

무엇으로 만들었나

화면은 UI5 표준 컨트롤 위에 얹었고, 데이터는 OData V2 모델이 매니페스트에 선언된 서비스를 상대 경로로 읽어 옵니다. 서비스 경로는 화면 코드에 적지 않으며, 연결에 실패하면 빈 화면이나 콘솔 오류 대신 오류 처리기가 사용자 메시지를 띄웁니다.

자리무엇왜 그렇게 두었나
화면 컨트롤sap.m 페이지 · 패널 · 대화 상자, sap.ui.table 트리 테이블(피벗), 직접 그린 SVG 차트(막대 · 요인 워터폴)표준 컨트롤만 써서 외부 차트 라이브러리 반입 심사가 필요 없고, 좁은 화면에서도 같은 컨트롤이 접히며 동작합니다.
집계 로직(브라우저)큐브 재집계 모듈이 칸 단위로 묶은 값을 행 축 · 열 축 배치에 맞춰 다시 합산합니다. 금액은 서비스가 만든 값이고 여기서는 합산과 배치만 합니다.축을 바꿀 때마다 서버를 부르면 느리고 합계가 서로 다른 시점의 값이 될 수 있어, 한 번 읽은 큐브를 같은 자리에서 다시 묶습니다.
판정 · 계산(서비스)요인분해, 계산항목의 식, 규칙 기반 해설, 에이전트 규칙 판정과 실행 한도는 서비스가 계산합니다.화면은 서비스가 준 숫자를 보여 주기만 하므로, 숫자의 출처가 한 곳이고 대사도 그 한 곳을 기준으로 합니다.
데이터 모델(OData V2)읽기 모델(큐브 · 예정 · 계산항목 · 차원 값 · 결제 품목 라인)과 쓰기 모델(변동 사유 · 레이아웃 · 에이전트 규칙)로 나뉩니다. 모델 설정은 매니페스트의 상대 경로를 따릅니다.조회 조건은 필터로, 읽는 단위는 모델 기능으로 처리해 서비스를 바꿀 때 화면 코드를 고치지 않게 했습니다.
보고서 생성(브라우저)PPTX 보고서는 브라우저 안에서 파일을 지어 내려받습니다. 서버에 파일을 남기지 않습니다.보고서에 담기는 숫자가 화면에 보이는 숫자와 같은 값입니다.
테마sap_horizonSAP 표준 테마의 색 · 간격 · 접근성 규칙을 그대로 따릅니다.

SAP 표준 기능을 그대로 이어받은 부분

결제 품목 라인은 표준 문서의 인식 라인과 결제(청산) 라인을 이어 붙이는 구조를 그대로 따르고, 공급업체 · 전표 · 구매오더 필드를 같은 이름의 차원으로 씁니다. 표준 실행은 SAP 표준 T-code가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다.

처음 열었을 때 — 조회 전 틀에서 피벗과 차트까지

화면 맨 위에는 조회 조건, 그 아래 분석 축 보드, 임원 요약, 차트와 피벗이 세로로 쌓여 있습니다. 조회를 누르기 전에는 틀만 보이고, 누르는 순간 큐브가 한 번 읽혀 모든 영역이 채워집니다.

처음 열었을 때 — 조회 전 화면
처음 열었을 때 — 조회 전 화면 — 회사코드 · 결제월 범위 · 차원 값과 기본 축이 미리 채워져 있습니다.

조회 조건에는 회사코드 1000과 결제월 2026.04~2026.09가 기본값으로 들어 있고, 차원 값은 "전체"입니다. 분석 축은 행에 공급사와 통화, 열에 결제월이 놓여 있습니다. 임원 요약은 아직 "해당 없음"이므로 조회 버튼을 눌러야 숫자가 나옵니다.

조회 직후 — 임원 요약과 지표 네 개
조회 직후 — 임원 요약과 지표 네 개 — 조회 직후 임원 요약에 결제 원화 · 환율 영향 · 외환차손 · 환율 영향률이 뜹니다.

결제 원화 금액 60,021.0백만원 아래에 예정 50,085.1과 차이 +9,935.9가 함께 보입니다. 환율 영향(결제−인식)은 528.0백만원, 외환차손은 626.8백만원, 환율 영향률은 0.89%입니다. 금액 단위는 위쪽 선택값(백만원)을 따릅니다.

레이아웃 보드 — 사용 가능 · 행 축 · 열 축
레이아웃 보드 — 사용 가능 · 행 축 · 열 축 — 차원 칩이 세 영역에 나뉘어 놓이는 보드 화면입니다.

"사용 가능" 영역에는 아직 쓰지 않은 차원이 칩으로 놓여 있고, 행 축은 최대 3개 · 열 축은 최대 2개까지 받습니다. 칩을 끌어 놓거나 칩의 화살표 버튼을 누르면 이동합니다. 끌기가 어려운 환경을 위해 같은 일을 버튼으로도 할 수 있습니다.

축을 옮긴 뒤 — 행 3단계 · 열 2단계
축을 옮긴 뒤 — 행 3단계 · 열 2단계 — 환헷지 구분을 행으로, 결제 소요 구간을 열로 옮긴 모양입니다.

행 축은 공급사 › 통화 › 환헷지 구분, 열 축은 결제월 › 결제 소요 구간으로 바뀌었습니다. 이때 서버로 나가는 요청은 없고, 이미 읽은 큐브를 브라우저에서 다시 묶습니다. 총합은 바뀌기 전과 같습니다.

머리 영역을 접은 화면
머리 영역을 접은 화면 — 조회 조건과 분석 축을 접어 차트와 피벗에 화면을 넓게 씁니다.

패널 제목을 누르면 조건 · 축 영역이 접히고 접힌 줄에는 현재 설정이 한 줄로 요약됩니다. 피벗을 오래 읽을 때 쓰는 모양이며, 접힌 상태는 레이아웃에 함께 저장됩니다. 다시 펼치려면 줄 앞의 화살표를 누릅니다.

경영 요약 — 같은 큐브를 역할 네 가지로 읽는다

임원 요약은 역할을 바꾸면 기준 차원과 표시 항목이 함께 바뀝니다. 같은 6개월 · 같은 합계 위에서 CFO는 통화, 구매 책임자는 공급사, 물류 책임자는 결제 소요 구간, 자금 책임자는 헷지 구분을 먼저 봅니다.

경영 요약 — CFO
경영 요약 — CFO — 통화 기준으로 결제 원화와 환율 영향을 읽습니다.

CFO 역할은 결제 원화 · 환율 영향 · 외환차손 · 환율 영향률 네 지표를 통화별로 읽습니다. 통화별 예정 초과 상위는 EUR 19,196.2(+3,566.8), CNY 17,026.0(+2,688.9), USD 15,738.2(+2,392.3), JPY 8,060.6(+1,287.8)백만원 순입니다. 아래 피벗은 같은 통화를 결제월별로 펼친 것입니다.

경영 요약 — 구매 책임자
경영 요약 — 구매 책임자 — 공급사 기준으로 결제 원화와 수수료율을 읽습니다.

구매 책임자 역할은 결제 원화에 인식 원화와 수수료율(0.32%)을 함께 놓습니다. 공급사별 예정 초과 상위는 V04 함부르크 기계부품(+1,650.3), V11 밀라노 설비부품(+1,174.8), V07 시애틀 특수소재(+1,148.2)백만원입니다. 단가 협상이나 공급사 점검의 우선순위를 정할 때 보는 화면입니다.

경영 요약 — 물류 책임자
경영 요약 — 물류 책임자 — 결제 소요 구간 기준으로 환율 영향과 차손 비중을 읽습니다.

물류 책임자 역할은 환율 영향 528.0 · 외환차손 626.8 · 결제 수수료 191.2백만원과 차손 비중 86.38%를 봅니다. 결제 소요 구간 B3(31~60일)가 +202.2로 가장 크고 B4(61~90일) +123.4가 뒤를 잇습니다. 구간이 길수록 인식과 결제 사이의 환율 차이를 점검할 대상이 되는지 확인하는 용도입니다.

경영 요약 — 자금 책임자
경영 요약 — 자금 책임자 — 환헷지 구분 기준으로 외환차손 · 외환차익 · 순 환율 영향을 읽습니다.

자금 책임자 역할은 외환차손 626.8 · 외환차익 98.8 · 순 환율 영향 528.0백만원과 환율 영향률 0.89%를 놓습니다. 헷지 구분별 외환차손은 미적용 366.4, 부분 적용 215.1, 선물환 적용 45.3백만원이며 합은 626.8로 같습니다. 헷지를 적용하지 않은 결제의 차손을 먼저 점검할 수 있습니다.

축 전환과 범위 — 끌어다 놓아도 총합은 그대로

열 축을 두 단계로 쌓거나 차원 값을 골라 범위를 좁혀도 서버를 다시 부르지 않습니다. 어떤 배치든 총합은 같아야 하며, 이를 검증용 샘플 데이터에서 축 배치 6종으로 확인했습니다.

열 축 2단계 — 결제월 › 헷지 구분
열 축 2단계 — 결제월 › 헷지 구분 — 열 헤더가 두 줄이 되고 차트도 같은 축으로 그려집니다.

열 축에 결제월과 환헷지 구분을 함께 놓으면 헤더가 "결제월 · 구분" 조합으로 늘어납니다. 칸이 많아지는 만큼 가로로 길어지므로 열 개수에는 상한이 있습니다. 행 수와 원천 라인 읽는 단위는 피벗 아래 선택값에서 바꿉니다.

차원 값 선택 — 여러 값을 한 번에
차원 값 선택 — 여러 값을 한 번에 — 조회 조건의 차원 값 버튼이 여는 대화 상자입니다.

결제월 · 분기 · 공급사 · 결제 조건 · 결제 은행 · 환헷지 구분 · 통화 · 인코텀즈 · 자재그룹 등 차원마다 값을 고를 수 있고, 비워 두면 전체입니다. 적용을 누르면 범위가 좁혀져 다시 조회됩니다. 선택 해제로 한 번에 비웁니다.

좁힌 결과 — 일부 공급사만
좁힌 결과 — 일부 공급사만 — 차원 값을 골라 범위를 줄인 뒤의 피벗과 차트입니다.

조회 조건 줄에 "2개 차원 선택"처럼 현재 범위가 요약됩니다. 공급사 · 통화 행만 남아 차트와 피벗이 같은 범위로 줄어듭니다. 범위를 좁혀도 위쪽 검산 줄은 같은 방식으로 요인 합과 총차이를 비교합니다.

칸에서 결제 라인까지 — 드릴스루

피벗의 칸을 누르면 그 금액을 만든 결제 품목 라인이 열립니다. 라인은 한 번에 정해진 단위(기본 500건)로 읽고, 모두 읽으면 칸의 값과 라인의 합이 같은지 화면이 알려 줍니다.

칸을 누르면 결제 품목 라인으로
칸을 누르면 결제 품목 라인으로 — 공급사 · 통화 · 결제월 조건이 대화 상자 위쪽에 그대로 적힙니다.

V04 함부르크 기계부품 · EUR · 결제월 2026.04 칸의 값은 989.2백만원이고, 읽은 라인의 합도 989.2로 "칸의 값과 결제 라인 합이 같습니다"가 표시됩니다. 31 / 31건을 모두 읽은 상태입니다. 표에는 결제 문서 · 품목 · 헷지 · 소요 구간 · 인식일 · 결제일 · 수량 · 환율이 함께 나옵니다.

다른 칸의 라인 — 같은 방식의 대사
다른 칸의 라인 — 같은 방식의 대사 — 공급사 단위 칸도 같은 틀로 열려 칸의 값과 라인 합을 맞춰 봅니다.

V07 시애틀 특수소재 · 결제월 2026.08 칸의 값 1,464.3과 읽은 라인의 합 1,464.3이 같고, 46 / 46건을 모두 읽었습니다. 라인이 읽는 단위보다 많으면 일부만 먼저 읽고 "아직 일부만 읽음"으로 표시해 대사가 끝나지 않았음을 알립니다. CSV 버튼으로 읽은 라인을 내려받을 수 있습니다.

검산과 결제월별 요약
검산과 결제월별 요약 — 큐브 합계와 결제 라인 합계를 측정값 6개로 나란히 놓습니다.

검산 패널은 인식 원화 · 결제 원화 · 환율 영향 · 수수료 · 외환차익 · 외환차손의 큐브 합계와 라인 합계를 비교하고 차이 열이 모두 0입니다. 아래에는 결제월 2026.04~2026.09의 라인 수 · 결제 문서 수 · 인식 · 결제 · 환율 영향 · 수수료가 월별로 나옵니다. 월별 합은 위 합계와 같습니다.

계산항목 — 환율 영향률과 순 환율 영향

계산항목은 서비스가 식을 내려 주고 화면이 칸마다 같은 식을 적용합니다. 환율 영향률(%)은 환율 영향을 인식 원화로 나눈 값, 외환차손 비중(%)은 차손이 차손과 차익 합에서 차지하는 비율, 수수료율(%)은 수수료를 결제 원화로 나눈 값입니다. 물대 결제액(수수료 제외)은 결제 원화에서 수수료를 뺀 값이고, 순 환율 영향은 차손에서 차익을 뺀 값입니다.

환율 영향률 — 공급사 · 통화별
환율 영향률 — 공급사 · 통화별 — 같은 식이 모든 행과 열에 적용되어 비율이 칸마다 나옵니다.

환율 영향률은 결제월별 퍼센트로 표시되고 막대 차트도 같은 값을 그립니다. 값이 클수록 인식 대비 결제 환율의 영향이 큰 칸이며, 점검 대상을 고르는 기준으로 씁니다. 임계값을 넘는 칸은 AI 에이전트 규칙에서도 같은 식으로 판정됩니다.

순 환율 영향 — 통화 × 헷지 구분
순 환율 영향 — 통화 × 헷지 구분 — 열을 헷지 구분으로 두고 순 환율 영향을 읽는 화면입니다.

통화별로 선물환 적용 · 미적용 · 부분 적용 열과 합계가 나란히 놓입니다. 합계 열은 세 구분의 합과 같으며, 칸마다 차손에서 차익을 뺀 값이 적혀 있습니다. 같은 식을 바꾸지 않고 열 축만 바꿔 다른 관점으로 읽는 예입니다.

예정 대비 차이 — 같은 표가 요인 분해 보고서가 된다

비교를 "예정 대비 차이"로 바꾸면 칸마다 예정 · 실적 · 차이 · 차이율이 붙고, 차트는 막대에서 요인 워터폴로 바뀝니다. 예정은 구매오더 조건에서 읽은 결제 원화이고, 요인은 수량 → 외화 단가 → 인식 환율 → 결제 환율 → 결제 수수료 → 미계획 결제 순서로 실적 값을 하나씩 대입해 계산합니다.

차이 모드 피벗 — 예정 대비 차이
차이 모드 피벗 — 예정 대비 차이 — 칸마다 예정 대비 차이가 표시되고 붉은색은 결제 원화를 늘린 방향입니다.

피벗이 예정 대비 차이 값으로 바뀌고 차트에는 예정에서 실적까지의 워터폴이 그려집니다. 붉은색은 환율 영향(차손)이나 비용을 늘린 요인, 초록은 줄인 요인입니다. 행의 사유 버튼을 누르면 그 행의 변동 사유를 적는 창이 열립니다.

변동 사유 입력 — 행에 남기는 기록
변동 사유 입력 — 행에 남기는 기록 — 대상 행 · 예정 대비 차이 · 주된 요인과 사유 입력란이 한 창에 있습니다.

대상 행 V04 함부르크 기계부품의 예정 대비 차이 +1,650.3(+22.8%)가 보이고, 주된 요인은 "결제 환율"로 골라 두었습니다. 사유는 500자까지 적고 저장하며, 조회 범위와 행 경로에 묶여 남으므로 축을 바꿔도 같은 행에서 다시 나옵니다. 사유를 지우는 버튼도 있습니다.

요인 워터폴 — 공급사 하나로 좁힌 범위
요인 워터폴 — 공급사 하나로 좁힌 범위 — 차이 분해 범위를 V04 함부르크 기계부품으로 좁힌 모양입니다.

분해 범위가 공급사 하나로 좁혀져 예정 7,248.8에서 실적 8,899.1까지 수량 −461.9 · 외화 단가 +62.7 · 인식 환율 +400.9 · 결제 환율 +34.7 · 수수료 +10.0 · 미계획 결제 +1,604.0 순으로 이어집니다. 범위를 좁혀도 "검산: 요인 합 − 총차이 = 0원"이 그대로 나옵니다. "전체 범위로" 버튼을 누르면 전체 분해로 돌아갑니다. 단위는 백만원입니다.

요인 워터폴 — 전체 범위의 여섯 요인
요인 워터폴 — 전체 범위의 여섯 요인 — 수량 −2,513.6 · 외화 단가 +368.4 · 인식 환율 +1,958.4 · 결제 환율 +439.9 · 수수료 +7.3 · 미계획 +9,675.4.

여섯 요인의 합은 +9,935.9백만원으로 총차이와 같고, 미계획 결제 막대가 가장 큽니다. 수량 막대는 초록으로 내려가는데, 이월 라인 181건이 수량 0으로 들어갔기 때문입니다. 요인 하나만 보고 원인을 단정하지 않고, 해당 행에 사유를 남겨 점검이 필요한 항목으로 넘깁니다.

AI 분석과 보고서

AI 분석은 지금 조회한 범위를 읽어 요약과 점검 대상을 문장으로 써 줍니다. 기본은 외부 AI 서비스를 부르지 않는 규칙 기반 해설이며, 숫자는 서비스가 계산한 값만 그대로 문장에 옮깁니다. 외부 모델 연결은 기본적으로 꺼져 있습니다.

AI 분석 해설 — 요약과 점검 대상
AI 분석 해설 — 요약과 점검 대상 — 요약 문단 아래에 점검 대상이 행별로 나열됩니다.

요약은 결제 문서 1640건 · 원천 라인 3189건의 결제 원화 600.21억원이 예정 500.85억원 대비 +99.36억원(+19.8%) 차이가 발생했다고 쓰고, 환율 요인 +23.98억원과 헷지 미적용 외환차손 3.66억원을 함께 밝힙니다. 점검 대상은 차이가 큰 자재그룹과 공급사 순이며 "사유 확인이 필요합니다"로 끝납니다.

PPTX 보고서 만들기
PPTX 보고서 만들기 — 해설 창의 PPTX 보고서 버튼이 브라우저에서 파일을 만들어 내려받습니다.

버튼을 누르면 "보고서 AI_Report_20261013.pptx(을) 만들었습니다" 메시지가 뜨고 파일이 내려받아집니다. 표와 차트, 요약 문장이 같은 범위의 숫자로 채워집니다. 파일은 서버에 남기지 않습니다.

AI 에이전트 — 규칙이 곧 점검 대상

에이전트는 감시 규칙 5개를 정해 두고 하루 한 번 점검합니다. 규칙마다 임계값과 받을 역할이 붙어 있고, 걸린 항목은 그 역할의 대기함으로 올라옵니다. 하루 한 번 실행 제한은 서비스가 판정하고, 실행 결과는 기록으로 남습니다.

에이전트 규칙 — 임계값과 받을 역할
에이전트 규칙 — 임계값과 받을 역할 — 규칙 5개와 임계 · 사용 여부 · 저장 버튼이 한 표에 있습니다.

공급사 환율 영향률 상한 초과(1%) · 통화별 환율 요인 임계(1억원) · 헷지 미적용 외환차손(6천만원) · 결제 원화 예정 대비 초과(12%) · 장기 결제 구간 환율 노출(4천만원)입니다. 임계값을 고치고 저장하면 다음 실행부터 반영됩니다. 열어 둔 동안 한 시간마다 실행하는 스위치는 기본이 꺼짐입니다.

대기함 — 걸린 항목이 올라온 모습
대기함 — 걸린 항목이 올라온 모습 — 탭 아이콘의 숫자가 대기함에 쌓인 보고 수입니다.

지금 실행하기를 누르면 규칙을 판정하고 걸린 항목을 보고로 올립니다. 대기함 탭의 배지 숫자는 4건이며, 하단에는 "오늘은 이미 실행해서 한도에 걸렸습니다. 하루 한 번 제한"이라는 안내가 있습니다. 같은 날 다시 눌러도 새 보고는 올라가지 않습니다.

레이아웃 저장과 복원

축 · 조회 조건 · 표시 항목 · 표시 행 수 · 접힘 상태를 이름을 붙여 저장하고 불러옵니다. 기본 레이아웃으로 지정해 두고 "열 때 자동 조회"를 켜면, 열자마자 조회된 상태로 시작합니다.

레이아웃 저장 — 이름과 기본 지정
레이아웃 저장 — 이름과 기본 지정 — 이름을 적고 기본 · 열 때 자동 조회를 고른 뒤 현재 화면을 저장합니다.

예시 이름은 "헷지별 결제 점검"입니다. 두 체크박스는 기본 레이아웃으로 쓸지, 열 때 자동으로 조회할지를 정합니다. 저장 전에는 "저장된 레이아웃이 없습니다"라고 보입니다.

저장된 레이아웃 목록
저장된 레이아웃 목록 — 저장하면 목록에 이름과 시각이 뜨고 적용 · 기본 지정 · 삭제 버튼이 붙습니다.

목록 줄에는 "기본 · 열 때 자동 조회" 표시와 저장 시각이 보입니다. 별표는 기본 레이아웃 지정, 화살표는 적용, 휴지통은 삭제입니다. 저장이 끝나면 "레이아웃을 저장했습니다" 안내가 뜹니다.

복원 — 다시 열었을 때 같은 모양
복원 — 다시 열었을 때 같은 모양 — 화면을 새로 열면 조회된 상태와 저장한 축이 그대로 돌아옵니다.

행 축 공급사 › 환헷지 구분, 차이 모드 요인 워터폴, 접힌 머리 영역이 저장한 대로 복원되었습니다. 열 때 자동 조회 덕에 조회 버튼을 누르지 않아도 피벗이 채워져 있습니다. 검증에서 복원 뒤 칸 수 · 행 축 · 사유 · 레이아웃 수가 모두 이어지는 것을 확인했습니다.

좁은 화면과 한계

휴대폰 폭에서는 열 폭과 패널이 접히고 대화 상자는 화면 전체로 열립니다. 큐브가 클 때를 위한 상한도 있어, 상한을 넘으면 화면이 안내 메시지로 범위를 줄이도록 알려 줍니다.

좁은 화면 — 위쪽
좁은 화면 — 위쪽 — 390px 폭에서 조회 조건 · 축 · 임원 요약이 한 줄씩 접힙니다.

조건 · 축 · 임원 요약이 접힌 줄로 보이고 조회 버튼은 오른쪽에 그대로 남습니다. 피벗의 행 이름 열은 좁아져 말줄임표로 줄어들지만 값 열은 가로 스크롤 없이 읽힙니다. 상단 버튼 세 개는 아이콘 중심으로 줄어듭니다.

좁은 화면 — 차트와 피벗 아래쪽
좁은 화면 — 차트와 피벗 아래쪽 — 워터폴 차트가 폭에 맞춰 줄어들고 피벗이 그 위에 놓입니다.

좁은 화면에서는 차트와 피벗이 세로로 쌓입니다. 요인 워터폴도 같은 요인 막대를 작은 글자로 보여 주고, 검산 줄은 접힌 패널로 맨 아래에 있습니다. 가로 폭을 넘는 요소는 만들지 않았습니다.

범위 상한 안내 — 열이 너무 많을 때
범위 상한 안내 — 열이 너무 많을 때 — 열이 84개가 되면 앞의 36개만 보여 주고 범위를 줄이도록 안내합니다.

노란 안내 줄에 "열이 84개라 앞의 36개만 보여 줍니다. 열 축을 줄이거나 차원 값을 골라 주세요"가 뜹니다. 열은 최대 36개, 행 노드는 최대 1,500개까지 그리며, 상한 때문에 합계가 달라지지는 않고 보이는 칸만 줄어듭니다. 범위를 줄이면 안내가 사라집니다.

화면 뒤에서 일어나는 일

한 번의 조회에서 서비스는 큐브(결제 라인 단위 집계)와 예정 · 계산항목 · 차원 값을 돌려주고, 화면은 이를 칸 단위로 묶어 둔 뒤 축 배치에 맞게 다시 합산합니다. 같은 값이 여러 곳(임원 요약 · 피벗 · 차트 · 검산)에서 쓰이지만 계산은 한 번만 합니다.

  1. 읽기 — 회사코드 · 결제월 범위 · 차원 값 필터로 큐브와 예정을 읽습니다. 큐브는 차원 조합 × 측정값 6개의 긴 형태(9,816행)이고, 예정은 9,360행입니다.
  2. 묶기 — 긴 형태를 차원 조합 1,636개 칸으로 묶습니다. 이후 축을 바꾸는 일은 이 칸을 다시 합산하는 일입니다.
  3. 계산항목 적용 — 서비스가 준 식을 칸마다 적용해 비율과 순 환율 영향을 만듭니다.
  4. 그리기 — 행 축 노드를 트리로 만들고 열 축을 헤더로 펼친 뒤 차트를 같은 값으로 그립니다.
  5. 검산 — 큐브 합계와 결제 라인 합계, 요인 합과 총차이를 화면 안에서 비교해 보여 줍니다.

축 전환 — 브라우저 재집계

판정 조건결과 상태사용자 조치
행 축이 3개를 넘게 놓이려 함"행 축은 3개까지입니다" 안내, 배치는 바뀌지 않음행 축에서 하나를 빼고 놓습니다.
열 축이 2개를 넘게 놓이려 함"열 축은 2개까지입니다" 안내열 축에서 하나를 빼고 놓습니다.
행 축을 모두 비우려 함"행 축은 비울 수 없습니다" 안내행 축에 차원을 하나 이상 남깁니다.
열이 36개를 넘음앞의 36개만 표시하고 안내 줄 표시열 축을 줄이거나 차원 값을 골라 범위를 좁힙니다.
행 노드가 1,500개를 넘음앞의 1,500개까지만 표시하고 안내 줄 표시차원 값을 골라 범위를 줄입니다.
축 배치만 바뀜서버 요청 없이 즉시 재집계, 총합 동일필요하면 행·열 바꾸기나 기본 축 버튼을 씁니다.

요인분해 — 순차 대입과 검산

요인분해는 예정(t0)에서 시작해 수량 → 외화 단가 → 인식 환율 → 결제 환율 → 결제 수수료 → 미계획 결제 순으로 실적 값을 하나씩 대입합니다. 각 단계에서 바뀐 결제 원화가 그 요인의 몫이 되고, 마지막 단계에서 실적이 되므로 요인 합 = 총차이가 구조적으로 성립합니다. 화면은 이 등식을 "검산: 요인 합 − 총차이 = 0원"으로 매번 보여 주며, 0이 아니면 그 자체가 점검 신호입니다.

단계대입하는 값이 단계에서 나오는 요인전체 범위 값(백만원)
0예정(구매오더 조건)시작점50,085.1
1실적 수량수량−2,513.6
2실적 외화 단가외화 단가+368.4
3인식 환율인식 환율+1,958.4
4결제 환율결제 환율+439.9
5결제 수수료결제 수수료+7.3
6계획 외 결제 라인미계획 결제+9,675.4
끝실적합 = 총차이60,021.0 (+9,935.9)

드릴스루 — 칸과 라인 대사

판정 조건결과 상태사용자 조치
라인을 모두 읽고 합이 칸의 값과 같음"칸의 값과 결제 라인 합이 같습니다" 초록 표시그대로 확인을 마칩니다.
라인을 모두 읽었는데 합이 다름"칸의 값과 결제 라인 합이 다릅니다" 표시차이 발생으로 보고 원천 확인이 필요합니다. 표준 화면에서 같은 문서를 엽니다.
라인이 읽는 단위보다 많음"n / m건 읽음" · "아직 일부만 읽음" 표시더 읽기 또는 모두 읽기를 눌러 이어서 읽습니다.

감시 규칙 — 판정과 대기함

판정 조건결과 상태사용자 조치
규칙의 임계값을 넘는 항목이 있음해당 역할의 대기함에 보고가 올라옴(탭 배지 숫자 증가)대기함에서 보고를 열어 점검이 필요한 항목에 사유를 남깁니다.
규칙은 사용 해제됨그 규칙은 판정에서 빠짐필요하면 사용 스위치를 켜고 저장합니다.
오늘 이미 실행함"오늘은 이미 실행해서 한도에 걸렸습니다" 안내, 새 보고 없음내일 다시 실행하거나 열어 둔 동안 한 시간마다 실행을 켭니다.
임계값이 숫자가 아님"임계는 0 이상의 숫자여야 합니다" 안내0 이상의 숫자로 고쳐 저장합니다.

조회조건

필드필수기본값전달 방식
회사코드필수1000필터(같음)
시작 기간 · 종료 기간-2026.04 · 2026.09필터(범위). 시작이 종료보다 늦으면 안내 메시지
차원 값-전체(비움)선택한 차원 값을 필터로 전달. 비우면 전체
표시 항목-결제 원화 금액브라우저에서 선택한 측정값을 읽음(서버 재조회 없음)
금액 단위-백만원표시만 바꿈. 원 · 천원 · 백만원 · 억원
비교-실적만예정 대비 차이로 바꾸면 예정 · 차이 · 차이율 열이 붙음
단계 보기-끔켜면 앞 열 대비 증감으로 표시
역할-CFO임원 요약의 기준 차원과 표시 항목을 바꿈
표시 행 수-14피벗 한 화면에 그리는 행 수
원천 라인 읽는 단위-500드릴스루에서 한 번에 읽는 라인 수

결과 컬럼

컬럼 · 측정값의미산출식
인식 원화 금액송장 인식 시점 환율로 환산한 원화라인 합계(593.02억원)
결제 원화 금액결제 시점 환율로 환산한 원화라인 합계(600.21억원)
환율 영향(결제−인식)인식에서 결제까지 환율 차이로 달라진 원화결제 원화 − 수수료 − 인식 원화(528.0백만원)
결제 수수료결제에 든 수수료라인 합계(191.2백만원)
외환차익 · 외환차손환율 영향이 줄인 몫과 늘린 몫차손 626.8 · 차익 98.8백만원, 차손 − 차익 = 환율 영향
환율 영향률(%)환율 영향의 상대 크기환율 영향 ÷ 인식 원화 × 100(0.89%)
외환차손 비중(%)차손이 차손과 차익 합에서 차지하는 비율차손 ÷ (차손 + 차익)(86.38%)
수수료율(%)결제 원화 대비 수수료수수료 ÷ 결제 원화 × 100(0.32%)
물대 결제액(수수료 제외)결제 원화에서 수수료를 뺀 값결제 원화 − 수수료
순 환율 영향차손에서 차익을 뺀 값차손 − 차익
예정 · 차이 · 차이율 · 사유차이 모드에서만 붙는 열차이 = 실적 − 예정, 차이율 = 차이 ÷ 예정

좁은 화면에서 달라지는 것

  • 행 이름 열이 좁아지고(9rem) 값 열은 그대로 읽히도록 가로 스크롤 안에서 움직입니다.
  • 차원 값 선택 같은 대화 상자가 화면 전체로 열립니다.
  • 차트와 피벗이 가로로 나란히 놓이지 않고 위아래로 쌓이며, 차트 폭 손잡이는 숨겨집니다.
  • 임원 요약 지표는 두 개씩 줄바꿈되어 가로 넘침이 생기지 않습니다.

파일 구성

앱 폴더
├─ Component.js · manifest.json · index.html     앱 진입, 모델 선언(서비스 상대 경로)
├─ view/Main.view.xml                             화면 한 장(조회 조건 · 축 보드 · 임원 요약 · 차트와 피벗)
│   └─ fragment/                                 AI 분석 · 에이전트 · 레이아웃 · 변동 사유 · 라인 보기 대화 상자
├─ controller/                                    Main 컨트롤러 · 기본 컨트롤러
├─ model/                                         큐브 재집계 · SVG 차트 · 서식 · 레이아웃 직렬화 · PPTX 보고서 · 오류 처리
├─ i18n/                                          화면 문구(한국어)
└─ css/                                           화면 보조 스타일(sap_horizon 의미 색 사용)

SAP 표준 기능 확장 포인트

표준 실행은 SAP 표준 T-code가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 결제를 실행하고 전표를 만드는 일, 법정 · 감사 · 세무 신고에 쓰는 숫자를 확정하는 일은 계속 표준 화면에서 합니다. 이 화면은 그 결과를 같은 필드로 읽어 여러 축으로 묶고 대사합니다.

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

하고 싶은 일표준 화면으로 충분한 것이 앱이 더하는 관점
공급사 한 곳의 결제 내역 확인공급업체 개별 항목(FBL1N)에서 문서별로 열람공급사 · 통화 · 결제월 · 헷지를 한 표의 축으로 묶어 비교
전표 한 건의 내용 확인전표 조회(FB03)에서 헤더와 라인 확인칸을 누르면 그 금액을 만든 결제 라인들이 합계와 함께 열림
결제 실행자동 지급 프로그램(F110)실행은 하지 않고 결제 이후의 환율 영향을 분석
송장 입력과 인식송장 입력(MIRO)인식 환율과 결제 환율을 같은 행에 놓고 환율 영향을 계산
구매오더 조건 확인구매오더 조회(ME23N)예정 결제 원화를 구매오더 조건에서 읽어 실적과 같은 축으로 비교
기말 외화 평가외화 평가(FAGL_FCV)결제 시점의 차이만 다루므로 평가와 겹치지 않음
차이를 요인으로 나누기표준 T-code 범위 밖(보통 엑셀로 작성)여섯 요인으로 가르고 합이 총차이와 같은지 검산

T-code 별 연계 지점

T-code이름연계
FBL1N공급업체 개별 항목같은 데이터 공급사 계정의 결제 · 청산 문서. 대사 지점 공급사별 · 결제월별 결제 원화 합계를 이 화면의 칸과 맞춥니다. 오가는 법 이 화면의 칸 → 결제 라인의 문서번호로 FBL1N에서 같은 공급사 문서를 엽니다. 표준에 남길 일 지급 · 청산 처리와 법정 대응.
FB03전표 조회같은 데이터 결제 전표의 외화 금액 · 원화 금액 · 환율 · 외환차손익 라인. 대사 지점 라인의 환율 영향이 전표의 외환차손익과 같은지 봅니다. 오가는 법 이 화면의 결제 문서번호 → FB03. 표준에 남길 일 전표 수정과 반제.
F110자동 지급 프로그램같은 데이터 지급 실행 결과로 생긴 결제 문서. 대사 지점 지급 실행 건수와 이 화면의 결제 문서 수를 비교합니다. 오가는 법 이 화면은 실행하지 않고, 결제 후 결과만 읽습니다. 표준에 남길 일 지급 실행 전반.
MIRO송장 입력같은 데이터 송장 인식 시점의 외화 금액과 환율. 대사 지점 인식 환율 · 인식 원화가 송장 입력 당시 값과 같은지 봅니다. 오가는 법 이 화면의 인식일 · 인식 환율 → 송장 문서. 표준에 남길 일 송장 입력과 검증.
ME23N구매오더 조회같은 데이터 구매오더 품목의 수량 · 단가 · 통화 · 예정 납기. 대사 지점 예정 라인 합계가 구매오더 조건과 같은지 봅니다. 오가는 법 라인의 구매오더번호 → ME23N. 표준에 남길 일 구매오더 변경.
FAGL_FCV외화 평가같은 데이터 보고기간 말 외화 화폐성 항목의 평가 결과. 대사 지점 이 화면의 결제 시점 차이와 평가 차이가 이중으로 잡히지 않는지 구분해 봅니다. 오가는 법 이 화면은 결제 시점 차이 전용입니다. 표준에 남길 일 기말 평가 실행.
MB51자재 문서 목록같은 데이터 입고 자재 문서의 수량 · 일자. 대사 지점 입고 수량과 결제 수량이 맞는지 봅니다(이월 라인 확인). 오가는 법 자재 · 결제 문서 → MB51. 표준에 남길 일 입고 처리와 재고 이동.

기존 리포트를 없애야 하나요? 아니요. 운영 전환 뒤에도 표준 T-code와 기존 리포트는 법정 · 감사 · 세무 신고 대응과 문서 단위 확인에 그대로 둡니다. 이 화면은 처음 몇 기간 동안 두 숫자를 나란히 놓고 맞춰 보는 용도로 쓰다가, 대사 체계가 자리 잡으면 월 단위 분석과 점검의 입구가 됩니다.

기준서 요구사항과 화면의 대응 — IAS 21 환율변동효과(K-IFRS 제1021호)

기준서의 요구사항은 명칭 수준으로만 적습니다. 이 화면은 분류 · 집계 · 대사를 돕는 조회 · 점검 도구이며, 요구사항을 어떻게 적용하는지의 판단은 회사와 감사인이 합니다.

기준서요구사항대응 기능원천 데이터비고
IAS 21 환율변동효과(K-IFRS 제1021호)외화 거래의 최초 인식(거래일 환율)인식 환율 · 인식 원화 금액송장 인식 라인환율 유형 · 일자는 운영 시점에 확정 필요
IAS 21 환율변동효과(K-IFRS 제1021호)화폐성 항목 결제 시점의 환율 차이결제 환율 · 환율 영향 · 외환차익 · 외환차손결제(청산) 라인손익 인식과 표시 판단은 회사와 감사인
IAS 21 환율변동효과(K-IFRS 제1021호)보고기간 말 화폐성 항목의 마감 환율 환산이 화면의 범위 밖(외화 평가 T-code 연계)-결제 시점 차이와 겹치지 않는지 구분 필요

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

S/4HANA의 분석은 CDS 큐브와 분석 쿼리를 중심으로, 그 위에 Fiori 분석 앱과 Analysis for Office 같은 도구를 얹는 구조입니다. 이 화면이 읽는 데이터도 같은 층(큐브 → 쿼리 → 서비스)으로 만들 수 있게 CDS 구성을 아래 절에 코드로 실었습니다. 표준 분석 도구는 정해진 쿼리를 열고 필터링하는 데 강하고, 이 화면은 한 번 읽은 큐브를 브라우저에서 축을 끌어 다시 묶고 칸에서 라인까지 내려가며 요인분해와 변동 사유 · 에이전트를 한 화면에 묶는 쪽에 있습니다. 둘은 같은 큐브를 바라보므로 쓰임에 따라 나란히 둘 수 있습니다. 구체적인 Fiori 앱 이름은 확인하지 못한 것은 적지 않았습니다.

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

자리무엇을 바꾸나손대는 사람주의
기준 매핑 테이블결제 소요 구간 경계, 헷지 구분 코드, 결제 조건 코드의 이름현업 · 자금팀변경 이력과 이송 규칙을 정해 둡니다.
환율 유형 · 환산 일자인식 · 결제 환율을 읽는 환율 유형과 기준일회계팀표준 화면의 환율과 같은지 대사합니다.
추가 차원(확장 필드)프로젝트 · 사업부 같은 확장 필드를 차원으로 추가IT큐브와 쿼리, 서비스의 차원 목록이 함께 늘어납니다.
계산항목 식환율 영향률 외에 회사 고유 비율 추가자금팀 · IT식은 서비스가 정하므로 화면 수정은 필요 없습니다.
감시 규칙임계값 · 받을 역할 · 규칙 추가자금팀규칙을 늘려도 하루 한 번 실행 한도는 그대로입니다.
권한회사코드 · 공급사 단위 접근 제어보안 · 권한 담당집계 단계에 걸어야 합계로 새지 않습니다.
BAdI · 사용자 출구결제 문서에 회사 고유 항목을 남기는 경우 그 값을 큐브로 전달IT표준 필드로 충분한지 먼저 확인합니다.

CDS 구성

아래는 운영 데이터로 갈 때의 구성 스케치입니다. 이름은 기능을 뜻하는 영문으로 짓고, 기준 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순서로 나눕니다. 코드는 구조를 보여 주기 위한 것이며 실제 환경의 문서 구조와 환율 설정에 맞춰 확인이 필요합니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준ZIMPFX_MAP소요 구간 · 헷지 구분 코드를 분석 축 값으로 바꾸는 매핑구간 경계를 코드 수정 없이 현업이 유지하려고
차원ZI_ImportPayVendor공급사와 이름 · 국가차원 값 선택과 텍스트를 한 곳에서 관리하려고
큐브(원천)ZI_ImportPayFxLine결제 품목 라인 — 인식 라인과 결제 라인을 이어 붙임라인식 대사의 기준이 되는 가장 작은 단위
큐브(예정)ZI_ImportPayFxPlan구매오더 조건에서 읽은 예정 결제 원화예정과 실적이 같은 차원으로 비교되도록
큐브ZI_ImportPayFxCube라인을 차원 조합 × 측정값으로 집계, 통화 환산환율 차이 계산을 한 곳에서 한 번만
쿼리ZC_ImportPayFxQuery행 · 열 축, 필터, 환율 영향률 같은 계산항목화면과 분석 도구가 같은 쿼리를 읽도록
권한ZC_ImportPayFxQuery(DCL)회사코드 단위 접근 제어합계로 새지 않게 집계 단계에 걸려고
서비스ZUI_ImportPayFx쿼리와 차원을 OData로 노출화면은 서비스만 알면 되도록

① ZIMPFX_MAP — 기준 매핑 테이블

결제 소요일수를 "15일 이내 · 16~30일 · 31~60일 · 61~90일 · 91일 이상" 같은 구간으로, 헷지 구분 코드를 "선물환 적용 · 부분 적용 · 미적용"으로 바꾸는 규칙입니다. 구간 경계가 운영 중에 바뀌어도 뷰를 고치지 않고 이 테이블만 고치면 됩니다.

" ──────────────────────────────────────────────────────────
" ZIMPFX_MAP — 분석 기준 매핑
" 역할 : 소요 구간(BAND) · 헷지 구분(HEDG) 코드를 축 값으로 변환
" 이렇게 나눈 이유 : 구간 경계와 헷지 코드 이름을 현업이 직접 유지하도록
" ──────────────────────────────────────────────────────────
@EndUserText.label : '수입 결제 환차손익 분석 기준 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zimpfx_map {
  key client   : abap.clnt not null;
  key map_type : abap.char(4) not null;    " BAND : 소요 구간 / HEDG : 헷지 구분
  key map_code : abap.char(10) not null;   " B1~B5 / NONE · PART · FWD
  day_from     : abap.int4;                " 구간 시작일수 (BAND 에서만 사용)
  day_to       : abap.int4;                " 구간 종료일수
  label        : abap.char(40);            " 화면에 보이는 이름
}

② ZI_ImportPayVendor — 공급사 차원

차원은 값과 이름을 한 곳에서 내려 주는 뷰입니다. 이 뷰가 있으면 화면의 "차원 값 선택" 대화 상자와 피벗 행 이름이 같은 텍스트를 씁니다.

" ──────────────────────────────────────────────────────────
" ZI_ImportPayVendor — 공급사 차원
" 역할 : 공급사 코드 + 이름 + 국가
" 이렇게 나눈 이유 : 큐브가 이름까지 들고 다니면 행 수가 늘어난다
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '공급사 차원'
@Analytics.dataCategory: #DIMENSION
@ObjectModel.representativeKey: 'Supplier'
define view entity ZI_ImportPayVendor
  as select from lfa1
{
      @ObjectModel.text.element: [ 'SupplierName' ]
  key lifnr as Supplier,
      @Semantics.text: true
      name1 as SupplierName,
      land1 as Country
}

③ ZI_ImportPayFxLine — 결제 품목 라인

이 뷰에서 "라인식"의 재료가 정해집니다. 송장 인식 라인의 원화 금액, 결제(청산) 라인의 원화 금액, 수수료를 한 행에 두어 결제 원화 − 수수료 − 인식 원화 = 환율 영향을 라인마다 대사할 수 있게 합니다. 검증용 샘플 데이터에서 3,189건 모두 차이 0으로 맞춘 식이 바로 이것입니다. 청산 연결 조건과 수수료 원천은 운영 문서 구조에 맞춰 확정이 필요합니다.

" ──────────────────────────────────────────────────────────
" ZI_ImportPayFxLine — 수입 결제 품목 라인
" 역할 : 인식 라인(inv) + 결제 라인(pay) → 라인 단위 환율 영향
" 이렇게 나눈 이유 : 라인식 대사의 기준을 큐브와 분리해 두면
"                    큐브 합계가 틀릴 때 라인에서 바로 원인을 찾는다
" 주의 : 청산 연결 조건은 운영 데이터 구조에서 확인 필요
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 결제 품목 라인'
define view entity ZI_ImportPayFxLine
  as select from acdoca as inv
    inner join   acdoca as pay
      on  pay.rbukrs = inv.rbukrs
      and pay.belnr  = inv.augbl
      and pay.lifnr  = inv.lifnr
  association [0..1] to ZI_ImportPayVendor as _Supplier
    on $projection.Supplier = _Supplier.Supplier
{
  key inv.rbukrs                              as CompanyCode,
  key inv.belnr                               as InvoiceDocument,
  key inv.docln                               as InvoiceItem,
      pay.belnr                               as PaymentDocument,
      inv.lifnr                               as Supplier,
      inv.rwcur                               as TransCurrency,
      inv.budat                               as RecognitionDate,
      pay.budat                               as PaymentDate,
      @Semantics.amount.currencyCode: 'LocalCurrency'
      inv.hsl                                 as BookAmtLC,      " 인식 원화
      @Semantics.amount.currencyCode: 'LocalCurrency'
      pay.hsl                                 as PayAmtLC,       " 결제 원화
      @Semantics.amount.currencyCode: 'LocalCurrency'
      cast( 0 as abap.curr( 23, 2 ) )         as FeeAmtLC,       " 수수료 : 수수료 라인 연결 후 채움(확인 필요)
      inv.rhcur                               as LocalCurrency,
      _Supplier
}

④ ZI_ImportPayFxPlan — 예정 결제 원화

예정 대비 차이의 "예정"은 구매오더 조건에서 읽습니다. 구매오더 통화 금액을 예정 환율로 원화에 환산해 두면 실적과 같은 차원(공급사 · 통화 · 결제월)으로 비교됩니다. 예정 환율을 무엇으로 둘지는 운영 시점에 정할 일입니다.

" ──────────────────────────────────────────────────────────
" ZI_ImportPayFxPlan — 구매오더 조건 기반 예정 결제 원화
" 역할 : 구매오더 품목의 외화 금액을 예정 환율로 원화 환산
" 이렇게 나눈 이유 : 예정 환율 가정을 실적 계산과 섞지 않으려고
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 결제 예정'
define view entity ZI_ImportPayFxPlan
  as select from ekpo
    inner join   ekko on ekko.ebeln = ekpo.ebeln
{
  key ekpo.ebeln                                   as PurchaseOrder,
  key ekpo.ebelp                                   as PurchaseOrderItem,
      ekko.bukrs                                   as CompanyCode,
      ekko.lifnr                                   as Supplier,
      ekko.waers                                   as TransCurrency,
      @Semantics.amount.currencyCode: 'LocalCurrency'
      currency_conversion(
        amount             => ekpo.netwr,
        source_currency    => ekko.waers,
        target_currency    => cast( 'KRW' as abap.cuky ),
        exchange_rate_date => ekko.bedat,
        exchange_rate_type => 'M',
        error_handling     => 'SET_TO_NULL' )      as PlanPayAmtLC,
      cast( 'KRW' as abap.cuky )                   as LocalCurrency
}

⑤ ZI_ImportPayFxCube — 큐브

환율 차이 계산이 한 번만 일어나는 곳입니다. 라인을 차원 조합으로 묶고 측정값(인식 · 결제 원화, 환율 영향, 수수료, 외환차익 · 외환차손)을 합산합니다. 외환차손과 외환차익은 환율 영향의 부호에 따라 갈라 합산하므로, 차손 − 차익 = 환율 영향이 항상 성립합니다.

" ──────────────────────────────────────────────────────────
" ZI_ImportPayFxCube — 수입 결제 환차손익 큐브
" 역할 : 결제 라인 → 차원 조합 × 측정값 6개
" 이렇게 나눈 이유 : 차손 · 차익 구분과 합산을 한 곳에서 해
"                    화면 · 보고서 · 에이전트가 같은 값을 쓰게 한다
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 결제 환차손익 큐브'
@Analytics.dataCategory: #CUBE
define view entity ZI_ImportPayFxCube
  as select from ZI_ImportPayFxLine
{
      @ObjectModel.foreignKey.association: '_Supplier'
  key Supplier,
  key CompanyCode,
  key TransCurrency,
  key substring( PaymentDate, 1, 6 )           as PaymentMonth,
      @Semantics.currencyCode: true
      LocalCurrency,

      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( BookAmtLC )                         as BookAmt,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( PayAmtLC )                          as PayAmt,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( PayAmtLC - FeeAmtLC - BookAmtLC )   as FxDiff,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( FeeAmtLC )                          as FeeAmt,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( case when ( PayAmtLC - FeeAmtLC - BookAmtLC ) > 0
                then ( PayAmtLC - FeeAmtLC - BookAmtLC ) else 0 end )
                                               as LossAmt,   " 외환차손
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( case when ( PayAmtLC - FeeAmtLC - BookAmtLC ) < 0
                then 0 - ( PayAmtLC - FeeAmtLC - BookAmtLC ) else 0 end )
                                               as GainAmt,   " 외환차익
      _Supplier
}
group by Supplier, CompanyCode, TransCurrency,
         substring( PaymentDate, 1, 6 ), LocalCurrency

⑥ ZC_ImportPayFxQuery — 분석 쿼리

쿼리는 어떤 차원이 행과 열에 놓이는지, 어떤 필터가 필수인지, 어떤 계산항목을 같이 내려 줄지를 정합니다. 환율 영향률처럼 칸마다 같은 식으로 계산되는 값은 여기서 식으로 둡니다. 회사코드는 필수 필터로 둬 조회 범위가 무제한이 되지 않게 합니다.

" ──────────────────────────────────────────────────────────
" ZC_ImportPayFxQuery — 분석 쿼리(Consumption)
" 역할 : 기본 축 · 필수 필터 · 계산항목 정의
" 이렇게 나눈 이유 : 큐브를 건드리지 않고 화면별 기본 배치를 바꾼다
" ──────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수입 결제 환차손익 분석'
@Analytics.query: true
define view entity ZC_ImportPayFxQuery
  as select from ZI_ImportPayFxCube
{
      @AnalyticsDetails.query.axis: #ROWS
      @AnalyticsDetails.query.display: #KEY_TEXT
  key Supplier,
      @AnalyticsDetails.query.axis: #ROWS
  key TransCurrency,
      @AnalyticsDetails.query.axis: #COLUMNS
  key PaymentMonth,
      @Consumption.filter: { mandatory: true, selectionType: #SINGLE, multipleSelections: false }
  key CompanyCode,

      @AnalyticsDetails.query.axis: #COLUMNS
      PayAmt,
      @AnalyticsDetails.query.axis: #COLUMNS
      FxDiff,
      LossAmt,
      GainAmt,
      FeeAmt,
      @AnalyticsDetails.query.formula: 'FxDiff / BookAmt * 100'
      @EndUserText.label: '환율 영향률(%)'
      @AnalyticsDetails.query.decimals: 2
      FxDiff as FxRatePct
}

⑦ ZC_ImportPayFxQuery — 권한(DCL)

권한은 집계 단계에 겁니다. 드릴스루 라인에만 권한을 걸면 합계에서 다른 조직의 숫자를 뺄셈으로 역산할 수 있기 때문입니다. 회사코드 단위에서 시작해 필요하면 공급사 단위로 좁힙니다.

" ──────────────────────────────────────────────────────────
" ZC_ImportPayFxQuery — 접근 제어(DCL)
" 역할 : 회사코드 단위 조회 권한(표시 활동 03)
" 이렇게 나눈 이유 : 쿼리 정의와 권한 정의를 따로 이송 · 변경한다
" ──────────────────────────────────────────────────────────
@EndUserText.label: '수입 결제 환차손익 분석 권한'
@MappingRole: true
define role ZC_ImportPayFxQuery {
  grant select on ZC_ImportPayFxQuery
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

⑧ ZUI_ImportPayFx — 서비스 정의와 바인딩

서비스 정의는 쿼리와 차원을 OData로 노출합니다. 바인딩은 OData V2 UI 유형으로 게시하고 서비스를 활성화한 뒤, 앱 매니페스트의 서비스 주소를 이 서비스로 바꾸면 화면이 운영 데이터를 읽습니다.

" ──────────────────────────────────────────────────────────
" ZUI_ImportPayFx — 서비스 정의
" 역할 : 분석 쿼리와 공급사 차원 노출
" 이렇게 나눈 이유 : 화면은 서비스 주소만 알면 되고 뷰 구조를 몰라도 된다
" ──────────────────────────────────────────────────────────
@EndUserText.label: '수입 결제 환차손익 분석 서비스'
define service ZUI_ImportPayFx {
  expose ZC_ImportPayFxQuery as ImportPayFx;
  expose ZI_ImportPayVendor  as Supplier;
}

" 서비스 바인딩 : 바인딩 유형 'OData V2 - UI' 로 만들고 [게시]
" 서비스 활성화 : /IWFND/MAINT_SERVICE (또는 바인딩 게시)
" 화면 연결     : 앱 매니페스트의 서비스 주소를 위 서비스로 교체

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래 항목은 코드가 아니라 합의이고, 합의가 끝나야 위 뷰들이 같은 숫자를 냅니다.

해야 할 일무엇을 정하나정하지 않으면누가
환율 유형과 환산 시점인식 환율과 결제 환율을 어느 환율 유형 · 어느 일자(거래일 · 결제일)로 볼지인식 원화와 결제 원화가 회사의 환산 기준과 달라 첫 대사에서 막힙니다.회계팀 · 자금팀
결제 라인 원천 확정송장 인식 라인과 결제(청산) 라인을 어느 문서 구조에서 이어 붙일지라인식 대사(3,189건 기준)가 맞지 않아 어디서 어긋났는지 찾기 어렵습니다.회계팀 · 구매팀
부호 규칙외환차손 · 외환차익과 환율 영향의 부호, 화면 표시 방향표준 화면과 부호가 반대로 보여 숫자를 대조할 때 혼선이 생깁니다.회계팀
예정(기준) 원천구매오더 조건에서 읽을지, 자금 계획에서 읽을지, 예정 환율을 무엇으로 둘지예정 대비 차이의 기준이 사람마다 달라 요인분해 결과를 논의하기 어렵습니다.구매팀 · 자금팀
차원 범위와 매핑결제 소요 구간 경계, 헷지 구분 코드, 결제 조건 코드를 분석 축 값으로 바꾸는 규칙차원이 코드 그대로 나오거나 구간 경계가 바뀔 때마다 뷰를 고쳐 다시 이송해야 합니다.현업 · 자금팀
권한 설계회사코드 · 공급사 단위로 누가 어디까지 보는지전사 합계와 자기 몫의 차이로 다른 조직의 숫자가 드러납니다.보안 · 권한 담당
성능 기준조회 기간 상한, 필수 파라미터, 응답 시간 목표기간 제한 없는 조회가 쌓여 큐브를 읽는 시간이 길어집니다.IT · Basis
대사 체계표준 T-code(FBL1N · FB03)와 맞출 항목, 주기, 허용 차이화면 숫자와 표준 화면 숫자가 달라 보일 때 기준이 없습니다.회계팀
이송(TR) 순서기준 테이블 → 차원 → 큐브 → 쿼리 → 권한 → 서비스권한 없는 쿼리가 먼저 올라가거나 큐브가 없는 쿼리가 올라가 활성화가 실패합니다.IT
서비스 활성화와 화면 연결서비스 바인딩 게시, 서비스 활성화(/IWFND/MAINT_SERVICE), 앱 매니페스트의 서비스 주소 교체화면이 서비스를 찾지 못해 오류 메시지만 뜹니다.IT · Basis
배치 등록에이전트 점검을 돌릴 주기와 받을 역할화면을 여는 사람이 없으면 점검이 돌지 않습니다.자금팀 · IT

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

검증용 샘플 데이터(가상 공급사 12곳 · 결제월 2026.04~2026.09 · 가정 환율 · 통화 USD · EUR · JPY · CNY · 회사코드 1000)로 대사식을 전수로 돌렸습니다. 원천 결제 품목 라인은 3,189건(결제 문서 1,640건 + 이월(미결제) 181건 라인), 큐브는 9,816행(칸 1,636개 조합 × 측정값 6), 예정은 9,360행입니다.

대사식검사 건수차이비고
큐브 합계 = 원천 라인 합계(측정값 6개)60인식 · 결제 원화, 환율 영향, 수수료, 외환차익 · 외환차손
통화별 큐브 합계 = 통화별 원천 합계240통화 4개 × 측정값 6개
결제 원화 − 수수료 − 인식 원화 = 환율 영향(라인식)3,1890원천 결제 품목 라인 전수
외환차손 − 외환차익 = 환율 영향3,1890원천 결제 품목 라인 전수
수량 × 외화 단가 = 외화 금액3,189최대 0.005소수 둘째 자리 반올림 범위 안
예정 합계 = 예정 라인 합계60예정 9,360행 기준
결제월 요약 = 큐브 재집계60결제월 2026.04~2026.09
요인 합 = 총차이(검산)전체 범위0원합 +9,935,854,542원
축 배치 6종의 총합이 같음60축을 바꿔도 재조회 0건
칸 드릴스루: 칸의 값 = 결제 라인 합120확인한 12칸 모두 일치

아래 두 가지는 의도적 예외입니다. 대사 차이로 세지 않고 따로 기록해 두었습니다.

구분건수왜 예외인가처리
이월(미결제) 라인181건결제 수량이 0으로 들어가는 라인이라 수량 요인이 줄어드는 방향으로 나옵니다.대사 차이와 분리해 따로 기록
계획 외(미계획) 결제 라인491건구매오더 예정에 없던 결제 라인이라 미계획 결제 요인으로 모입니다.대사 차이와 분리해 따로 기록

같은 숫자를 도입 포인트의 사례(예정 대비 +99.36억원, 요인 합 − 총차이 = 0원)에서도 씁니다. 화면 쪽은 별도 자동 실행으로 축 배치 6종의 총합이 같은지, 칸의 값과 라인 합이 같은지를 다시 확인했습니다.

운영 데이터로 갈 때

결제 라인이 수천만 건으로 늘면 화면이 한 번에 읽는 큐브의 크기가 문제가 됩니다. 검증용 샘플 데이터에서는 큐브 9,816행을 한 번에 읽어 브라우저에서 다시 묶지만, 운영에서는 아래 순서로 범위를 줄입니다.

  1. 집계 위치 — 라인 → 차원 조합 집계는 데이터베이스 안(CDS 큐브)에서 끝내고, 화면은 집계된 칸만 읽습니다.
  2. 파라미터 필수화 — 회사코드와 결제월 범위를 필수로 두고, 기간 상한을 정합니다.
  3. 인덱스와 파티션 — 결제일 · 회사코드 · 공급사 조합에 맞춰 접근 경로를 확인합니다. 구체적 방식은 데이터 규모를 보고 정합니다.
  4. 화면 상한 — 열 36개 · 행 노드 1,500개 상한과 드릴스루 읽는 단위(500건)는 큐브가 커져도 브라우저가 느려지지 않게 하는 안전장치입니다.
  5. 응답 시간 기준 — 조회 한 번의 목표 시간을 정하고, 넘으면 필수 필터를 더 요구하는 쪽으로 조정합니다. 수치는 운영 환경에서 측정한 뒤 정합니다.

자주 묻는 질문

숫자와 산식, 화면과 조작, 분석 기능, 도입과 운영 순서로 모았습니다. 숫자는 모두 검증용 샘플 데이터 기준입니다.

숫자와 산식

환율 영향은 어떻게 계산되나요?

결제 원화에서 수수료와 인식 원화를 뺀 값입니다. 인식 원화는 송장을 인식한 시점 환율로, 결제 원화는 결제 시점 환율로 환산한 금액입니다. 검증용 샘플 데이터 기준 합계는 인식 원화 593.02억원, 결제 원화 600.21억원, 수수료 1.91억원이고 환율 영향은 5.28억원입니다. 이 식은 라인 3,189건 모두에서 차이 0으로 대사했습니다.

외환차손과 외환차익은 어떻게 나뉘나요?

외환차손과 외환차익을 따로 합산하고, 둘의 차(차손 − 차익)가 환율 영향과 같은지 라인 3,189건 모두에서 맞춰 봅니다. 샘플 기준 외환차손은 6.27억원, 외환차익은 0.99억원이며 차이는 5.28억원으로 환율 영향과 같습니다. 어느 항목에 담을지의 회계 판단은 회사와 감사인이 합니다.

예정 대비 +99.36억원은 무엇으로 나뉘나요?

수량 −25.14억원, 외화 단가 +3.68억원, 인식 환율 +19.58억원, 결제 환율 +4.40억원, 결제 수수료 +0.07억원, 미계획 결제 +96.75억원입니다. 합은 +99.36억원으로 총차이와 같습니다. 가장 큰 몫은 계획 외 결제 491라인의 미계획 결제이며, 이 라인들은 사유 확인이 필요한 항목입니다.

요인의 합이 총차이와 같다는 것은 어떻게 보장되나요?

예정에서 시작해 수량 → 외화 단가 → 인식 환율 → 결제 환율 → 결제 수수료 → 미계획 결제 순으로 실적 값을 하나씩 대입하기 때문에, 마지막 단계에서 실적이 되고 각 단계의 변화량의 합은 총차이와 같아집니다. 화면은 그 등식을 "검산: 요인 합 − 총차이 = 0원"으로 매번 표시합니다. 0이 아니면 점검이 필요한 신호입니다.

이월(미결제) 라인과 계획 외 결제 라인은 어떻게 다루나요?

이월 181건은 결제 수량이 0으로 들어가는 라인이라 수량 요인이 줄어드는 방향으로 나오고, 계획 외 결제 491건은 구매오더 예정에 없는 라인이라 미계획 결제 요인으로 모입니다. 두 가지는 대사 차이로 세지 않고 의도적 예외로 따로 기록합니다. 숫자가 틀린 것이 아니라 성격이 다른 라인이라는 뜻입니다.

수량 × 외화 단가와 외화 금액이 최대 0.005 어긋난다는데 문제가 아닌가요?

라인 3,189건의 수량 × 외화 단가가 외화 금액과 최대 0.005 차이였고, 이는 소수 둘째 자리 반올림 범위 안입니다. 원 단위 합계와 환율 영향 같은 핵심 대사식은 모두 차이 0입니다. 외화 금액을 반올림하는 규칙이 회사마다 다를 수 있어 운영 시점에 반올림 기준을 확인하시길 권합니다.

금액 단위를 바꾸면 합계가 달라지나요?

아닙니다. 금액 단위(원 · 천원 · 백만원 · 억원)는 표시만 바꾸고 내부 값은 원 단위 그대로입니다. 표시할 때 반올림하므로 칸을 눈으로 더하면 합계와 0.1 단위로 어긋나 보일 수 있지만, 합계는 원 단위 값의 합입니다.

화면과 조작

축을 바꾸면 서버를 다시 부르나요?

아닙니다. 조회할 때 큐브를 한 번 읽어 칸 단위로 묶어 두고, 축을 바꿀 때는 브라우저에서 그 칸을 다시 합산합니다. 검증에서 축 배치 6종을 바꿔 보며 총합이 같고 서버 재조회가 0건임을 확인했습니다. 조회 조건(결제월 범위나 차원 값)을 바꾸면 그때는 다시 조회합니다.

행 축과 열 축에는 몇 개까지 놓을 수 있나요?

행 축 3개, 열 축 2개까지입니다. 초과해서 놓으려 하면 안내 메시지가 뜨고 배치는 바뀌지 않습니다. 열이 36개를 넘거나 행 노드가 1,500개를 넘으면 앞부분만 그리고 안내 줄로 범위를 줄이도록 알려 줍니다. 상한은 화면을 지키는 안전장치이며 합계에는 영향이 없습니다.

칸을 눌러 나오는 라인은 모두 읽어야 하나요?

라인이 읽는 단위(기본 500건)보다 많으면 일부만 먼저 읽고 "아직 일부만 읽음"으로 표시합니다. 더 읽기나 모두 읽기를 누르면 이어서 읽고, 모두 읽은 뒤에야 칸의 값과 라인 합이 같은지 알려 줍니다. 검증에서 확인한 12칸은 모두 일치했습니다.

레이아웃은 무엇이 저장되나요?

행 축과 열 축 배치, 조회 조건, 표시 항목과 금액 단위, 표시 행 수, 머리 영역의 접힘 상태가 저장됩니다. 기본으로 지정하고 "열 때 자동 조회"를 켜면 화면을 열자마자 조회된 상태로 시작합니다. 검증에서 새로 열었을 때 같은 모양으로 복원되는 것을 확인했습니다.

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

쓸 수 있습니다. 390px 폭에서 패널이 접히고 차트와 피벗이 위아래로 쌓이며 대화 상자는 화면 전체로 열립니다. 다만 열이 많은 피벗은 가로 스크롤이 필요하므로 열 축을 하나로 줄여 보시길 권합니다.

분석 기능

AI 분석은 숫자도 만들어 내나요?

아닙니다. 금액과 비율은 서비스가 계산한 값만 쓰고, 해설은 그 값을 문장으로 옮깁니다. 기본은 외부 AI 서비스를 부르지 않는 규칙 기반 해설이고 모델 연결은 꺼져 있습니다. 모델을 켜더라도 숫자는 바뀌지 않으며, 각 점검 대상에는 근거(축 · 값 · 라인 수 · 주된 요인)가 붙어 있어 따라가 볼 수 있습니다.

PPTX 보고서에는 무엇이 담기나요?

AI 분석 창의 PPTX 보고서 버튼을 누르면 지금 보는 범위의 요약과 표, 차트가 브라우저 안에서 파일로 만들어져 내려받아집니다. 서버에 파일을 남기지 않습니다. 보고서의 숫자는 화면의 숫자와 같은 값입니다.

변동 사유는 축을 바꾸면 사라지나요?

사라지지 않습니다. 사유는 조회 범위와 행 경로에 묶여 저장되므로 축을 바꾸거나 트리를 다시 펼쳐도 같은 행이면 따라옵니다. 사유는 500자까지 적을 수 있고 지울 수도 있습니다. 사유는 AI 분석의 점검 대상에서 "사유 있음 · 없음"으로 표시됩니다.

AI 에이전트는 무엇을 하고 얼마나 자주 도나요?

감시 규칙 5개(공급사 환율 영향률 상한 1% · 통화별 환율 요인 1억원 · 헷지 미적용 외환차손 6천만원 · 결제 원화 예정 대비 초과 12% · 장기 결제 구간 환율 노출 4천만원)를 판정해 걸린 항목을 역할별 대기함에 올립니다. 실행은 하루 한 번으로 제한되고 서비스가 판정하며, 실행 기록이 남습니다. 열어 둔 동안 한 시간마다 실행하는 스위치는 기본이 꺼짐이고, 임계값은 화면에서 고칩니다.

계산항목은 차원과 어떻게 다른가요?

차원은 라인에 들어 있는 값으로 묶어 행을 만들고, 계산항목은 합계가 정해진 뒤 칸마다 식을 적용해 만든 값입니다. 환율 영향률 · 외환차손 비중 · 수수료율 · 물대 결제액 · 순 환율 영향이 그렇습니다. 식은 서비스가 내려 주므로 어느 축에서나 같은 식으로 계산됩니다.

도입과 운영

누가 쓰고 어떤 효과를 기대할 수 있나요?

자금 · 회계 담당자가 결제 환율 차이를 점검할 때, 구매 · 물류 책임자가 공급사와 결제 소요 구간별로 읽을 때, CFO가 통화별 영향을 볼 때 씁니다. 같은 큐브를 역할별 기준 축으로 읽으므로 부서 간 숫자 맞추기가 줄어드는 방향의 효과를 기대합니다. 시간 절감률 같은 효과 수치는 이 글에 싣지 않았고, 도입 후 측정할 항목입니다.

언제부터 어디까지 적용할 수 있나요?

이 글의 숫자는 검증용 샘플 데이터(가상 공급사 12곳 · 결제월 2026.04~2026.09 · 가정 환율)이며 실제 회사의 숫자가 아닙니다. 적용 시점과 범위는 환율 유형, 결제 라인 원천, 예정 기준 같은 운영 시점의 합의가 끝난 뒤 정합니다. 일정은 합의 범위에 따라 달라지므로 이 글에서 단정하지 않습니다.

표준 T-code를 대체하나요?

대체하지 않습니다. 표준 실행은 SAP 표준 T-code가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 공급업체 개별 항목(FBL1N) · 전표 조회(FB03) · 자동 지급 프로그램(F110) · 송장 입력(MIRO) · 구매오더 조회(ME23N) · 외화 평가(FAGL_FCV) · 자재 문서 목록(MB51)과 같은 필드를 쓰므로, 이 화면에서 찾은 차이를 표준 화면에서 원천으로 확인합니다.

데이터는 어디서 오고 정합성은 어떻게 확인하나요?

원천은 송장 인식 라인과 결제(청산) 라인, 구매오더 조건입니다. 큐브는 이 라인을 집계한 것이라 큐브 합계와 라인 합계를 측정값 6개, 통화별 24건으로 대사했고 모두 차이 0입니다. 운영에서는 같은 대사식에 표준 화면(FBL1N · FB03) 합계를 더해 주기적으로 맞추는 체계를 둡니다.

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

외화 금액은 통화(USD · EUR · JPY · CNY)별로 읽고, 원화는 인식 시점과 결제 시점 환율로 각각 환산한 값을 씁니다. IAS 21 환율변동효과(K-IFRS 제1021호)와 관련한 환율 차이를 분류 · 집계하는 점검에 쓰는 화면이며, 사용하는 환율 유형과 일자는 운영 시점에 회사가 정합니다. 샘플의 환율은 가정값입니다.

운영 데이터로 연결하는 절차는 어떻게 되나요?

기준 매핑 테이블 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순서로 CDS를 만들어 이송하고, 서비스를 활성화한 뒤 앱의 서비스 주소를 바꿉니다. 그 전에 환율 유형, 결제 라인 원천, 부호 규칙, 예정 기준을 정해야 합니다. 소요 기간은 합의할 항목의 수와 원천 데이터 상태에 달려 있어 이 글에서 일수를 단정하지 않습니다.

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

회사코드 단위 접근 제어(DCL)를 집계 단계에 걸어 합계로 다른 조직의 숫자가 새지 않게 합니다. 화면은 서비스가 준 값만 보여 주고 AI 해설은 규칙 기반이 기본이며 외부 모델 연결은 꺼져 있습니다. 변동 사유와 레이아웃은 서비스에 저장됩니다.

대용량 데이터에서도 쓸 수 있나요?

라인 집계는 데이터베이스 안에서 끝내고 화면은 집계된 칸만 읽도록 구성하며, 회사코드와 결제월 범위를 필수로 둡니다. 열 36개 · 행 노드 1,500개 상한과 라인 읽는 단위 500건이 브라우저를 지킵니다. 수천만 건 규모의 응답 시간 목표는 운영 환경에서 측정한 뒤 정합니다.

차원 값이나 매핑이 바뀌면 어떻게 하나요?

결제 소요 구간 경계나 헷지 구분 이름 같은 매핑은 기준 테이블에서 유지하므로 뷰를 고치지 않아도 됩니다. 새 차원을 추가하려면 큐브 · 쿼리 · 서비스의 차원 목록을 함께 늘립니다. 변경은 이송 순서와 이력 규칙을 정해 둔 상태에서 합니다.

이 화면의 결과를 회계 · 세무 판단의 근거로 써도 되나요?

이 화면은 분류 · 집계 · 대사를 돕는 점검 도구, 최종 판단은 회사와 감사인(세무 신고는 회사와 세무 대리인·관세사)의 몫입니다. 차이 발생이나 점검 필요로 표시된 항목도 이 화면이 회계 · 세무 결론을 내리지는 않습니다. 법정 · 감사 · 세무 신고에 쓰는 숫자는 계속 표준 화면에서 확정합니다.