SAP 수출 물류비 다차원 분석 — 항로·포워더·운송수단별 물류비를 끌어다 놓으며 보고 예정 대비 차이의 요인까지
큐브 집계 · 드래그 앤 드롭 축 구성 · 칸에서 선적 문서까지의 드릴스루 · 예정 대비 차이와 요인 워터폴 · 행에 남는 변동 사유 · 숫자를 모델에 맡기지 않는 AI 분석 · 규칙에 걸리면 역할별로 올리는 AI 에이전트 — 소개 영상과 실제 화면 33종, 그리고 CDS 구성까지
소개 영상블로그 목차 순서대로 · 자막 포함
개발 배경 — 이 앱을 사용해야 하는 이유
수출 물류 담당자와 관리회계 담당자가 매달 받는 질문은 비슷합니다. 어느 항로와 포워더에서 물류비가 얼마나 늘었나, 운임과 할증, 보험료, 수수료 중 무엇이 늘었나, 예정과 얼마나 달랐고 왜 달랐나. 지금은 이 답이 운송 비용 문서 · 포워더 청구서 · 엑셀 피벗에 흩어져 있어서 한 번 묻고 답을 맞추는 데 반나절이 갑니다.
이 화면은 선적 라인을 선적월 · 항로 · 포워더 · 운송수단 · 인코텀즈 · 제품그룹 단위의 큐브로 한 번 묶어 두고, 같은 큐브에서 축을 끌어다 놓으며 위 질문에 답합니다. 숫자는 모두 서비스가 계산하고 화면과 AI 해설은 그 숫자를 읽기만 합니다. 어느 칸이든 누르면 그 금액을 만든 선적 문서 라인이 열려 “이 숫자 맞아?”를 그 자리에서 확인할 수 있습니다.
사용 방법
- 조회조건 입력 — 회사코드(필수, 기본 1000)와 시작 · 종료 기간(필수, 기본은 데이터가 있는 전 기간)을 정합니다. 예정 기준은 예정 물류비 v1 입니다.
- 조회 — 누르면 큐브를 한 번 읽어 옵니다. 이후 축을 바꾸는 일은 화면 안에서 즉시 다시 집계하며 서비스를 다시 부르지 않습니다.
- 축 배치 — 차원 칩(선적월 · 분기 · 도착 권역 · 도착 국가 · 항로 · 포워더 그룹 · 운송수단 · 인코텀즈 · 제품그룹 · 운임 통화 · 사업부)을 끌어 행 · 열 · 사용 안 함 칸으로 옮깁니다. 칩을 눌러 나오는 메뉴로도 옮길 수 있습니다. 행은 최대 3개, 열은 최대 2개까지입니다.
- 항목과 보기 방식 — 기본 항목 · 계산항목을 고르고 차원 보기 · 단계 보기를 바꿉니다. 단계 보기는 기본 운임에서 물류비 합계까지 한 줄씩 쌓아 보여 줍니다.
- 필터 — 차원 칩의 필터 아이콘으로 값을 여러 개 고릅니다. 표 · 차트 · 요약이 함께 바뀝니다.
- 역할별 요약 — CFO · 영업 · 물류 · 구매 책임자 중 하나를 고르면 그 역할이 보는 축과 항목으로 맞춥니다.
- 예정 대비 — 켜면 기준 · 차이 · 차이율이 붙고 차이 사유를 남길 수 있습니다. 차이 분해 차트에서 요인을 고릅니다.
- 드릴스루 — 셀을 누르면 그 셀을 이루는 원천 선적 문서 라인을 보고, 셀 값과 원천 합계가 같은지 확인합니다.
- AI 분석 · AI 에이전트 — 점검 필요 항목을 해설하고 보고서(PPTX)를 만들며, 감시 규칙을 하루 1회 실행합니다.
- 레이아웃 — 현재 배치를 저장하고 다음에 불러오거나 열 때 자동 조회로 지정합니다.
산출 · 대사 단계
모든 식은 서비스가 계산합니다. 검증 결과는 12번 절에 있습니다.
- 환산 — 외화 운임 × 환율 = 원화 운임(환율은 가정값).
- 물류비 합계 — 기본 운임 + 할증료 + 보험료 + 포워더 수수료 · 부대비.
- 물류비율(%) — 물류비 합계 ÷ 매출(원화) × 100.
- CBM당 물류비 — 물류비 합계 ÷ 적재 용적(CBM).
- 큐브 집계 — 원천 선적 라인을 (선적월 · 항로 · 포워더 · 운송수단 · 인코텀즈 · 제품그룹) 단위로 더합니다. 큐브 합 = 원천 합이어야 합니다.
- 차이 분해 — 총차이 = 실적 − 예정. 물량 · 믹스 · 운임 단가 · 환율 · 할증 · 보험료 · 수수료 · 미계획 8개 요인을 순서대로 떼어 내고 요인 합이 총차이와 같은지 검산합니다.
- 드릴 대사 — 셀 값 = 그 셀의 원천 라인 합계.
판정 규칙
화면은 판정을 단정하지 않고 점검 필요 · 확인 필요로 표시합니다. 임계값은 샘플 기준이며 고객사 기준으로 바꾸어야 합니다.
| 항목 | 점검 필요로 보는 조건(샘플 기준) | 비고 |
|---|---|---|
| 물류비 합계 | 예정 대비 차이가 500만원 이상이고 5% 이상 | 비용이므로 증가는 빨강, 감소는 초록 |
| 물류비율(%) | 예정 대비 0.2%p 이상 상승 | 물류비 합계 ÷ 매출(원화) |
| CBM당 물류비 | 예정 대비 5% 이상 상승 | 물류비 합계 ÷ 적재 용적 |
| 할증 비중(%) | 규칙 R3 기준값 초과 | 할증료 ÷ 기본 운임 |
| 예정 없는 물류비 | 예정이 없는 조합에서 실적 발생 | 미계획 요인으로 분리하며 대사 차이와 섞지 않음 |
실행 화면
실제로 돌아가는 화면 33종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있습니다. 숫자는 모두 같은 샘플 자료에서 나온 것이라 화면끼리 맞춰 보셔도 됩니다. 거래처 이름과 문서번호는 모두 가상이고 환율은 가정값입니다.
처음 열었을 때





