수출 솔루션 · 운송·보험 용역분 수익 분리

수출 운송·보험 포함 매출 수익 분리 다차원 분석 — 제품 수익과 운송·보험 용역분, 월말 이연까지 한 화면에서 나누는 월마감

큐브 집계 · 드래그 앤 드롭 축 구성 · 칸에서 청구 라인까지의 드릴스루 · 계획 대비 차이와 여섯 요인 분해 · 행에 남는 변동 사유 · 숫자를 모델에 맡기지 않는 AI 분석 · 스스로 도는 AI 에이전트 — 소개 영상과 실제 화면 28종, 그리고 CDS 코드까지

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

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

수출 담당과 회계 담당이 월말마다 마주치는 질문은 비슷합니다. CIF · CFR · CIP 조건으로 나간 청구서에서 운송 · 보험료 몫을 뺀 제품 수익은 얼마인가, 그리고 그 운송 · 보험 용역분 가운데 이번 달에 인식할 몫과 월말에 넘길 몫은 얼마인가입니다. 표준 화면으로는 판매 오더(VA03), 청구 문서(VF03), 납품(VL03N), 고객 개별 항목(FBL5N), 수익성 분석(KE30)을 번갈아 열어 엑셀에서 붙이게 되고, 그 사이에 숫자가 서로 달라지는 일이 생깁니다.

이 화면은 청구 라인을 제품 그룹 · 운송수단 · 고객 · 수출 국가 · 인코텀즈 등 차원 조합별 큐브로 묶고, 청구 총액 · 운송 · 보험 용역분 · 제품 수익 · 당월 인식분 · 월말 이연분을 같은 기준으로 보여 줍니다. 한 청구서 안에 제품과 운송 · 보험 용역이 함께 있을 때 이를 구분해 보는 관점은 IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)의 수행의무 구분과 이행 시점 요구사항과 맞닿아 있으며, 화면은 그 집계와 점검을 돕는 도구입니다. 어느 몫을 언제 인식할지는 회사의 계약 조건과 회계정책에 달려 있으므로 최종 판단은 회사와 감사인이 합니다.

한 줄 요약 — 운송 · 보험료가 포함된 수출 청구서를 제품 수익과 용역분으로 나누고, 월말 이연분과 계획 대비 차이를 요인으로 쪼개 보며, 모든 칸에서 원천 청구 라인까지 내려가 합계를 대조하는 다차원 분석 화면입니다.

핵심 포인트 일곱 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 청구 총액에서 제품 수익이 바로 갈라진다청구 총액 − 운송 · 보험 용역분 = 제품 수익이 모든 칸에서 같은 식으로 계산됩니다. 인코텀즈별로 용역분이 얼마나 끼어 있는지도 한 표에서 보입니다.청구 문서마다 운임 · 보험료 조건을 열어 보고 엑셀에서 따로 빼서 합산합니다.
② 당월 인식분과 월말 이연분이 나란히운송 예정 일수 대비 월말까지 경과한 일수로 용역분을 당월 인식분과 이연분으로 나눠, 이연분이 어느 고객 · 국가에 쌓였는지 확인합니다.선적일과 도착 예정일을 문서마다 대조해 달마다 이연 표를 새로 만듭니다.
③ 축을 바꿔도 숫자가 갈라지지 않는 피벗제품 그룹 · 운송수단 · 고객 · 수출 국가 · 인코텀즈 등 10개 차원을 끌어다 놓아 행 3단계 · 열 2단계로 봅니다. 모든 축이 같은 큐브에서 나옵니다.고객별 · 국가별 · 운송수단별 리포트를 따로 만들고 합계가 다르면 맞추는 회의를 엽니다.
④ 칸에서 청구 라인까지 한 번에숫자를 누르면 그 금액을 만든 청구 라인이 열리고, 합계가 칸 금액과 같은지 그 자리에서 보입니다.리포트를 닫고 VF03 을 다시 열어 조건을 손으로 맞춥니다.
⑤ 계획 차이를 여섯 요인으로매출 물량 · 외화 단가 · 환율 · 용역 포함률 · 미계획 거래 · 계획 미이행으로 제품 수익 차이를 가르고 합계를 검산합니다.엑셀로 밤새 분해하고 산식은 사람마다 다릅니다.
⑥ 사람이 열지 않아도 도는 점검규칙마다 임계값과 받을 역할이 붙어, 용역 포함률 상한이나 이연분 초과가 걸리면 보고가 대기함에 올라갑니다. 하루 한 번 제한과 실행 기록은 서비스가 맡습니다.숫자가 나빠진 날 아무도 화면을 열지 않으면 그대로 지나갑니다.
⑦ 숫자는 모델에 맡기지 않는 AI 와 보고서금액 · 비율은 서비스가 계산하고 AI 는 설명만 합니다. 보고 있는 범위로 PowerPoint 보고서까지 브라우저에서 만듭니다.화면을 캡처하고 숫자를 옮겨 적어 보고서를 다시 만듭니다.

사례로 보는 효과

검증용 샘플 데이터(청구 라인 1,939줄, 큐브 324행, 2026년 1~9월)에서 청구 총액은 36,380백만원이고 그 가운데 운송 · 보험 용역분이 2,126백만원(용역 포함률 5.8%, 계획 5.5%)이어서 제품 수익은 34,254백만원으로 나뉩니다. 용역분은 당월 인식분 1,778백만원과 월말 이연분 348백만원으로 다시 갈립니다.

제품 수익은 연초 계획 33,392백만원보다 862백만원 많았습니다. 여섯 요인으로 나누면 매출 물량 +809가 가장 크고 미계획 거래 +679와 환율 +325가 뒤를 이으며, 계획 미이행 −698 · 외화 단가 −137 · 용역 포함률 −116이 일부를 깎았습니다. 여섯 요인의 합은 총차이 862와 오차 0으로 맞아 어디를 먼저 점검할지가 순서대로 보입니다. 큐브와 원천 라인의 대사식 20건을 전수로 돌려 차이는 0건이었습니다.

도입하면 달라지는 것

  • 마감 전 점검 — 제품 수익 · 용역분 · 이연분 · 계획 차이와 요인 분해, 사유, 보고서가 한 화면에서 나와 엑셀 취합이 줄어듭니다.
  • 회의의 주제 — ‘어느 숫자가 맞나’가 아니라 ‘어느 고객의 이연분을 먼저 확인할까’를 이야기합니다.
  • 다음 달로 이어지는 기록 — 사유와 레이아웃이 남아 같은 설명을 다시 하지 않습니다.
  • 놓치지 않는 점검 — 운송 30일을 넘는 라인의 월말 이연분처럼 규칙에 걸린 항목이 대기함에 올라옵니다.

이런 회사에 맞습니다

CIF · CFR · CIP 처럼 운임이나 보험료가 청구 금액에 들어가는 조건으로 여러 통화 · 여러 국가에 수출하는 제조 · 유통 기업, 그리고 영업 · 물류 · 회계 부서가 같은 숫자를 서로 다른 화면에서 맞추고 있는 조직에 맞습니다. 항공과 해상처럼 운송 기간이 다른 운송수단이 섞여 있고 월말에 걸치는 선적이 많을수록 효과가 커집니다.

실행 화면

아래 화면은 검증용 샘플 데이터(가상 고객 · 가정 환율과 용역 포함률)로 실제 브라우저에서 찍은 것입니다. 금액 단위는 백만원이고, 화면 이름은 사용 순서대로 정리했습니다.

사용 방법

  1. 조회조건 입력 — 회사코드(필수), 시작 · 종료 기간(필수, 기본 2026-01~2026-09)을 확인합니다. 저장해 둔 레이아웃이 있으면 고릅니다.
  2. 조회 — 조회 버튼을 누르거나 입력 칸에서 Enter 를 누릅니다. 기본 레이아웃에 자동 조회를 지정했다면 화면을 열 때 이미 조회되어 있습니다.
  3. 요약 확인 — 역할별 요약 탭(CEO · CFO · 영업 책임자 · 물류 책임자)에서 숫자 카드를 읽습니다.
  4. 탭 · 축 이동 — 차원 칩을 행과 열로 옮기고 필터로 범위를 좁힙니다. 이 단계는 서버를 다시 부르지 않습니다.
  5. 행 · 셀 클릭 상세 — 행을 누르면 차이 분해 차트가, 칸을 누르면 원천 청구 라인이 열립니다. 차이가 있는 행에는 사유를 남깁니다.
  6. 내보내기 — 상단의 CSV 는 현재 표를, AI 분석 창의 보고서 버튼은 PowerPoint 보고서를 내려받습니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면OpenUI5 기반 단일 화면. 조회 조건 · 레이아웃 보드 · 역할 요약 · 트리 표 · 차트 · 대화상자표 · 차트 · 원천 라인이 한 화면에서 이어져야 숫자 근거를 따라갈 수 있습니다.
집계 · 판정 로직큐브 피벗 · 차트 · 보고서를 각각 별도 모듈로 분리축 전환 · 차트 · 보고서가 같은 큐브 값을 읽어 합계가 갈라지지 않게 합니다.
데이터 서비스OData V2 서비스. 조회 조건은 $filter, 정렬은 $orderby, 원천 라인은 $top · $skip · $inlinecount 로 나눠 읽음. 요인 분해 · AI 해설 · 에이전트 실행은 서비스가 계산금액 · 비율 · 요인은 서비스에서 한 번만 계산해 화면 · AI · 보고서가 같은 값을 씁니다. 운영 전환 때 서비스 주소만 바꾸면 되도록 화면은 서비스 구현과 분리했습니다.
저장 대상사유와 레이아웃은 서비스에 쓰기. 에이전트 규칙 · 보고 · 실행 기록은 서비스가 보관화면을 닫아도 남아야 하는 것만 서비스에 두었습니다.
테마sap_horizonSAP Fiori 화면과 같은 모양으로 이어지도록 했습니다.
항목내용
솔루션 · 업무 영역수출 · 운송 · 보험 포함 매출의 수익 분리와 월말 이연 점검
관련 기준서 · 대상 영역IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 수행의무 구분 · 이행 시점
표준 T-codeVA03 · VF03 · VL03N · FBL5N · KE30
화면 성격다차원 분석 리포트(큐브 · 피벗 · 드릴스루 · 차이 분해)
테마sap_horizon
SAP 표준 기능을 그대로 이어받은 부분 — 청구 문서 · 판매 오더 · 납품의 표준 데이터 구조를 그대로 읽고, 문서 번호 · 청구일 · 통화 같은 필드 이름도 표준을 따랐습니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다.

1. 처음 열었을 때 — 조건 · 보드 · 피벗 틀

화면을 열면 조회 조건, 차원 칩을 놓는 레이아웃 보드, 피벗 틀이 한 화면에 보입니다. 조회 버튼을 누르면 같은 화면에서 표와 차트가 채워집니다.

처음 연 화면
처음 연 화면 — 조회 전에도 조건 · 레이아웃 보드 · 피벗 틀이 보입니다

회사코드 1000과 기간 2026-01~2026-09, 비교 기준(연초 확정 판매 계획)이 미리 채워져 있습니다. 차원 칩은 ‘사용 안 함’ · ‘행’ · ‘열’ 세 칸 가운데 어디에 놓였는지로 표의 모양을 정합니다. 조회 버튼은 조회 조건 영역 오른쪽 끝에 있고 입력 칸에서 Enter 를 눌러도 같습니다.

조회 직후 피벗과 차트
조회 직후 피벗과 차트 — 피벗과 항목 비교 차트

제품 수익 34,254백만원, 청구 총액 36,380, 운송 · 보험 용역분 2,126, 용역 포함률 5.8%가 기준과 함께 보입니다. 기본 배치는 제품 그룹과 운송수단이 행이고 열은 비어 있습니다. 표의 행을 펼치면 하위 차원으로 내려가고 오른쪽 차트는 같은 값을 막대로 보여 줍니다.

2. 경영 요약 — 역할마다 앞세우는 숫자가 다릅니다

역할별 요약 탭을 바꾸면 카드에 올라오는 지표와 표에서 쪼개 보는 차원이 함께 바뀝니다. 같은 큐브를 읽을 뿐이라 탭을 바꿔도 합계는 변하지 않습니다.

경영 요약 CFO
경영 요약 CFO — 제품 수익과 이연분을 앞세웁니다

CFO 탭은 제품 수익, 당월 인식분, 월말 이연분처럼 마감과 직결된 지표를 먼저 보여 줍니다. 카드 아래 작은 글씨는 기준값과 대비 증감입니다. 숫자는 모두 서비스가 계산한 값이며 화면에서 다시 계산하지 않습니다.

경영 요약 영업 책임자
경영 요약 영업 책임자 — 고객 · 국가별 용역 포함률

영업 책임자 탭은 고객과 국가 단위의 용역 포함률과 계획 대비 증감을 앞세웁니다. 용역 포함률이 계획보다 높은 고객이 어디인지 바로 읽을 수 있습니다.

경영 요약 물류 책임자
경영 요약 물류 책임자 — 운송수단별 용역분과 월말 이연분

물류 책임자 탭은 항공과 해상처럼 운송수단별 용역분과 월말 이연분을 보여 줍니다. 해상 운송의 이연분이 훨씬 크다는 점이 한눈에 보이며, 이 차이가 이연 점검의 출발점입니다.

3. 축 전환과 범위 — 다시 조회하지 않고 다르게 묶기

차원 칩을 끌어 다른 칸에 놓거나 칩을 눌러 메뉴로 옮기면 표가 바로 다시 묶입니다. 조회 때 큐브를 한 번 읽어 두었기 때문에 서버 요청은 0건입니다.

고객을 열로 이동
고객을 열로 이동 — 재조회 없이 다시 묶음

고객 차원을 열로 옮기면 열마다 고객이 나타납니다. 이때 서버 요청은 0건이고 합계는 그대로입니다. 열에 올린 차원이 있으면 분석 항목 가운데 첫 항목만 열에 펼쳐 보이며, 이 사실은 표 위 안내 줄에 표시됩니다.

청구월을 행으로 이동
청구월을 행으로 이동 — 시간 흐름을 행에 놓은 모습

청구월을 행에 추가하면 제품 그룹 › 운송수단 › 청구월 순으로 내려갑니다. 행은 최대 3단계까지 놓을 수 있고 넘기려 하면 안내 메시지가 뜹니다.

단계 보기
단계 보기 — 청구 총액에서 월말 이연분까지