역할별 요약




축을 바꿔 보기




칸에서 원천 문서까지



계산항목과 단계 보기


예정 대비 차이와 요인분해




AI 분석



AI 에이전트



레이아웃 저장



좁은 범위 안내


SAP 표준 기능 확장 포인트
표준 실행은 SAP 표준 T-code 가 담당하고 이 화면은 조회 · 검증 관점을 더해 확장합니다. 법정 · 감사 · 신고 대응은 표준 화면 기준으로 합니다.
| 표준 T-code | 용도 | 이 화면과의 연결 |
|---|---|---|
| VA03 | 판매 오더 조회 | 인코텀즈 · 납품 조건 확인 |
| VL03N | 출고 납품 조회 | 선적일 · 선적서류 번호 확인 |
| VF03 | 청구 문서 조회 | 매출(원화) 원천 확인 |
| VI03 | 운송 비용 문서 조회 | 운임 · 할증 · 부대비 원천 확인(도입 시 구성 확인 필요) |
| FBL5N | 고객 개별 항목 조회 | 수금 · 미수 상태 확인 |
| KE30 | 수익성 분석 보고 | 공헌이익 관점의 비교 대상 |
CDS 구성
아래 CDS 뷰는 운영 연결을 위한 스케치입니다. 실제 이름 · 원천 매핑은 도입 시 고객 네임스페이스에 맞춰 확정합니다.
원천
| 구분 | 원천(표준) | 내용 |
|---|---|---|
| 선적 · 납품 | LIKP · LIPS | 선적일 · 납품 수량 · 용적 |
| 청구 | VBRK · VBRP | 매출 · 환율 · 인코텀즈 |
| 운송 비용 | VFKP · VFKN | 운임 · 할증 · 부대비(도입 시 확정 필요) |
| 고객 · 국가 | KNA1 | 도착 국가 |
① 물류비 기본 뷰 I_ExpFreightBase
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '수출 물류비 기본'
define view entity I_ExpFreightBase
as select from lips as i
inner join likp as h on h.vbeln = i.vbeln
inner join vfkp as f on f.rebel = h.vbeln
{
key h.vbeln as ShipDoc,
key i.posnr as Item,
h.wadat_ist as ShipDate,
f.netwr * f.kurs as FreightKrw,
f.zuschlag as Surcharge,
f.versich as Insurance,
f.nebenkost as Fee,
i.volum as Cbm
}
② 물류비 큐브 I_ExpFreightCube
@Analytics.dataCategory : #CUBE
@EndUserText.label : '수출 물류비 큐브'
define view entity I_ExpFreightCube
as select from I_ExpFreightBase
{
key substring( cast( ShipDate as abap.char(8) ), 1, 6 ) as FiscalPeriod,
@Aggregation.default : #SUM sum( FreightKrw ) as Freight,
@Aggregation.default : #SUM sum( Surcharge ) as Surcharge,
@Aggregation.default : #SUM sum( Insurance ) as Insurance,
@Aggregation.default : #SUM sum( Fee ) as Fee,
@Aggregation.default : #SUM sum( Cbm ) as Cbm
}
group by ShipDate
③ 분석 쿼리 · 서비스 정의
@Analytics.query : true
define view entity C_ExpFreightQuery as select from I_ExpFreightCube
{ @Consumption.filter : { mandatory : true } key FiscalPeriod, Freight, Surcharge, Insurance, Fee, Cbm }
define service UI_ExpFreight { expose C_ExpFreightQuery as ExpFreight; }
접근 제어(DCL)는 영업조직 단위 권한 객체로 건다고 가정하며 도입 시 확정 필요입니다.
자주 묻는 질문
셀 금액과 원천 선적 문서 합계가 정말 같습니까?
같습니다. 큐브가 원천 라인을 더해 만든 값이기 때문입니다. 자동 검증에서 셀을 눌러 드릴스루 합계와 셀 금액을 비교했고 시험한 셀은 모두 일치했습니다. 일치하지 않으면 같은 자리에 확인 필요 표시가 나옵니다.
물류비 합계는 어떻게 계산합니까?
기본 운임 + 할증료 + 보험료 + 포워더 수수료·부대비입니다. 이 식은 화면 코드가 아니라 서비스의 계산항목 목록에 들어 있고 화면은 그대로 풀어 합산합니다. 물류비율은 물류비 합계를 매출(원화)로, 용적당 물류비는 적재 용적(CBM)으로 나눕니다. 비율은 합계를 더하지 않고 식을 다시 계산합니다.
환율은 실제 환율입니까?
아닙니다. 외화 운임에 줄마다의 환율을 곱해 원화 운임을 만들며, 환율과 단가, 거래처는 모두 샘플용 가상 값(가정값)입니다. 차이 분해에서는 환율 요인이 따로 잡혀 환율 영향과 운임 단가 영향을 가를 수 있습니다.
큐브는 왜 따로 두나요?
원천 라인을 그대로 묶으면 축을 바꿀 때마다 수천 줄을 다시 훑어야 합니다. 같은 선적월·항로·포워더·운송수단·인코텀즈·제품그룹 조합을 미리 한 행으로 더해 두면 축 변경은 그 행들을 다시 묶는 일이 됩니다. 이 사례에서는 원천 6,702줄이 861행으로 줄었습니다.
축을 바꾸면 서버를 다시 부릅니까?
부르지 않습니다. 조회할 때 큐브를 한 번 읽고 이후는 브라우저가 이미 받은 행을 다시 묶습니다. 자동 검증에서 축 배치를 여러 가지로 바꾸며 서비스 요청 수를 세었고 늘지 않았으며, 어느 배치에서도 총합이 큐브 총합 8,798,612,470원과 같았습니다.
차이가 큰 원인을 알려 주나요?
단정하지 않습니다. 요인 분해와 AI 분석은 점검 필요 항목과 근거 수치만 보여 주며, 원인 판단은 담당자가 합니다.
키보드만으로도 축을 옮길 수 있습니까?
옮길 수 있습니다. 차원 칩을 누르면 행으로·열로·사용 안 함으로 이동하는 메뉴가 나옵니다. 끌어다 놓기는 마우스 사용자를 위한 편의이고 같은 일을 메뉴로도 할 수 있습니다.
운영 데이터로 연결하려면 무엇을 바꿉니까?
CDS 구성의 서비스 정의를 활성화한 뒤 앱의 서비스 선언 주소만 바꿉니다. 원천 매핑과 접근 제어는 도입 시 확정이 필요합니다.