단계 보기는 차원 대신 계산 흐름을 행으로 놓습니다. 청구 총액에서 운송 · 보험 용역분, 제품 수익, 당월 인식분, 월말 이연분, 당월 인식률까지 위에서 아래로 따라가며 제품 그룹별로 비교합니다.

고객 값 선택
고객 값 선택 — 값을 골라 범위를 좁힙니다

차원마다 필터 버튼이 있어 값 목록에서 여러 개를 고를 수 있습니다. 같은 차원 안에서는 or, 차원 사이에서는 and 로 묶이며 큐브에 있는 값만 목록에 나옵니다.

필터 적용 뒤
필터 적용 뒤 — 고른 고객만 남은 결과

필터를 적용하면 표 · 요약 카드 · 차트가 모두 같은 범위로 다시 계산됩니다. 머리 영역을 접으면 현재 범위가 한 줄 요약으로 남습니다.

고객과 인코텀즈 열 조합
고객과 인코텀즈 열 조합 — 고객 × 인코텀즈

열은 최대 2단계이고 조합이 36개를 넘으면 표를 그리지 않고 줄이라는 안내가 나옵니다. 인코텀즈 조건별로 같은 제품 그룹의 제품 수익이 어떻게 갈리는지 비교할 때 씁니다.

4. 칸에서 청구 라인까지 — 숫자의 근거 확인

표의 칸을 누르면 그 금액을 만든 원천 청구 라인이 열립니다. 숫자를 믿는 근거를 같은 화면에서 확인하는 자리입니다.

원천 청구 라인 창
원천 청구 라인 창 — 셀 값과 원천 합계 일치 표시

머리 줄에 ‘셀 값 36,380 = 원천 합계 36,380(원천 1,939줄) 일치’가 표시됩니다. 두 값이 다르면 점검 필요로 바뀝니다. 라인에는 청구 문서 · 청구일 · 도착 예정일 · 운송 일수 · 용역 인식 상태 · 계약 번호 · 운송수단 · 고객 · 인코텀즈가 있고 500줄씩 더 불러옵니다.

5. 기준 대비 차이 — 같은 표가 점검 회의 자료가 됩니다

기준 대비를 켜면 칸마다 실적 아래에 기준값 · 차이 · 증감률이 붙고, 요인 분해와 검산 줄이 함께 나옵니다.

기준 대비 켠 화면
기준 대비 켠 화면 — 요인 검산 줄 포함

제품 수익 34,254는 기준 33,392보다 862(+2.6%) 많습니다. 차이가 금액과 비율 임계를 모두 넘는 칸은 색으로 구분합니다. 오른쪽 아래 안내 줄에는 ‘요인 합계 862 / 총차이 862(오차 0.00)’가 표시됩니다.

행을 골라 요인 분해
행을 골라 요인 분해 — 고른 행의 차이만 분해합니다

표에서 행을 누르면 그 행의 차이만 분해됩니다. 선택한 행은 표에서 강조되고 차트 위에 이름이 칩으로 나타나며 X 로 해제합니다.

차이 워터폴
차이 워터폴 — 요인 6가지

디스플레이 모듈 10,576 → 10,643(+68)을 매출 물량 +327 · 외화 단가 −76 · 환율 +115 · 용역 포함률 −27 · 미계획 거래 0 · 계획 미이행 −271로 나눈 모습입니다. 초록은 늘리는 요인, 빨강은 줄이는 요인이며 여섯 요인의 합이 총차이와 같습니다.

6. 변동 사유 — 설명이 행에 남습니다

차이가 큰 행에는 사유 버튼이 나타나고, 저장한 사유는 행 경로에 묶여 다음 조회에서도 따라옵니다.

차이 사유 입력창
차이 사유 입력창 — 사유 구분과 내용

사유 구분(매출 물량 변경 · 환율 · 기타 등)을 고르고 내용을 적습니다. 창에는 해당 행의 이름 · 기간 · 차이 금액이 함께 보여 어느 숫자에 대한 설명인지 헷갈리지 않습니다.

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

저장하면 행의 사유 버튼이 초록 표시로 바뀌고 같은 행을 누르면 내용을 고치거나 지울 수 있습니다. 사유는 서비스에 쓰기로 남으므로 화면을 닫아도 유지됩니다.

7. AI 분석과 보고서 — 숫자는 서비스가, 설명은 AI 가

AI 분석은 현재 범위의 요약과 주요 발견을 보여 줍니다. 모든 숫자는 서비스가 계산한 값이고 AI 는 읽기만 합니다.

AI 분석 결과
AI 분석 결과 — 규칙 기반 해설

요약에는 제품 수익 · 계획 · 총차이 · 용역 포함률 · 인식분과 이연분이 한 문단으로 나옵니다. 주요 발견은 계획 차이가 큰 제품 그룹부터 나열하고, 원인은 단정하지 않고 ‘확인 필요’ 항목으로만 제시합니다. 기본은 규칙 기반이며 모델 연결은 서비스 설정으로 켭니다.

보고서 내려받기
보고서 내려받기 — 근거 수치 표와 함께

창 아래 보고서 버튼을 누르면 브라우저에서 PowerPoint 를 만들어 내려받습니다. 보고서에는 요약 · 조회 결과 표 · 차트 · 워터폴 · 해설에 쓴 근거 표가 들어가며 생성한 6장 구성을 열어 확인했습니다.

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

감시 규칙을 정해 두면 규칙에 걸린 항목이 받을 역할별 대기함으로 올라갑니다. 하루 한 번 제한과 실행 기록은 서비스가 맡습니다.

에이전트 감시 규칙
에이전트 감시 규칙 — 지표 · 기준값 · 받는 역할

제품 수익 계획 차이 금액 초과(CEO), 용역 포함률 상한(CFO), 월말 이연 용역분 임계 초과와 운송 30일 초과 라인의 이연분 초과(물류 책임자), 용역 포함률 요인 손실 금액 초과(영업 책임자)가 기본 규칙입니다. 기준값은 화면에서 고칠 수 있습니다.

에이전트 대기함
에이전트 대기함 — 역할별로 나뉘어 올라옵니다

샘플 데이터에서 규칙 5개 가운데 15건이 걸려 대기함에 올라갔습니다. 보고마다 걸린 규칙 · 받는 역할 · 근거 금액이 있고 문장은 ‘확인 필요’ ‘점검 필요’로 끝납니다.

하루 한 번 제한
하루 한 번 제한 — 두 번째 실행은 건너뜁니다

같은 날 다시 실행하면 서비스가 ‘하루 한 번만 실행합니다’라며 건너뛰고 그 사실도 실행 기록에 남깁니다. 화면을 여러 사람이 열어도 보고가 중복되지 않습니다.

9. 기간별 요약

청구월 단위로 큐브 합계를 한 표에 모아 보는 자리입니다.

기간별 요약
기간별 요약 — 청구월별 제품 수익과 계획

월마다 라인 수 · 청구 총액 · 제품 수익 · 계획 · 차이 · 용역분 · 월말 이연분 · 당월 인식 수익 · 용역 포함률이 나옵니다. 합계 행의 제품 수익 34,254와 계획 33,392, 차이 862는 피벗 화면의 숫자와 같습니다.

10. 레이아웃 저장과 복원 — 매달 같은 배치를 다시 만들지 않습니다

자주 쓰는 행 · 열 배치와 분석 항목을 이름 붙여 저장하고, 기본 레이아웃과 자동 조회를 지정할 수 있습니다.

레이아웃 저장 창
레이아웃 저장 창 — 이름과 기본 · 자동 조회 지정

저장 대화상자 아래에 저장될 내용(행 · 열 · 기간 · 항목 수)이 미리 보입니다. 기본 레이아웃으로 지정하면 ‘열 때 자동 조회’ 선택이 활성화됩니다.

레이아웃 관리
레이아웃 관리 — 이름 변경 · 기본 지정 · 삭제

저장한 레이아웃을 목록에서 적용하거나 이름을 바꾸고 삭제합니다. 기본 지정과 자동 조회 체크가 한 줄에서 바뀝니다.

배치를 바꾼 상태
배치를 바꾼 상태 — 고객 · 인코텀즈를 열로 옮긴 상태

저장해 둔 배치와 다르게 칩을 옮겨 둔 모습입니다.

레이아웃 적용 뒤
레이아웃 적용 뒤 — 저장한 레이아웃을 고르면 되돌아옵니다

조회 조건의 저장된 레이아웃에서 이름을 고르면 행 · 열 배치가 저장 당시로 돌아오고 적용했다는 안내가 잠깐 나타납니다.

11. 좁은 화면과 한계

화면 너비가 좁아지면 조회 조건과 레이아웃 보드가 위아래로 쌓이고 표와 차트도 세로로 놓입니다.

좁은 화면 390px
좁은 화면 390px — 조건과 보드가 위아래로 쌓입니다

390px 너비에서도 가로 스크롤 없이 조회 조건과 보드가 이어집니다. 표는 한 번에 보이는 열이 줄어들므로 열 차원은 하나만 두는 편이 읽기 좋습니다.

화면 뒤에서 일어나는 일

조회 버튼을 누르면 화면은 큐브 · 계획 · 사유 · 검산 네 가지를 한꺼번에 읽습니다. 그 뒤의 축 이동 · 접기 · 펴기는 브라우저에서 큐브를 다시 묶는 일이라 서버를 부르지 않습니다. 칸을 눌러 원천 라인을 열 때, 기준 대비의 요인 분해를 볼 때, AI 해설을 만들 때, 에이전트를 돌릴 때만 서비스를 다시 부릅니다.

산출과 대사 흐름

단계산출 · 대사식SAP 데이터 지점
1 청구청구 총액(원화) = 외화 청구 금액 × 적용 환율청구 문서 항목
2 분리운송 · 보험 용역분 = 청구 총액 × 용역 포함률(인코텀즈 조건별 가정값), 제품 수익 = 청구 총액 − 용역분청구 문서 · 인도 조건(확인 필요)
3 이연당월 인식분 = 용역분 × 월말까지 경과 일수 ÷ 운송 예정 일수, 월말 이연분 = 용역분 − 당월 인식분납품 문서 · 도착 예정일(확인 필요)
4 대사큐브 합계 = 원천 라인 합계(금액 5종 · 수량 · 라인 수 · 항등식 4종 · 요인 합계 · 통화별 외화 금액)검산 20건
5 차이 분해계획 제품 수익 + 요인 6가지 = 실적 제품 수익계획 · 큐브
판정 조건결과 상태사용자 조치
셀 값과 원천 라인 합계가 같음일치그대로 사용
셀 값과 원천 라인 합계가 다름점검 필요조회 범위 · 필터를 확인하고 원천 라인을 대조
요인 합계와 총차이가 같음검산 통과요인별 점검 순서를 정함
용역 포함률이 감시 규칙 상한(7%)을 넘음확인 필요(대기함 보고)해당 고객의 인코텀즈 조건과 청구 라인을 확인
운송 30일을 넘는 라인의 월말 이연 용역분이 임계를 넘음점검 필요(대기함 보고)운송 일정과 도착 확인 상태를 확인
에이전트를 같은 날 다시 실행하루 한 번 제한으로 건너뜀대기함의 기존 보고를 확인

조회조건

조회 조건필수기본값$filter 대상
회사코드필수1000Bukrs eq '1000'
시작 기간필수2026-01Period ge '2026-01'
종료 기간필수2026-09Period le '2026-09'
비교 기준고정판매 계획(연초 확정)Version eq 'SVC26'
차원 값(다중)선택전체차원 필드 eq 의 or 묶음
표시 행 수선택14브라우저에서 자름

결과 컬럼

컬럼의미산출식
제품 수익청구 총액에서 운송 · 보험 용역분을 뺀 금액청구 총액 − 용역분
청구 총액(원화)외화 청구 금액의 원화 환산외화 금액 × 적용 환율
운송 · 보험 용역분청구 금액에 포함된 운송 · 보험 몫청구 총액 × 용역 포함률
당월 인식분월말까지 경과한 운송 일수 비율만큼용역분 × 경과 일수 ÷ 운송 일수
월말 이연분월말 기준 아직 넘어가지 않은 몫용역분 − 당월 인식분
용역 포함률청구 총액 대비 용역분 비율용역분 ÷ 청구 총액
기준 · 차이 · 증감률판매 계획과의 비교실적 − 기준, 차이 ÷ 기준

좁은 화면에서 달라지는 것

조회 조건 칸이 줄바꿈되고 레이아웃 보드의 세 칸이 위아래로 쌓입니다. 표와 차트는 세로로 나란히 놓이며, 표 너비 손잡이는 좁은 화면에서는 숨겨집니다.

파일 구성

shipsvc/
├─ index.html · Component.js · manifest.json
├─ controller/  Main · Base
├─ view/        Main.view.xml · fragments/ (드릴스루 · 사유 · AI · 에이전트 · 레이아웃 대화상자)
├─ model/       cube.js(피벗) · chart.js(SVG 차트) · pptx.js(보고서) · layout.js · formatter.js · ErrorHandler.js
├─ i18n/ · css/
├─ odata/       서비스 구현 · 메타데이터 · 샘플 데이터
├─ media/       소개 영상
└─ readme.html

SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 아래는 표준 화면으로 충분한 일과 이 화면이 더하는 관점을 나란히 놓은 표입니다.

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

하고 싶은 일SAP 표준표준에서 걸리는 자리이 앱이 더하는 것
청구서 한 장의 금액 구성 확인VF03 청구 문서 조회한 문서씩 열어 보므로 고객 · 제품 · 월을 가로질러 합칠 수 없음같은 문서 필드를 큐브로 묶어 축을 바꿔 보고 칸에서 문서로 내려감
오더 조건과 인도 조건 확인VA03 판매 오더 조회, VL03N 납품 조회인코텀즈와 도착 예정일을 청구 금액과 같은 표에 놓는 화면은 없음인코텀즈를 차원으로 올려 용역 포함률과 이연분을 비교
고객 미결 항목 대조FBL5N 고객 개별 항목청구 금액을 제품 수익과 용역분으로 나누는 단계는 없음청구 총액을 제품 수익 · 용역분으로 갈라 대조 기준으로 제공
수익성 관점의 숫자KE30 수익성 분석 보고서계획 대비 차이를 여섯 요인으로 나누는 단계는 없음요인 분해와 검산 줄, 사유 저장
규칙에 걸린 항목을 먼저 알림없음임계 점검과 역할별 대기함은 표준에 없음감시 규칙 · 대기함 · 하루 한 번 점검
역할별 요약과 보고서없음화면 숫자를 그대로 보고서로 만드는 기능은 없음CEO · CFO · 영업 · 물류 요약과 PowerPoint 보고서

T-code 별 연계 지점

T-code이름연계
VA03판매 오더 조회이어받는 데이터는 판매 오더 번호와 계약 조건입니다. 원천 라인의 판매 오더 번호로 VA03 을 열어 인코텀즈와 운임 조건이 라인과 같은지 대사합니다. 법정 · 감사용 계약 근거는 표준 오더에 남깁니다.
VF03청구 문서 조회이어받는 데이터는 청구 문서 번호 · 청구일 · 통화 · 금액입니다. 이 앱의 원천 라인 결과에서 청구 문서 번호를 VF03 에 넣어 같은 금액인지 확인하고, 표준 화면의 값은 이 앱의 칸 값과 합계로 다시 대조합니다.
VL03N납품 조회이어받는 데이터는 인도 조건과 도착 예정일입니다. 월말 이연분이 큰 라인의 도착 예정일이 납품 문서와 같은지 확인하는 대사 지점입니다.
FBL5N고객 개별 항목고객별 미결 잔액과 청구 총액을 맞춰 보는 지점입니다. 이 앱의 고객 단위 청구 총액에서 FBL5N 의 해당 고객 청구분을 대조합니다. 수금 · 채권 관리는 표준에 남깁니다.
KE30수익성 분석 보고서고객 · 제품 단위 수익을 표준 수익성 분석과 맞춰 보는 지점입니다. 이 앱은 운송 · 보험 용역분을 분리해 본다는 점이 다르며, 수익성 분석의 통제 기준은 표준을 따릅니다.

운영으로 옮길 때 기존 표준 리포트를 없앨 필요는 없습니다. 법정 · 감사 · 세무 신고에 쓰는 숫자는 표준 화면과 전표에 남기고, 이 화면은 마감 전 점검과 차이 설명에 씁니다.

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

S/4HANA 에서는 CDS 뷰 위에 분석 쿼리를 올리고 Fiori 분석 앱이나 Analysis for Office 로 읽는 구성이 일반적입니다. 이 화면은 같은 구성의 한 자리, 곧 큐브 뷰와 분석 쿼리를 OData 서비스로 노출해 읽는 화면에 해당합니다. 표준으로 제공되는 판매 · 수익 분석 앱의 이름과 범위는 확인하지 못했으므로 여기서는 비교 대상으로 적지 않고, 도입 시 표준 앱과의 중복 여부를 확인 필요 항목으로 둡니다.

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

자리무엇을 손대나비고
용역 포함률 기준인코텀즈 조건별 운임 · 보험료 비율을 기준 테이블로 둠샘플은 CIF 6.0% · CFR 4.5% · CIP 8.2% 가정값. 운영은 청구 문서의 조건 유형으로 확정(확인 필요)
운송 일수 · 도착 예정일납품 문서의 예정일을 쓸지, 선적 확인 일자를 쓸지이연분 계산의 분모가 되므로 정해야 함
확장 필드고객 · 제품 차원에 사업부 · 지역 같은 필드를 더함큐브 뷰에 필드를 더하고 쿼리에 노출
권한회사코드별 조회 범위접근 제어 역할 한 곳에서 관리
BAdI · 커스텀 필드청구 문서에 운임 · 보험 구분 필드를 더하는 경우고객사 정책에 따름

요구사항 매핑표

기준서요구사항대응 기능원천 데이터비고
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)계약 안의 수행의무(제품 · 운송 · 보험 용역) 구분제품 수익과 용역분 분리 집계청구 문서 · 인도 조건(확인 필요)점검 도구이며 회계 판단은 회사와 감사인이 함
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)용역 수행의무의 이행 시점 점검당월 인식분 · 월말 이연분 구분납품 문서 · 도착 예정일(확인 필요)경과 일수 기준은 샘플 가정
IAS 21 환율변동효과(K-IFRS 제1021호)외화 거래의 원화 환산환율 요인, 통화별 외화 대사청구 문서 통화 · 환율환율은 가정값

CDS 구성

운영 SAP 에서는 아래 뷰들을 쌓아 같은 큐브를 만듭니다. 객체 이름은 기능을 뜻하는 영문으로 지었고 코드는 스케치이므로 운영 적용 전 확인이 필요합니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준ZR_ExportShipSvcRateMap인코텀즈별 용역 포함률 기준조건이 바뀌어도 뷰를 고치지 않고 행만 바꿈
기본ZI_ExportShipBilling청구 라인과 납품 일정을 한 줄로 읽음큐브와 드릴스루가 같은 라인을 공유
차원ZI_ExportShipCustomer고객 · 국가 · 지역 이름과 코드이름 변경이 큐브에 번지지 않게 분리
큐브ZC_ExportShipCube제품 수익 · 용역분 · 인식분 · 이연분 집계분석 쿼리가 읽는 단일 집계 지점
쿼리ZC_ExportShipQuery차원 노출 · 필터 · 표시 속성화면에 필요한 필드만 노출
권한ZA_ExportShipAuth회사코드 조회 권한화면에서 숨기지 않고 데이터에서 걸러냄
서비스ZSD_ExportShipOData 서비스 정의와 바인딩운영 전환 때 화면 서비스 주소만 교체

① 용역 포함률 기준 테이블 — ZEXSHP_RATEMAP · ZR_ExportShipSvcRateMap

인코텀즈 조건별로 청구 금액 안에 운송 · 보험 용역이 얼마나 들어 있는지를 정하는 자리입니다. 운영에서는 청구 문서의 운임 · 보험 조건 유형과 맞춰 이 값을 확정해야 화면의 용역분이 전표와 맞습니다. 샘플의 비율은 가정값입니다.

" ─────────────────────────────────────────────────────────
" ZEXSHP_RATEMAP — 인코텀즈별 용역 포함률 기준 테이블
" 역할 : 인코텀즈 → 운송 · 보험 용역 포함률
" 나눈 이유 : 조건이 바뀌어도 뷰를 고치지 않고 행만 변경
" ─────────────────────────────────────────────────────────
@EndUserText.label : 'Export shipping service rate map'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
define table zexshp_ratemap {
  key client      : abap.clnt not null;
  key incoterms   : abap.char(3) not null;   " CIF · CFR · CIP 등
  svc_rate        : abap.dec(5,2);           " 용역 포함률(%) — 샘플은 가정값
  valid_from      : abap.dats;
  valid_to        : abap.dats;
}

" 기준 조회용 뷰 — 이후 뷰는 이 뷰만 바라본다
@AccessControl.authorizationCheck : #NOT_REQUIRED
define view entity ZR_ExportShipSvcRateMap
  as select from zexshp_ratemap
{
  key incoterms  as Incoterms,
      svc_rate   as ServiceRate,
      valid_from as ValidFrom,
      valid_to   as ValidTo
}

② 청구 라인 기본 뷰 — ZI_ExportShipBilling

청구 문서 항목과 납품 일정을 한 줄로 읽습니다. 통화 필드에 @Semantics.currencyCode 를 붙여 뒤 단계의 집계에서 통화가 섞여 합산되지 않게 하고, 도착 예정일과 청구일의 차이로 운송 일수를 만듭니다.

" ─────────────────────────────────────────────────────────
" ZI_ExportShipBilling — 청구 라인 기본 뷰
" 역할 : 청구 문서 항목 · 인도 조건 · 도착 예정일을 함께 읽는다
" 나눈 이유 : 큐브와 드릴스루가 같은 라인을 공유
" ─────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #NOT_REQUIRED
@EndUserText.label : 'Export shipping - billing line'
define view entity ZI_ExportShipBilling
  as select from vbrp
    inner join   vbrk on vbrk.vbeln = vbrp.vbeln
    left outer join likp on likp.vbeln = vbrp.vgbel   " 납품 헤더(확인 필요)
{
  key vbrp.vbeln                  as BillingDocument,
  key vbrp.posnr                  as BillingItem,
      vbrk.bukrs                  as CompanyCode,
      vbrk.fkdat                  as BillingDate,
      left( vbrk.fkdat, 6 )       as BillingMonth,
      vbrk.kunag                  as Customer,
      vbrk.inco1                  as Incoterms,
      @Semantics.currencyCode: true
      vbrk.waerk                  as Currency,
      vbrp.matnr                  as Material,
      @Semantics.quantity.unitOfMeasure: 'Unit'
      vbrp.fkimg                  as BillingQuantity,
      vbrp.vrkme                  as Unit,
      @Semantics.amount.currencyCode: 'Currency'
      vbrp.netwr                  as NetAmountFc,
      likp.lfdat                  as ArrivalDate,           " 도착 예정일 — 확인 필요
      dats_days_between( vbrk.fkdat, likp.lfdat ) as TransitDays,
      @Semantics.amount.currencyCode: 'LocalCurrency'
      cast( vbrp.netwr * vbrk.kurrf as abap.curr(15,0) ) as GrossAmountLc,       " 원화 환산(환율 기준 확인 필요)
      @Semantics.amount.currencyCode: 'LocalCurrency'
      cast( 0 as abap.curr(15,0) )                       as RecognizedServiceLc  " 경과 일수 비율 계산은 운영 규칙에 따라 구현
}

③ 차원 뷰 — ZI_ExportShipCustomer

고객 · 국가 · 지역의 이름과 코드를 큐브와 분리해 둡니다. 이름이 바뀌어도 큐브를 다시 만들지 않고, 쿼리에서 텍스트 연결로 읽어 화면의 차원 값 목록이 이름과 코드를 함께 보여 줍니다.

" ─────────────────────────────────────────────────────────
" ZI_ExportShipCustomer — 고객 차원 뷰
" 역할 : 고객 코드 → 이름 · 국가 · 지역
" 나눈 이유 : 이름 변경이 큐브에 번지지 않게
" ─────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #NOT_REQUIRED
@Analytics.dataCategory : #DIMENSION
@ObjectModel.representativeKey : 'Customer'
@EndUserText.label : 'Export shipping - customer'
define view entity ZI_ExportShipCustomer
  as select from kna1
{
  key kna1.kunnr               as Customer,
      @Semantics.text: true
      kna1.name1               as CustomerName,
      kna1.land1               as Country,
      kna1.regio               as Region
}

④ 분석 큐브 — ZC_ExportShipCube

이 앱의 숫자가 정해지는 자리입니다. 용역 포함률 기준을 붙여 용역분을 계산하고 제품 수익을 빼며, 도착 예정일까지의 경과 비율로 당월 인식분과 월말 이연분을 나눕니다. 항등식(청구 총액 − 용역분 = 제품 수익, 인식분 + 이연분 = 용역분)이 깨지지 않도록 이연분은 뺄셈으로 구합니다.

" ─────────────────────────────────────────────────────────
" ZC_ExportShipCube — 제품 수익 · 용역분 · 이연분 큐브
" 역할 : 라인을 차원 조합별로 집계하고 항등식을 지킨다
" 나눈 이유 : 분석 쿼리가 읽는 단일 집계 지점
" ─────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@Analytics.dataCategory : #CUBE
@EndUserText.label : 'Export shipping - cube'
define view entity ZC_ExportShipCube
  as select from ZI_ExportShipBilling as b
    left outer join ZR_ExportShipSvcRateMap as r
      on r.Incoterms = b.Incoterms
{
  key b.Customer,
  key b.Incoterms,
  key b.BillingMonth                                         as Period,
      b.CompanyCode,
      @Semantics.currencyCode: true
      cast( 'KRW' as waers )                                 as LocalCurrency,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'LocalCurrency'
      sum( b.GrossAmountLc )                                 as GrossAmount,
      @DefaultAggregation: #SUM
      sum( cast( b.GrossAmountLc * coalesce( r.ServiceRate, 0 ) / 100 as abap.curr(15,0) ) )
                                                             as ServiceAmount,
      @DefaultAggregation: #SUM
      sum( b.GrossAmountLc )
        - sum( cast( b.GrossAmountLc * coalesce( r.ServiceRate, 0 ) / 100 as abap.curr(15,0) ) )
                                                             as GoodsRevenue,
      @DefaultAggregation: #SUM
      sum( b.RecognizedServiceLc )                           as RecognizedService,
      @DefaultAggregation: #SUM
      sum( b.GrossAmountLc * coalesce( r.ServiceRate, 0 ) / 100 )
        - sum( b.RecognizedServiceLc )                       as DeferredService
}
group by b.Customer, b.Incoterms, b.BillingMonth, b.CompanyCode

⑤ 분석 쿼리 — ZC_ExportShipQuery

화면이 읽는 필드만 노출하고, 조회 조건으로 쓰는 필드에 필수 필터와 텍스트 연결을 붙입니다. 청구월을 필수 범위로 두면 대용량에서도 합산 범위가 정해집니다.

" ─────────────────────────────────────────────────────────
" ZC_ExportShipQuery — 분석 쿼리(Consumption)
" 역할 : 화면에 노출할 필드 · 필터 · 표시 속성
" 나눈 이유 : 큐브를 직접 노출하지 않고 필요한 것만 공개
" ─────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@Analytics.query : true
@EndUserText.label : 'Export shipping - query'
define view entity ZC_ExportShipQuery
  as select from ZC_ExportShipCube
{
  @AnalyticsDetails.query.axis : #ROWS
  @Consumption.filter : { selectionType : #RANGE, mandatory : true }
  key Period,
  @AnalyticsDetails.query.axis : #ROWS
  @ObjectModel.text.association : '_Customer'
  key Customer,
  @AnalyticsDetails.query.axis : #COLUMNS
  key Incoterms,
  @AnalyticsDetails.query.axis : #COLUMNS
  GrossAmount,
  ServiceAmount,
  GoodsRevenue,
  RecognizedService,
  DeferredService,
  _Customer
}

⑥ 접근 제어 — ZA_ExportShipAuth

회사코드 조회 권한을 이 역할 한 곳에서 겁니다. 권한이 없으면 행이 돌아오지 않으므로 화면에서 따로 숨길 필요가 없고, 큐브와 쿼리가 같은 역할을 공유합니다.

" ─────────────────────────────────────────────────────────
" ZA_ExportShipAuth — 접근 제어(DCL)
" 역할 : 회사코드(F_BKPF_BUK, 조회 권한) 기준으로 행을 거른다
" 나눈 이유 : 권한을 데이터 쪽 한 곳에서 관리
" ─────────────────────────────────────────────────────────
@EndUserText.label : 'Export shipping - authorization'
@MappingRole : true
define role ZA_ExportShipAuth {
  grant select on ZC_ExportShipCube
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

⑦ 서비스 정의와 바인딩 — ZSD_ExportShip

쿼리를 OData V2 서비스로 노출하는 자리입니다. 바인딩을 게시하고 활성화한 뒤 화면 manifest.json 의 서비스 주소만 바꾸면 운영 데이터로 전환됩니다.

" ─────────────────────────────────────────────────────────
" ZSD_ExportShip — 서비스 정의
" 역할 : 쿼리와 차원 뷰를 서비스로 노출
" 나눈 이유 : 화면이 서비스 주소만 바라보게 분리
" ─────────────────────────────────────────────────────────
@EndUserText.label : 'Export shipping - service definition'
define service ZSD_ExportShip {
  expose ZC_ExportShipQuery as ShipQuery;
  expose ZI_ExportShipCustomer as Customer;
}
" 서비스 바인딩(ZSB_ExportShip_V2)은 Binding Type 'OData V2 - UI' 로 만들고 게시한다.

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래는 도입 전에 정해 두면 뒤에서 숫자를 다시 맞추는 일이 줄어드는 항목입니다.

해야 할 일무엇을 정하나정하지 않으면누가
용역 포함률 원천 확정인코텀즈 조건별 운임 · 보험료를 청구 문서의 어느 조건 유형에서 읽을지용역분이 청구 조건과 어긋남영업 · 물류 · 회계
통제 이전 · 인식 시점 기준인코텀즈별로 운송 · 보험 용역을 어느 시점에 인식하는지(회계정책 확인 필요)당월 인식분과 이연분의 기준이 흔들림회계 · 감사인
운송 일수 기준납품 예정일을 쓸지, 선적 확인 일자를 쓸지이연분 계산의 분모가 달라짐물류 · 회계
환율 유형과 환산 시점청구일 환율과 월말 환율 가운데 무엇을 쓰는지환율 요인과 표준 화면 숫자가 어긋남회계 · 자금
부호 규칙반품 · 취소 청구의 부호 처리제품 수익이 이중 계산됨회계
계획 원천 확정판매 계획을 어느 계획 버전에서 읽는지계획 대비 차이가 의미를 잃음영업 · 재무기획
차원 범위고객 · 국가 · 지역 · 사업부 중 어디까지 노출하는지피벗이 너무 넓어짐영업 · 경영지원
권한 설계회사코드와 고객 범위 접근조회 범위가 넓어 정보가 노출됨IT · 감사
성능 기준청구월 필수 범위, 응답 시간 기준대용량에서 조회가 느려짐IT
대사 체계표준 T-code 와 맞출 항목과 주기어느 숫자가 맞는지 다시 다툼회계
전송 순서기준 테이블 → 기본 뷰 → 큐브 → 쿼리 → 권한 → 서비스 순서의 전송의존 객체가 없어 활성화 오류IT
서비스 활성화와 주소 교체서비스 게시와 활성화(/IWFND/MAINT_SERVICE 또는 Binding 게시), 화면 manifest.json 의 서비스 주소 교체화면이 샘플 서비스를 계속 바라봄IT
배치 등록감시 규칙을 돌리는 주기와 받을 역할사람이 열 때만 점검됨IT · 각 부서장

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

대사식검사 건수차이
금액 5종 — 제품 수익 · 청구 총액 · 용역분 · 당월 인식분 · 월말 이연분5건0건
수량 · 라인 수2건0건
항등식 4종 — 청구 총액 − 용역분 = 제품 수익 · 인식분 + 이연분 = 용역분 · 제품 수익 + 인식분 + 이연분 = 청구 총액 · 계획 항등식4건0건
요인 합계 = 총차이(6요인)1건0건
통화별 외화 금액(4개 통화 × 청구 · 용역분)8건0건
합계20건0건

합계 20건에서 차이 0건, 최대 차이 0원, 의도적 예외 0건입니다. 제품 수익 34,254 = 계획 33,392 + 862이고 요인 합 862는 오차 0입니다. 앞의 도입 포인트 ‘사례로 보는 효과’와 같은 숫자입니다.

운영 데이터로 갈 때

청구 라인이 수천만 건이면 합산은 데이터베이스에서 하고, 청구월을 필수 범위로 두어 한 번에 읽는 범위를 제한합니다. 원천 라인은 500줄씩 나눠 읽고 열 조합과 행 수에는 상한을 둡니다. 큐브 뷰에서 라인 단위 계산을 쓰는 부분은 데이터가 늘수록 비용이 커지므로, 집계 위치와 응답 시간 기준은 도입 전에 정해 두는 편이 안전합니다.

자주 묻는 질문

도입을 검토하는 분들이 자주 묻는 25가지를 주제별로 모았습니다.

숫자와 산식

이 화면의 숫자는 실제 회사 데이터인가요?

아닙니다. 검증용 샘플 데이터이며 고객 · 문서 번호 · 환율 · 용역 포함률은 모두 가상 또는 가정값입니다. 청구 라인 1,939줄을 큐브 324행으로 묶었고 기간은 2026년 1~9월입니다. 운영 데이터로 가려면 용역 포함률 원천과 운송 일수 기준을 확정하고 서비스 주소를 바꿉니다.

제품 수익 · 용역분 · 이연분은 어떻게 계산하나요?

청구 총액은 외화 청구 금액에 적용 환율을 곱한 원화 금액입니다. 운송 · 보험 용역분은 청구 총액에 인코텀즈별 용역 포함률을 곱한 값이고 제품 수익은 청구 총액에서 용역분을 뺀 값입니다. 당월 인식분은 용역분에 월말까지 경과한 일수를 운송 예정 일수로 나눈 비율을 곱하고, 월말 이연분은 용역분에서 인식분을 뺍니다. 모든 계산은 서비스가 하고 화면은 그 값을 보여 줍니다.

용역 포함률은 어디서 오나요?

샘플에서는 인코텀즈별 가정값(CIF 6.0% · CFR 4.5% · CIP 8.2%)이며 DAP · FOB 는 0 으로 둡니다. 운영에서는 청구 문서의 운임 · 보험 조건에서 읽을지, 별도 기준 테이블을 둘지 먼저 정해야 합니다. 이 값이 용역분과 제품 수익의 경계를 정하므로 확인 필요 항목 가운데 가장 먼저 정합니다.

계획 대비 차이의 여섯 요인은 무엇인가요?

매출 물량, 외화 단가, 환율, 용역 포함률, 미계획 거래, 계획 미이행입니다. 계획 제품 수익에 여섯 요인을 더하면 실적 제품 수익이 되도록 나눕니다. 샘플에서는 +809 · −137 · +325 · −116 · +679 · −698이며 합은 총차이 862와 같습니다. 요인 합계와 총차이를 매번 대조해 오차를 화면에 표시합니다.

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

청구 문서의 통화와 환율로 원화를 만들고, 환율 요인은 계획 환율과 실제 환율 차이로 분리합니다. 샘플의 환율은 모두 가정값이며 계획 환율은 USD 1,380원 · EUR 1,495원 같은 값입니다. 운영에서는 청구일 환율과 월말 환율 가운데 무엇을 쓸지 정해야 하며, 정한 기준은 환산 규칙 한 곳에만 둡니다.

큐브 합계와 원천 라인 합계가 같은지 어떻게 아나요?

대사식 20건을 요청 시점에 다시 합산해 비교합니다. 금액 5종, 수량과 라인 수, 항등식 4종, 요인 합계, 통화별 외화 금액 8건이 대상이며 샘플에서는 차이가 0건이었습니다. 칸을 눌러 원천 라인을 열면 그 칸의 값과 원천 합계가 같은지도 바로 표시됩니다.

화면과 조작

축을 바꾸면 서버에 다시 요청하나요?

아니요. 조회 때 큐브를 한 번 읽고 그 뒤의 축 이동 · 접기 · 펴기는 브라우저에서 다시 묶습니다. 고객 차원을 열로 옮기는 조작에서 서버 요청이 0건인 것을 확인했습니다. 그래서 축을 바꿔도 합계가 달라지지 않습니다.

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

행은 3단계, 열은 2단계까지 놓을 수 있습니다. 열 조합이 36개를 넘거나 행이 500개를 넘으면 표를 그리지 않고 줄이라는 안내를 보여 줍니다. 범위를 넘는 배치는 차트도 그리지 않아 숫자가 잘못 읽히는 일을 막습니다.

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

그 칸의 금액을 만든 원천 청구 라인이 열립니다. 머리 줄에 칸 값과 원천 합계의 일치 여부가 표시되고 두 값이 다르면 점검 필요로 바뀝니다. 라인은 500줄씩 나눠 읽으며 더 보기로 이어서 불러옵니다.

단계 보기는 무엇인가요?

차원 대신 계산 흐름을 행으로 놓는 보기입니다. 청구 총액에서 용역분, 제품 수익, 당월 인식분, 월말 이연분, 당월 인식률로 이어지는 순서를 제품 그룹별로 비교합니다. 합계가 어디서 갈라졌는지 위에서 아래로 따라가기 좋습니다.

조회 조건은 무엇을 입력하나요?

회사코드와 시작 · 종료 기간이 필수이고 비교 기준은 연초 확정 판매 계획으로 고정되어 있습니다. 차원 값 필터는 선택이며 같은 차원 안에서는 or, 차원 사이는 and 로 묶입니다. 조회 버튼은 조회 조건 영역 오른쪽 끝에 있고 Enter 로도 조회합니다.

좁은 화면에서도 쓸 수 있나요?

390px 너비에서도 가로 스크롤 없이 조회 조건과 보드가 위아래로 쌓입니다. 다만 표는 한 번에 보이는 열이 줄어들므로 열 차원을 하나만 두는 편이 읽기 좋습니다. 큰 화면에서는 표와 차트 사이 손잡이로 너비를 조절합니다.

분석 기능

AI 분석이 숫자를 만들어 내나요?

아닙니다. 금액 · 비율은 서비스가 계산하고 AI 는 그 숫자를 읽어 설명만 합니다. 기본은 규칙 기반 해설이며 모델 연결은 서비스 설정 하나로 켭니다. 원인은 단정하지 않고 확인 필요 항목으로 제시합니다.

변동 사유는 어디에 저장되나요?

서비스에 쓰기로 저장되며 조회 범위와 행 경로에 묶입니다. 그래서 축을 바꿔도 같은 행이면 사유가 따라오고 화면을 닫아도 남습니다. 사유 구분과 내용은 나중에 고치거나 지울 수 있습니다.

AI 에이전트는 무엇을 하나요?

감시 규칙 다섯 개를 돌려 걸린 항목을 받을 역할별 대기함에 올립니다. 규칙은 제품 수익 계획 차이 금액, 용역 포함률 상한, 월말 이연 용역분 임계, 운송 30일 초과 라인의 이연분, 용역 포함률 요인 손실입니다. 샘플에서는 한 번 실행에 15건이 올라왔습니다.

에이전트를 여러 번 실행하면 보고가 쌓이나요?

같은 날에는 한 번만 실행됩니다. 두 번째 실행은 하루 한 번 제한으로 건너뛰고 그 사실이 실행 기록에 남으므로 보고가 중복되지 않습니다. 이 판정은 화면이 아니라 서비스가 맡습니다.

보고서는 어떻게 만드나요?

AI 분석 창의 보고서 버튼을 누르면 브라우저에서 PowerPoint 파일을 만들어 내려받습니다. 현재 범위의 요약 · 조회 결과 표 · 차트 · 워터폴 · 해설에 쓴 근거 표가 들어가며 6장으로 구성되었음을 열어 확인했습니다. 별도 서버 처리는 없습니다.

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

행 · 열 배치, 분석 항목, 보기 방식, 기간이 저장됩니다. 기본 레이아웃으로 지정하고 자동 조회를 켜 두면 화면을 열 때 같은 모습으로 조회된 채 시작합니다. 이름 변경 · 기본 지정 · 삭제는 레이아웃 관리 창에서 합니다.

도입과 운영

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

표준 실행은 SAP 표준 T-code 가 담당하고 이 화면은 조회 · 검증 관점을 더해 확장합니다. 청구 문서(VF03), 판매 오더(VA03), 납품(VL03N), 고객 개별 항목(FBL5N), 수익성 분석(KE30)의 값을 같은 문서 · 필드에서 읽어 서로 맞춰 봅니다. 기존 표준 리포트를 없앨 필요는 없습니다.

운영 SAP 에 연결하려면 무엇이 필요한가요?

CDS 뷰와 분석 쿼리, 접근 제어, 서비스 정의를 전송하고 서비스를 게시한 뒤 화면의 서비스 주소를 바꿉니다. 그 전에 용역 포함률 원천, 운송 일수 기준, 환율 기준 같은 정하는 일이 먼저입니다. 소요는 회사의 계약 구조와 전송 절차에 따라 달라 일정으로 단정하지 않습니다.

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

회사코드 조회 권한을 접근 제어 역할 한 곳에서 겁니다. 권한이 없으면 행이 돌아오지 않으므로 화면에서 따로 숨기지 않습니다. 에이전트 보고도 받을 역할별 대기함으로 나뉘어 있습니다.

대용량이면 느려지지 않나요?

수천만 건이면 합산을 데이터베이스에서 하고 청구월을 필수 범위로 둡니다. 원천 라인은 500줄씩 나눠 읽고 열 조합과 행 수에는 상한이 있습니다. 응답 시간 기준은 도입 전에 정해 두세요.

용역 포함률이나 매핑이 바뀌면 어떻게 하나요?

용역 포함률은 기준 테이블의 데이터이므로 행을 바꾸면 됩니다. 차원 추가는 큐브 뷰에 필드를 더하고 쿼리에 노출하는 일이며 화면은 서비스가 알려 주는 차원 목록을 읽어 칩을 만듭니다. 구조가 크게 바뀌면 대사식도 함께 점검합니다.

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

확인된 사실만 적습니다. 이 화면은 IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)의 수행의무 구분과 이행 시점을 점검하도록 만든 분석 화면이며, 시행일과 경과규정은 이 글에서 다루지 않습니다. 회사의 계약 조건에 따라 점검 범위가 달라질 수 있습니다.

이 화면의 결과를 그대로 회계 처리나 세무 신고에 써도 되나요?

점검 도구이며 최종 판단은 회사와 감사인이 합니다. 운송 · 보험 용역을 별도 수행의무로 볼지, 언제 인식할지는 계약 조건과 회계정책에 달려 있어 점검 필요 항목으로 다룹니다. 세무 신고는 회사와 세무 대리인 · 관세사가 판단하며 법정 · 감사용 숫자는 표준 화면과 전표를 기준으로 합니다.