수출 솔루션 · 수출 물류비 분석

SAP 수출 컨테이너 적재·분할 선적 다차원 분석 리포트 — 비어 있는 컨테이너 공간의 운임까지 계획 대비로 읽는 수출 물류비 분석

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

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

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

수출 물류 회의의 질문은 늘 비슷합니다. 컨테이너를 얼마나 채워 보냈나, 분할 선적으로 운임이 얼마나 더 들었나, 계획보다 물류비가 늘었다면 어디서 늘었나. 지금 이 답은 판매오더(VA03) · 납품(VL03N) · 청구(VF03) 화면과 포워더 자료, 엑셀로 흩어져 있어 매달 숫자를 모아 맞추는 데 시간이 듭니다.

이 앱은 청구 문서 품목을 컨테이너 적재 관점으로 한 번 읽어 큐브로 만들고, 같은 큐브에서 표 · 차트 · 요약 · 드릴스루 · 계획 대비 · 요인분해를 모두 그립니다. 축을 바꿔도 서버를 다시 부르지 않고, 칸을 누르면 그 금액을 만든 선적 문서 라인이 열려 “어느 숫자가 맞나” 하는 회의를 줄입니다. 이 글의 모든 숫자는 가상의 검증용 샘플이며 요율 · 컨테이너 용적 · 임계값은 가정값입니다.

한 줄 요약 — 물류비 합계는 누구나 보여 줍니다. 이 앱의 값은 그 다음에 있습니다: 빈 컨테이너 공간에 쓴 운임을 따로 보이고, 계획과의 차이를 아홉 요인으로 가르고, 사유를 행에 남기고, 사람이 열지 않아도 감시하며, 그 숫자가 원천 문서와 1원도 어긋나지 않는지 매번 검산합니다.

핵심 포인트 일곱 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 축을 바꿔도 갈라지지 않는 큐브선적월 · 선적항 · 컨테이너 유형 · 제품 그룹 · 고객 · 국가 등 11개 차원을 끌어다 놓아 행 3단계 · 열 2단계로 봅니다. 표 · 차트 · 요약이 한 번 읽은 같은 큐브에서 나와 합계가 어긋날 자리가 없습니다.선적항별 · 고객별 · 컨테이너별 리포트를 따로 만들고, 합계가 다르면 리포트를 맞추는 회의를 엽니다.
② 칸에서 선적 문서 라인까지표의 칸을 누르면 그 금액을 만든 청구 · 선적 문서 라인이 열리고, 칸 금액과 원천 합계가 같은지 그 자리에서 보입니다.리포트를 닫고 VF03 · VL03N 을 다시 열어 조건을 손으로 맞추고 건건이 합산합니다.
③ 비어 있는 컨테이너 공간의 운임이 보인다해상 운임을 적재율로 나누어, 화물이 실제로 차지한 몫과 빈 공간에 쓴 몫(미적재 공간 운임)을 갈라 보여 줍니다. 검증용 샘플에서 미적재 공간 운임은 6,787백만원입니다.운임 총액만 보이고, 컨테이너가 얼마나 찼는지는 포워더 자료와 엑셀로 따로 대조합니다.
④ 총차이를 아홉 요인으로선적 건수 · 건당 화물량 · 적재율 · 컨테이너당 운임 · 분할 선적 비율 · 분할 건당 추가비 · 서류비 · 미계획 선적 · 계획 미이행으로 가르고, 합이 총차이와 같은지 매번 검산합니다.엑셀로 밤새 분해하고 합계가 총차이와 맞는지 다시 손으로 맞춥니다.
⑤ 차이 사유가 행에 남는다사유는 조회 범위와 행 경로에 묶여 저장되어 축을 바꿔도, 다시 열어도 그 행에 따라옵니다. CSV 와 AI 근거 표에도 함께 실립니다.같은 질문을 매달 다시 하고, 지난달 답은 메일함에서 찾습니다.
⑥ 사람이 열지 않아도 도는 감시감시 규칙 5개에 임계값과 받을 역할(CEO · CFO · 영업 · 물류)이 붙어 있습니다. 걸린 항목은 역할별 대기함에 올라가고 하루 한 번 제한은 서버가 판정합니다.물류비가 늘어난 날 아무도 화면을 열지 않으면 그대로 지나갑니다.
⑦ 보고서와 AI 해설까지 한 화면에서지금 범위의 표와 차트를 담은 PowerPoint 보고서가 브라우저에서 바로 만들어집니다. AI 는 서비스가 계산한 숫자를 읽어 설명만 하고, 넘긴 근거 표를 펼쳐 볼 수 있습니다.화면을 캡처하고 숫자를 옮겨 적어 보고서를 다시 만들며, AI 가 만든 숫자를 써도 되는지부터 따져야 합니다.

사례로 보는 효과 — 계획보다 1,608백만원 늘어난 물류비의 요인

검증용 샘플에서 총 물류비는 계획 19,735백만원, 실적 21,343백만원으로 총차이가 +1,608백만원(+8.1%) 였습니다. 합계만 보면 “물류비가 늘었다”에서 끝납니다. 아홉 요인으로 가르자 가장 큰 몫은 미계획 선적(+1,005백만원), 그 다음이 적재율(+454백만원) 이었습니다. 컨테이너 적재율은 66.77% 로 계획의 68.63% 보다 낮았고, 같은 화물을 실으려 컨테이너가 더 쓰였다는 뜻입니다. 반대로 계획했지만 실행되지 않은 선적은 −342백만원으로 차이를 줄였습니다.

요인 전체는 미계획 선적 +1,005 · 적재율 +454 · 컨테이너당 운임 +216 · 선적 건수 +136 · 건당 화물량 +73 · 분할 선적 비율 +45 · 분할 건당 추가비 +11 · 서류비 +11 · 계획 미이행 −342(백만원) 이며, 원 단위로는 요인 합계가 총차이 1,608,098,559원과 정확히 같습니다. 선적항으로 보면 부산항 +701, 인천항 +536, 광양항 +240, 평택 · 당진항 +163, 울산항 −32백만원이고, 컨테이너 유형으로는 20피트 일반이 +1,499백만원으로 가장 큽니다. 비어 있는 공간에 쓴 운임(미적재 공간 운임)은 6,787백만원으로 계획 5,922백만원보다 865백만원 많았습니다. 이 숫자는 원인을 확정하지 않으며, 어디를 먼저 점검할지와 어떤 사유를 남길지를 정하는 단서입니다.

행 한 줄(선적 조합)마다
총 물류비 T = N·(c/cap)·p/L + N·σ·f + N·k

N 선적 건수 · c 건당 화물 용적 · cap 컨테이너 용적 · p 컨테이너당 운임 · L 적재율 · σ 분할 선적 비율 · f 분할 건당 추가비 · k 건당 서류비. 한 요인씩 계획 값을 실적 값으로 바꾸어 가면 마지막에 실적 T 와 같아지므로 요인의 합은 총차이와 정확히 같습니다.

분해에는 조건을 걸었습니다. 요인 합계와 총차이가 1원이라도 어긋나면 화면이 오류로 표시합니다. 같은 조합이 계획과 실적 한쪽에만 있으면 억지로 나누지 않고 미계획 선적 · 계획 미이행으로 따로 세웁니다. 회의에서 “이 숫자 맞아?”라는 질문에 바로 답할 수 있다는 뜻입니다.

도입하면 달라지는 것

  • 회의의 주제 — “어느 리포트 숫자가 맞나”가 아니라 “어느 선적항 · 어느 컨테이너에서 계획이 벌어졌나”를 이야기합니다.
  • 분석 준비 — 차이 표 · 요인분해 · 사유 · 보고서가 한 화면에서 나와 엑셀 취합과 화면 캡처가 줄어듭니다.
  • 다음 달로 이어지는 기록 — 사유와 레이아웃이 남아 매달 같은 설명을 처음부터 다시 하지 않습니다.
  • 놓치지 않는 점검 — 화면을 열지 않은 날에도 규칙에 걸린 항목은 받을 역할의 대기함에 올라갑니다.

이런 회사에 맞습니다

컨테이너 단위로 수출하며 선적항 · 컨테이너 유형 · 인코텀즈가 여러 갈래인 제조 · 유통 회사, 분할 선적과 미적재 공간 때문에 운임이 계획과 벌어지는 일이 잦은 수출 · 물류 담당 조직, 그리고 수출 물류비를 월 단위로 계획과 견주어 경영진에 설명해야 하는 경영지원 조직에 맞습니다. 거래 통화가 여러 개여도 통화별로 나누어 대사합니다.

실행 화면

사용 방법

  1. 조회조건 입력 — 회사코드(필수, 기본 1000)와 시작 · 종료 기간(필수, 기본 2026-01 ~ 2026-09)을 정합니다. 비교 기준은 계획 버전으로 고정돼 있어 바꿀 수 없습니다.
  2. 조회 — 조회 버튼은 조회조건 영역의 오른쪽 끝에 있고 입력칸에서 Enter 를 눌러도 됩니다. 조회는 큐브를 한 번 읽는 동작이며 이후 축을 바꿔도 다시 읽지 않습니다.
  3. 요약 확인 — “집계 N건 · 원천 N줄”으로 읽은 규모를 보고, 역할(CEO · CFO · 영업 책임자 · 물류 책임자)을 바꿔 앞세우는 지표를 확인합니다.
  4. 축과 항목 정하기 — 레이아웃 보드에서 차원 칩을 끌어 행 · 열 · 쓰지 않는 차원 칸에 놓습니다. 행은 최대 3단계, 열은 최대 2단계입니다.
  5. 표 읽기 — 행의 화살표로 아래 차원으로 내려가고, 기준 대비를 켜면 칸마다 계획 · 차이 · 증감률이 붙습니다.
  6. 필터 — 필터 버튼 줄에서 차원 값을 여러 개 고릅니다. 같은 차원 안은 or, 차원 사이는 and 입니다.
  7. 칸 · 행 클릭 상세 — 칸을 누르면 원천 문서 라인이 열립니다. 차이가 난 행에서는 변동 사유 버튼으로 사유를 남깁니다.
  8. 분석 도구 — 상단 버튼은 레이아웃 → AI 분석 → AI 에이전트 → 기간별 요약 → CSV 순서입니다. 보고서(PowerPoint)는 AI 분석 창에서 내려받습니다.
  9. 내보내기 — 지금 표의 행 · 열 · 항목 그대로 CSV 로 저장합니다.
  10. 자동 조회 — 기본 레이아웃에 자동 조회를 지정해 두면 화면을 여는 순간 조회된 채 시작합니다.

무엇으로 만들었나

화면은 OpenUI5 표준 컨트롤로 만들고, 금액과 판정은 서비스가 계산합니다. 화면은 서비스가 준 숫자를 합산하고 배치만 합니다.

자리무엇왜 그렇게 두었나
화면 컨트롤OpenUI5 표준 컨트롤 — 피벗은 TreeTable, 필터와 대화상자는 표준 컴포넌트SAP 표준 화면 구성 요소를 그대로 써서 사내 보안 심사에서 새로 볼 것을 줄이기 위해
피벗 · 차트브라우저 안 큐브 재집계와 직접 그린 SVG 차트축을 바꿀 때 서버를 다시 부르지 않고, 외부 차트 라이브러리 없이 CDN 이 막힌 환경에서도 같은 화면이 나오게 하려고
집계 · 판정 로직금액 · 비율 · 요인분해는 서비스 쪽에서 계산하고 화면은 합산과 배치만 합니다화면마다 계산이 달라 숫자가 갈라지는 일을 막으려고
OData 서비스 구성OData V2 모델 하나. 읽기 전용 집합(큐브 · 계획 · 차원 · 측정값 · 드릴스루 라인 · 검산)과 쓰기 집합(변동 사유 · 레이아웃 · 감시 규칙 임계값 · 대기함 · 활동 기록), 펑션 3종(요인분해 · 해설 · 에이전트 실행)운영 시스템으로 옮길 때 서비스 주소만 바꾸면 되도록 화면과 데이터 공급을 분리하려고
보고서브라우저에서 zip · XML 로 PowerPoint 파일을 직접 만듭니다서버에 파일을 남기지 않고, 외부 라이브러리 없이 현재 범위를 바로 내려받게 하려고
테마 · 접근성sap_horizon 테마, 키보드로 닫히는 대화상자SAP 표준 화면과 같은 모양과 조작감을 유지하려고
항목내용
솔루션수출 솔루션
업무 영역수출 물류비 — 컨테이너 적재 · 분할 선적
관련 기준서 · 대상 영역관련 기준서 없음 · 대상 영역: 수출 물류비 분석
SAP 표준 T-codeVA03 · VL03N · VF03 · FBL5N · KE30
Namespacezui5.expload
화면 성격업무 분석 — 다차원 분석 리포트
데이터 연동OData V2
테마sap_horizon
SAP 표준 기능을 그대로 이어받은 부분 — 청구 · 납품 · 판매오더 문서의 필드(청구 문서 번호 · 품목 · 청구일 · 고객 · 인코텀즈 · 통화 · 용적)와 문서 번호 체계를 그대로 읽습니다. 그래서 칸에서 내려간 라인의 문서 번호를 VF03 · VA03 · VL03N 에 넣으면 같은 문서가 열립니다.

처음 열었을 때 — 조회 전에도 틀이 먼저 보입니다

조회조건 · 레이아웃 보드 · 피벗 틀은 조회 전부터 보입니다. 조회 한 번으로 큐브를 읽고 나면 축을 바꿔도 서버를 다시 부르지 않습니다.

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

회사코드와 시작·종료 기간만 정하면 되고, 기본값은 회사코드 1000 · 2026-01 ~ 2026-09 입니다. 쓰지 않는 차원 9개가 왼쪽 칸에, 행 축에는 제품 그룹 › 선적항이 올라 있습니다. 아직 조회 전이라 표는 비어 있고 안내 문구만 보입니다. 조회 버튼은 조회조건 영역의 오른쪽 끝에 있고 Enter 로도 조회됩니다.

조회 직후 — 피벗과 차트
조회 직후 — 피벗과 차트 — 한 번 읽은 큐브가 표와 차트, 역할별 요약으로 동시에 나타납니다.

집계 1,246건(원천 5,335줄)을 한 번 읽어 표 · 오른쪽 차트 · 상단 지표 4개를 그립니다. 총 물류비는 21,343백만원, 물류비율은 청구액 대비 1.59%, 미적재 공간 운임은 6,787백만원입니다. 각 숫자 아래 작은 글씨는 계획 값과 대비입니다. 빨간 숫자는 계획보다 비용이 늘어난 쪽입니다.

선적항을 열 축으로
선적항을 열 축으로 — 차원을 끌어다 놓으면 서버를 다시 부르지 않고 표가 다시 묶입니다.

선적항을 열 축으로 옮긴 모습입니다. 총합은 그대로이고 열 머리글만 부산항 · 인천항 · 광양항으로 바뀝니다. 이 동작은 네트워크 요청이 0건이며 브라우저에 올라온 큐브를 다시 묶는 것입니다. 열 축에 차원이 있으면 분석 항목은 첫 항목만 열에 펼쳐 보입니다.

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

표와 차트에 더 많은 공간을 주고 싶을 때 머리 영역을 접습니다. 접힌 줄에는 회사코드 · 기간 · 행 · 열 · 항목 수가 남아 지금 보고 있는 범위를 잊지 않게 합니다. 다시 펼치면 조건이 그대로 있습니다.

경영 요약 — 역할이 바뀌면 보는 숫자가 바뀝니다

역할 4개(CEO · CFO · 영업 책임자 · 물류 책임자)를 고르면 앞세우는 지표와 쪼개 보는 차원이 함께 바뀝니다.

CEO 요약
CEO 요약 — 제품 그룹 · 선적항별 총 물류비와 물류비율을 앞세웁니다.

CEO 는 물류비가 수출 채산에 주는 부담을 봅니다. 총 물류비 · 물류비율 · 미적재 공간 운임 · 청구액 네 개가 상단에 나오고 표는 제품 그룹 › 선적항으로 쪼개집니다. 역할을 바꿔도 다시 조회하지 않습니다.

CFO 요약
CFO 요약 — 선적월별 총 물류비와 적재 공간 운임, 분할 선적 추가비를 봅니다.

CFO 는 월별로 비용이 어느 달에 늘었는지를 계획과 견줍니다. 총 물류비 · 적재 공간 운임 · 분할 선적 추가비 · 물류비율이 지표로 올라오고 행 축은 선적월입니다.

영업 책임자 요약
영업 책임자 요약 — 수출 국가 · 고객별 선적 1건당 물류비를 봅니다.

영업 책임자는 어느 국가와 고객에게 보낼 때 물류비가 큰지를 봅니다. 선적 1건당 물류비 · 물류비율 · 선적 건수가 같이 나와 단가 협상이나 인코텀즈 조건을 점검할 근거가 됩니다.

물류 책임자 요약
물류 책임자 요약 — 선적항 · 컨테이너 유형별 적재율과 미적재 공간 운임을 봅니다.

물류 책임자는 빈 공간에 운임을 쓰는 구간을 찾습니다. 미적재 공간 운임 · 컨테이너 적재율 · 분할 선적 비율 · 화물 1㎥당 해상 운임이 지표이고, 표는 선적항 › 컨테이너 유형입니다. 적재율 66.77% 는 컨테이너 용적 중 화물이 차지한 비율입니다.

축 전환과 범위 — 컨테이너 유형 · 선적항 · 고객을 끌어다 놓습니다

행 3단계 · 열 2단계, 차원 값 다중 선택, 표와 차트의 너비 조절까지 모두 브라우저 안에서 처리합니다.

열 2단계 — 컨테이너 유형 × 선적항
열 2단계 — 컨테이너 유형 × 선적항 — 행 3단계 · 열 2단계까지 쌓을 수 있습니다.

컨테이너 유형과 선적항을 열 2단계로 올리고 제품 그룹 · 고객을 행으로 둔 조합입니다. 열 조합은 36개까지만 허용하고, 넘는 조합은 추가 단계에서 막고 안내합니다. 행을 펼치면 아래 차원으로 내려가고 차트도 같이 바뀝니다.

차원 값 다중 선택
차원 값 다중 선택 — 값마다 이름 · 코드 · 라인 수가 보입니다.

시간 외 차원마다 값을 여러 개 고를 수 있고, 한 차원 안에서는 or, 차원 사이에서는 and 로 묶입니다. 큐브에 실제로 있는 값만 올라오며 각 값에 원천 라인 수가 붙어 있습니다. 고르면 서버 재조회 없이 바로 반영됩니다.

선적항을 좁힌 결과
선적항을 좁힌 결과 — 부산항과 인천항만 남긴 표입니다.

선택한 필터는 필터 버튼 옆 괄호 숫자로 남아 어떤 범위를 보고 있는지 알 수 있습니다. 총계 · 차트 · 요약 지표가 같은 범위로 다시 계산됩니다. 필터를 풀면 전체 범위로 돌아옵니다.

표와 차트 너비 조절
표와 차트 너비 조절 — 가운데 손잡이를 끌어 너비를 바꾸고 브라우저가 기억합니다.

표와 차트 사이 손잡이를 끌면 차트가 넓어집니다. 정한 너비는 이 브라우저에 기억되고, 화면이 좁아지면 차트가 표 아래로 내려갑니다.

칸에서 선적 문서까지 — 숫자의 출처를 바로 봅니다

표의 칸 하나는 원천 문서 라인의 합입니다. 칸을 누르면 그 라인이 열리고 합계가 맞는지 확인합니다.

칸에서 선적 문서 라인까지
칸에서 선적 문서 라인까지 — 칸 금액과 원천 라인 합계가 같은지 머리에 표시합니다.

표의 칸을 누르면 그 금액을 만든 원천 문서 라인이 열립니다. 첫 칸 기준으로 전체 합계 21,343백만원이 원천 5,335줄의 합계와 일치한다는 줄이 위에 뜨고, 질의 조건도 함께 보입니다. 기본 500줄씩 읽고 더 보기로 이어서 읽습니다.

기간별 요약
기간별 요약 — 선적월별 건수와 실적 · 계획을 한 표로 봅니다.

기간별 요약은 선택한 범위를 월 단위로 묶은 표입니다. 선적 건수 · 청구액 · 적재 공간 운임 · 미적재 공간 운임 · 분할 선적 추가비 · 서류비 · 총 물류비와 계획 값이 한 줄에 있어 어느 달에서 차이가 났는지 먼저 찾을 때 씁니다.

계산항목 — 전기되지 않는 비율과 단가를 행으로

적재율 · 물류비율 같은 값은 문서에 쌓이지 않으므로 식으로 정의해 두고 표에서 계산합니다.

계산항목을 열로
계산항목을 열로 — 물류비율 · 선적 1건당 물류비 · 화물 1㎥당 해상 운임.

전기되지 않는 비율과 단가를 계산항목으로 정의해 두었습니다. 분석 항목에서 고르면 표와 차트에 같은 방식으로 나타나고 소계와 총계도 식대로 다시 계산됩니다. 비율은 항목끼리 더하지 않고 분자 · 분모를 먼저 더한 뒤 나눕니다.

단계 보기
단계 보기 — 총 물류비에서 적재 · 미적재 · 분할 · 서류비로 풀어 봅니다.

단계 보기는 계산 항목들을 위에서 아래로 한 줄씩 펼쳐 보는 방식입니다. 총 물류비가 적재 공간 운임 · 미적재 공간 운임 · 분할 선적 추가비 · 서류비로 어떻게 이루어지는지 한눈에 읽을 수 있습니다.

계획 대비 차이 — 같은 표가 물류비 회의 자료가 됩니다

계획과 실적을 한 칸에 놓고, 차이를 요인으로 나누고, 사유를 남깁니다.

기준 대비 차이 모드
기준 대비 차이 모드 — 칸마다 실적 · 계획 · 차이 · 증감률을 보여 줍니다.

기준 대비를 켜면 칸마다 실적 아래에 계획 · 차이 · 증감률이 붙습니다. 색은 비용에 준 영향 방향 기준이고, 금액 차이 150만원과 비율 5% 를 둘 다 넘을 때만 칠합니다. 하나만 넘으면 색 없이 숫자만 둡니다. 행 앞의 문서 아이콘은 변동 사유 입력 버튼입니다.

변동 사유 입력
변동 사유 입력 — 사유 구분과 내용을 남기면 다음 조회에도 따라옵니다.

차이가 난 행에 사유 구분과 내용을 적습니다. 키는 조회 범위와 행 경로라서 같은 범위를 다시 열면 사유가 그대로 나오고 CSV 와 AI 근거 표에도 실립니다. 적은 사유는 이미 설명된 차이로 보고 AI 분석에서는 건너뜁니다.

워터폴과 요인분해
워터폴과 요인분해 — 계획 19,735 에서 실적 21,343 까지 요인별로 잇습니다.

총차이 1,608백만원을 선적 건수 · 건당 화물량 · 적재율 · 컨테이너당 운임 · 분할 선적 비율 · 분할 건당 추가비 · 서류비 · 미계획 선적 · 계획 미이행 아홉 요인으로 나눕니다. 미계획 선적이 +1,005백만원으로 가장 크고 계획 미이행은 −342백만원입니다. 아래 검산 줄에 요인 합계와 총차이가 같음을 매번 보여 줍니다.

AI 분석과 보고서 — 같은 숫자를 읽고 설명합니다

AI 는 서비스가 계산한 숫자를 읽기만 합니다. 근거 표를 펼쳐 확인하고 보고서로 내려받습니다.

AI 분석
AI 분석 — 현재 범위를 읽어 요약과 핵심 발견을 씁니다.

AI 분석은 지금 화면의 범위(기간 · 필터 · 역할)를 서비스에 보내 요약과 핵심 발견을 받아 옵니다. 기본은 규칙 기반 해설이며 모델 연결은 서비스 설정 한 곳으로만 켜고 기본은 꺼져 있습니다. 숫자는 서비스가 계산한 값만 쓰고 원인은 단정하지 않고 점검 필요 항목으로 적습니다.

근거 표와 보고서
근거 표와 보고서 — 해설이 읽은 숫자를 펼쳐 보고 보고서를 내려받습니다.

근거 표 펼치기를 누르면 해설에 쓴 숫자가 행으로 나옵니다. 이미 사유가 적힌 행은 건너뛴 사실이 함께 표시됩니다. 같은 창의 보고서 버튼은 현재 범위의 표와 차트가 든 PowerPoint 파일을 브라우저에서 만들어 내려받습니다.

AI 에이전트 — 감시 규칙과 대기함

규칙에 걸린 항목을 받을 역할의 대기함에 올리고, 실행 기록을 남깁니다.

감시 규칙
감시 규칙 — 임계값과 주기, 받을 역할을 규칙마다 정합니다.

감시 규칙 5개가 있습니다. 총 물류비 계획 차이 금액 · 물류비율 상한 · 미적재 공간 운임 비중 상한 · 컨테이너 적재율 하한 · 분할 선적 추가비 금액이며, 임계값과 사용 여부를 화면에서 바꿀 수 있습니다. 임계값은 검증용 샘플 분포에서 정한 가정값입니다.

대기함
대기함 — 규칙에 걸린 항목이 받을 역할별로 올라옵니다.

지금 실행하면 규칙에 해당한 항목이 역할별 대기함에 보고로 올라옵니다. 보고에는 대상 행 경로와 금액이 있고 역할로 걸러 볼 수 있습니다. 운영에서는 이 실행을 SM36 배치나 cron 에 연결하는 방식으로 이어 갑니다.

실행 기록
실행 기록 — 하루 한 번 제한은 서버가 판정합니다.

실행 기록에는 시각 · 호출 주체(사용자 · 화면 타이머 · 배치) · 결과 · 발견 건수가 남습니다. 같은 날 두 번째 실행은 서버가 하루 한 번 제한으로 건너뜀 처리하고 사유와 첫 실행 번호를 기록합니다. 걸린 항목이 없어도 활동 기록은 남습니다.

레이아웃 저장과 복원

자주 쓰는 구성을 이름 붙여 저장하고, 기본 레이아웃은 열자마자 조회까지 마칩니다.

레이아웃 저장
레이아웃 저장 — 축 · 조회조건 · 항목 · 접힘 상태를 이름 붙여 저장합니다.

지금 상태를 이름 붙여 저장합니다. 기본 레이아웃으로 지정하고 자동 조회를 켜면 다음에 열 때 조회까지 끝낸 상태로 시작합니다. 이름 바꾸기 · 삭제는 관리 창에서 합니다.

다시 열었을 때
다시 열었을 때 — 저장한 기본 레이아웃으로 조회된 채 시작합니다.

화면을 새로 열었는데 저장해 둔 월간 회의용 레이아웃이 선택돼 있고 표와 차트가 이미 그려져 있습니다. 저장은 서비스에 기록되므로 새로 고침 뒤에도 남습니다.

좁은 화면과 한계 — 표를 반쯤 그리지 않습니다

화면이 좁아지면 차트를 아래로 쌓고, 범위가 너무 크면 좁히라고 안내합니다.

390px 폭 화면
390px 폭 화면 — 차트는 표 아래로, 조회 영역은 세로로 쌓입니다.

좁은 화면에서는 조회조건이 한 줄씩 쌓이고 상단 버튼은 아이콘만 남습니다. 차트는 표 아래로 내려가 가로 스크롤 없이 읽을 수 있습니다.

범위 상한 안내
범위 상한 안내 — 열 조합이 36개를 넘으면 안내하고 막습니다.

고객을 열 축에 더해 열 조합이 60개가 되는 경우입니다. 반쯤 그린 표를 보여 주지 않고 최대 36개를 넘는다는 안내를 띄우며 열 차원을 줄이도록 합니다. 행 노드가 500개를 넘는 조합도 같은 방식으로 막습니다.

화면 뒤에서 일어나는 일

조회 버튼을 누르면 큐브(차원 조합별 집계)와 계획을 한 번 읽습니다. 이후에는 아래 순서로 처리되며, 축을 바꾸면 2단계부터 다시 돌고 서버는 부르지 않습니다.

  1. 큐브 읽기 — 회사코드 · 기간으로 큐브와 계획을 읽습니다.
  2. 필터 적용 — 차원 값 필터(or · and)를 브라우저에서 적용합니다.
  3. 묶기 — 레이아웃 보드의 행 · 열 축대로 트리를 만들고 소계 · 총계를 계산합니다. 비율은 분자 · 분모를 먼저 더합니다.
  4. 그리기 — 같은 트리를 표와 SVG 차트로 그립니다.
  5. 칸을 누르면 — 그 칸의 차원 값 전부를 조건으로 원천 라인을 500줄씩 읽고, 칸 금액과 원천 합계를 대조합니다.
  6. 요인분해 · 해설 · 에이전트 — 서비스의 펑션을 불러 서비스가 계산한 값을 받아 옵니다.

칸 색칠 · 검산 · 감시 판정 로직

금액과 비율은 서비스가 계산하고 화면은 합산과 배치만 합니다. 아래 규칙은 판정 조건 → 결과 상태 → 사용자 조치 순서이며 임계값은 검증용 샘플에서 정한 가정값입니다.

판정 조건결과 상태사용자 조치
비용 항목에서 계획 대비 증가가 150만원 이상이고 증감률도 5% 이상(비율 항목은 0.5%p 이상)빨강 — 점검 필요행의 변동 사유 버튼으로 사유를 남기거나 요인분해에서 원인 요인을 확인
같은 조건에서 비용이 감소초록 — 유리한 차이계획 미이행 · 건수 감소 여부를 확인
금액과 비율 중 하나만 임계를 넘음색 없음숫자만 확인(색은 둘 다 넘을 때만 칠함)
요인 합계와 총차이의 차이가 1원 미만검산 줄 성공그대로 사용
요인 합계와 총차이의 차이가 1원 이상검산 줄 오류 표시 — 확인 필요범위 · 필터를 확인하고 서비스 담당자에게 문의
칸 금액과 드릴스루 합계가 같음성공 줄그대로 사용
칸 금액과 드릴스루 합계가 다름경고 줄 — 확인 필요조회 범위와 질의 조건 확인
열 조합 36개 초과 또는 행 노드 500개 초과안내 문구 · 표 생략열 · 행 차원을 줄이거나 필터로 범위를 좁힘
감시 규칙 5개 중 임계 도달받을 역할의 대기함에 보고 등록대기함 보고의 행 경로로 이동해 점검
같은 날 두 번째 에이전트 실행하루 한 번 제한으로 건너뜀활동 기록의 첫 실행 번호 확인

산출식과 대사식

순서식설명
①해상 운임 = 컨테이너 수 × 컨테이너당 운임선적 한 줄(품목)마다 계산
②적재율 = 화물 용적 ÷ 적재 가능 용적 × 100적재 가능 용적 = 컨테이너 용적 × 컨테이너 수 (컨테이너 용적은 샘플 가정값)
③적재 공간 운임 = 해상 운임 × 적재율, 미적재 공간 운임 = 해상 운임 − 적재 공간 운임빈 공간에 쓴 운임을 따로 봄
④분할 선적 추가비 = 분할 건수 × 건당 추가비, 서류 · B/L 비용 = 건당 서류비샘플 가정값
⑤총 물류비 = 적재 공간 운임 + 미적재 공간 운임 + 분할 선적 추가비 + 서류비원천 라인마다 성립하는지 전수 검사
⑥물류비율 = 총 물류비 ÷ 청구액(원화) × 100소계 · 총계는 분자 · 분모를 먼저 합산한 뒤 나눔
⑦미적재 비중 = 미적재 ÷ (적재 + 미적재) × 100, 화물 1㎥당 해상 운임 = (적재 + 미적재) ÷ 화물 용적계산항목
⑧총차이 = Σ 아홉 요인 (선적 건수 · 건당 화물량 · 적재율 · 컨테이너당 운임 · 분할 비율 · 분할 건당 추가비 · 서류비 · 미계획 선적 · 계획 미이행)한 요인씩 계획 값을 실적 값으로 바꾸는 순차 대체, 서류비 요인이 원 단위 반올림 차이를 흡수

요인분해는 같은 조합(선적월 · 선적항 · 컨테이너 유형 · 제품 그룹 · 고객 · 인코텀즈)의 실적과 계획을 맞춰 위 식에서 한 요인씩 바꾸어 계산합니다. 계획에 없던 조합의 실적은 미계획 선적, 실적이 없는 조합의 계획은 계획 미이행(음수)으로 모읍니다. 외화(미국 달러 · 유로 · 일본 엔 · 중국 위안) 청구액은 통화별로 따로 대사하고 서로 더하지 않으며, 환율은 샘플의 가정값입니다.

조회조건

조건필수기본값서비스에 보내는 조건
회사코드필수1000회사코드 = 1000
시작 기간필수2026-01선적월 ≥ 2026-01
종료 기간필수2026-09선적월 ≤ 2026-09
비교 기준(계획 버전)고정LOD26계획 버전 = LOD26
차원 값 필터선택없음큐브에 올라온 뒤 브라우저에서 or · and 로 적용
드릴스루 질의자동칸의 행 경로 + 열 조합칸이 정한 차원 값 전부 + 500줄씩 이어 읽기

결과 컬럼

컬럼 · 항목의미 · 산출식단위
총 물류비해상 운임 · 분할 선적 추가비 · 서류비의 합원(표는 백만원)
적재 공간 운임 · 미적재 공간 운임해상 운임을 적재율로 나눈 두 부분원
분할 선적 추가비 · 서류 · B/L 비용분할 선적 건수와 서류비원
청구액(원화)수출 청구 금액의 원화 환산원
선적 건수 · 분할 선적 건수 · 사용 컨테이너 수원천 라인 기준 건수건 · 개
화물 용적 · 적재 가능 용적적재율의 분자 · 분모㎥
계산항목 6종물류비율 · 선적 1건당 물류비 · 컨테이너 적재율 · 미적재 비중 · 화물 1㎥당 해상 운임 · 분할 선적 비율% · 원
요인 9종선적 건수 · 건당 화물량 · 적재율 · 컨테이너당 운임 · 분할 선적 비율 · 분할 건당 추가비 · 서류비 · 미계획 선적 · 계획 미이행원

차원은 선적월 · 분기 · 선적항 · 컨테이너 유형 · 제품 그룹 · 사업부 · 고객 · 수출 국가 · 지역 · 결제 통화 · 인코텀즈 11개입니다.

좁은 화면에서 달라지는 것

영역달라지는 모습
조회조건한 줄에 하나씩 세로로 쌓이고 조회 버튼은 아래 줄에 놓입니다.
상단 버튼글자 없이 아이콘만 남고, 길게 누르면 이름이 보입니다.
표와 차트차트가 표 아래로 내려가 가로 스크롤 없이 읽습니다. 표는 가로로 밀어 봅니다.
레이아웃 보드차원 칩이 줄바꿈되고, 끌어다 놓기 대신 칩을 눌러 메뉴로 옮깁니다.
범위 상한열 조합 36개 · 행 노드 500개를 넘으면 반쯤 그리지 않고 안내하며 좁히게 합니다.

파일 구성

(앱 폴더)
├─ index.html · Component.js · manifest.json
├─ controller/  BaseController.js · Main.controller.js
├─ view/        Main.view.xml · fragments/ (조회 · 사유 · AI · 에이전트 · 레이아웃 · 필터 대화상자)
├─ model/       cube.js(피벗) · chart.js(SVG 차트) · pptx.js(보고서) · layout.js · formatter.js · ErrorHandler.js
├─ css/ · i18n/
├─ odata/       metadata.xml · service.js · engine.js · json/ (엔티티셋별 데이터)
├─ media/       소개 영상 · 포스터 · 자막 목차
└─ readme.html

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

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 그래서 운영으로 옮긴 뒤에도 기존 표준 리포트를 없앨 필요가 없고, 법정 · 감사 · 신고 대응에 쓰던 화면은 그대로 둔 채 이 앱을 분석과 월간 회의용으로 병행합니다.

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

하고 싶은 일SAP 표준이 앱이 더하는 관점
판매오더 · 납품 · 청구 문서의 조회 · 변경VA03 · VL03N · VF03 으로 충분합니다. 문서 하나를 열어 조건 · 수량 · 금액을 봅니다.문서 수천 건을 컨테이너 유형 · 선적항으로 묶어 계획과 견주는 일은 문서 화면 하나로는 끊깁니다.
고객 미수 · 수금FBL5N 이 담당합니다.이 앱은 청구 이후 수금 단계를 읽지 않습니다.
수익성 관점의 비교KE30 으로 수익성 분석 보고를 봅니다.물류비를 컨테이너 적재율 · 분할 선적으로 가르는 관점은 표준 보고에 정의돼 있지 않습니다.
계획 대비 물류비의 요인 분해표준 화면에는 같은 방식의 요인분해가 정의돼 있지 않아 보통 엑셀로 만듭니다(확인 필요).아홉 요인으로 가르고 합이 총차이와 같은지 검산합니다.
차이 사유와 감시표준 문서의 적요 · 배치 잡으로 일부 가능합니다.집계 행에 사유를 남기고, 규칙에 걸린 항목을 받을 역할의 대기함에 올립니다.

T-code 별 연계 지점

T-code이름연계 — 같은 데이터 · 대사 지점 · 오가는 방법 · 표준에 남길 일
VA03판매오더 조회드릴스루 라인의 판매오더 번호 · 인코텀즈가 판매오더 헤더 · 품목(VBAK · VBAP)과 같은 필드에서 옵니다. 이 앱 라인 → VA03 에서 오더 조건을 확인하고, 오더 조건이 바뀌면 이 앱에서 다시 조회합니다. 인코텀즈별 비용 범위 판단은 회사의 기준을 따르며 이 앱은 단정하지 않습니다.
VL03N납품 조회화물 용적 · 선적일은 납품 품목(LIPS)에서 읽습니다. 이 앱의 적재율이 이상해 보이면 VL03N 에서 포장 · 출하 정보를 열어 용적 단위를 확인합니다. 분할 선적 여부를 납품이 아닌 다른 필드에서 판정하는 회사는 매핑을 바꿉니다(확인 필요).
VF03청구 문서 조회청구 금액 · 통화 · 청구일은 VBRK · VBRP 와 같은 필드입니다. 이 앱 칸의 청구액과 VF03 청구 문서의 금액을 문서 단위로 맞춰 보는 것이 가장 기본적인 대사입니다. 법정 청구 처리는 VF03 · 표준 청구 프로세스에 그대로 둡니다.
FBL5N고객 개별 항목이 앱은 청구 이후 수금 상태를 읽지 않습니다. 고객별 미수 · 수금 현황은 FBL5N 에서 확인하고, 이 앱의 고객 차원 값과 같은 고객 코드로 이어서 봅니다.
KE30수익성 분석 보고물류비가 수익성에 주는 부담을 볼 때 표준 수익성 보고와 숫자를 견줍니다. 이 앱은 물류비를 적재율 · 분할 선적 관점으로 가르는 쪽이고, 수익성 판단 자체는 표준 보고가 담당합니다.

정리하면 이 앱 결과의 숫자가 의심스러울 때는 칸 → 원천 라인 → 문서 번호 → 해당 표준 T-code 순서로 내려가고, 표준 화면의 값을 이 앱에서 다시 보려면 같은 문서의 청구일 · 고객 · 선적항으로 조회 범위를 좁힙니다.

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

대상관계
표준 CDS 분석 쿼리 · Fiori 분석 앱청구 · 납품 문서를 집계하는 표준 분석 앱이 있다면 같은 문서를 다른 방식으로 봅니다. 구체적인 앱 이름은 확인하지 못해 싣지 않았습니다(확인 필요).
Analysis for Office표준 분석 쿼리를 엑셀로 가져와 쓰는 방식입니다. 이 앱의 CDS 쿼리를 같은 방식으로 노출할 수도 있습니다.
이 앱이 서는 자리큐브 하나를 브라우저에서 다시 묶는 방식이라, 분석 앱이 정한 축 밖에서 “컨테이너 · 선적항 · 고객”을 자유롭게 바꾸고 계획 대비 차이를 사유와 함께 남기는 쪽을 맡습니다.

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

자리무엇을 정하나정하는 쪽
운임 · 부대비용 조건 유형가격 조건(PRCD_ELEMENTS)에서 어느 조건 유형이 해상 운임 · 분할 추가비 · 서류비인지 정합니다.회사 정함 — 확인 필요
컨테이너 유형 기준표20피트 · 40피트 · 하이큐브의 용적 · 중량을 매핑 테이블로 둡니다. 샘플은 28 · 58 · 68㎥ 가정값입니다.회사 정함
선적항 · 선적일 필드출하지점 · 운송 경유지 · 운송 문서 날짜 중 어느 것을 선적항 · 선적일로 볼지 정합니다.회사 구성에 따름 — 확인 필요
분할 선적 판정하나의 오더가 둘 이상의 납품 · 컨테이너로 나뉜 경우를 어떻게 셀지 정합니다.회사 정함
확장 필드 · BAdI고객사 확장 필드(포워더 · 선박 · 부킹 번호)를 라인에 얹을 때 CDS 뷰에 필드만 더합니다.고객 확장
권한판매 조직 단위 표준 권한을 집계 단계에 겁니다.보안 · 권한 담당

분석 지표 정의

지표산식 · 판정 기준대응 기능원천 데이터비고
총 물류비적재 + 미적재 + 분할 추가비 + 서류비피벗 · 차트 · 드릴스루청구 문서 품목 · 운임 조건요율은 가정값
물류비율총 물류비 ÷ 청구액(원화) × 100계산항목청구 문서 품목비율은 분자 · 분모를 먼저 합산
컨테이너 적재율화물 용적 ÷ 적재 가능 용적 × 100계산항목 · 감시 규칙청구 문서 품목(용적) · 컨테이너 유형 기준컨테이너 용적은 가정값
미적재 공간 운임해상 운임 × (1 − 적재율)피벗 · 감시 규칙운임 조건점검 필요 항목으로만 표시
분할 선적 비율분할 선적 건수 ÷ 선적 건수 × 100계산항목납품 · 선적 문서분할 여부 필드는 확인 필요
총차이 요인순차 대체 9요인, 합 = 총차이워터폴 · 요인분해큐브 · 계획원인을 단정하지 않음

CDS 구성 — 뷰 · 코드 · 운영 작업까지

아래 코드는 운영 시스템에 옮길 때의 출발점으로 쓰는 스케치입니다. 표준 데이터 구조(청구 · 판매오더 · 납품 문서)를 그대로 읽고, 회사마다 달라지는 지점은 “확인 필요”로 표시했습니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준매핑 테이블 (컨테이너 유형 · 선적항 · 분할 판정)회사가 정하는 기준값을 코드가 아니라 데이터로 둡니다컨테이너 용적이나 선적항 규칙이 바뀔 때 뷰를 고치지 않으려고
기본선적 품목 뷰청구 · 납품 · 오더를 한 줄로 합쳐 라인마다 적재율 · 운임을 파생합니다모든 집계가 같은 라인에서 출발하게 하려고
차원선적항 · 컨테이너 유형 등 차원 뷰텍스트 · 값 도움말을 제공합니다필터와 레이아웃 보드의 값 목록을 같은 곳에서 읽으려고
큐브실적 큐브차원 조합별로 합계를 만듭니다(통화 환산 포함)화면이 한 번에 읽는 단위를 작게 하려고
계획계획 뷰같은 차원 조합으로 계획 값을 맞춥니다실적과 계획을 같은 축에서 견주려고
쿼리분석 쿼리UI 주석 · 필터 · 분석 세부 설정분석 도구가 읽는 입구를 하나로 하려고
권한접근 제어(DCL)판매 조직 표준 권한을 집계에 겁니다전사 합계로 남의 숫자가 새는 일을 막으려고
서비스서비스 정의 · 바인딩OData V2 로 게시합니다화면이 부르는 주소를 한 곳에서 관리하려고

① 컨테이너 유형 기준 테이블 — 적재율의 분모를 정하는 곳

적재율은 “화물 용적 ÷ 적재 가능 용적”이고, 분모는 컨테이너 유형이 정합니다. 20피트 · 40피트 · 하이큐브의 용적을 뷰 안에 숫자로 박아 두면 기준이 바뀔 때마다 뷰를 고쳐 이송해야 하므로 테이블로 뺍니다. 샘플은 28 · 58 · 68㎥ 가정값이며, 운영에서는 회사가 정한 사용 가능 용적을 넣습니다.

@EndUserText.label : '수출 컨테이너 유형 기준'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zexl_cntmap {
  " ─────────────────────────────────────────────────────────────
  "  ZEXL_CNTMAP — 컨테이너 유형별 적재 가능 용적(㎥) · 기준 중량
  "  이렇게 나눈 이유: 용적은 회사가 정하는 값이라 코드가 아니라 데이터로 둔다.
  " ─────────────────────────────────────────────────────────────
  key client    : abap.clnt not null;
  key cont_type : abap.char(4) not null;     " 20GP · 40GP · 40HC
  descr         : abap.char(40);
  cap_cbm       : abap.dec(7,2);             " 적재 가능 용적(㎥)
  cap_kg        : abap.dec(9,0);             " 기준 중량(kg)
  valid_from    : abap.dats;
}

② 선적 품목 뷰 — 라인마다 적재율과 운임을 파생하는 기본 뷰

모든 집계는 이 뷰의 한 줄(청구 품목)에서 출발합니다. 청구 헤더 · 품목, 판매오더, 납품 품목을 연결하고 컨테이너 유형 기준표를 붙여 라인마다 적재 가능 용적과 적재율을 만듭니다. 선적항 · 선적일 · 분할 여부를 어느 필드에서 가져올지는 회사 구성에 따르므로 주석에 확인 필요로 남겼습니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '수출 선적 품목(적재 관점)'
@ObjectModel.usageType: { serviceQuality: #X, sizeCategory: #XXL, dataClass: #TRANSACTIONAL }
define view entity ZI_ExportLoadItem
  as select from vbrp
    inner join   vbrk on vbrk.vbeln = vbrp.vbeln
    left outer join zexl_cntmap as _cnt on _cnt.cont_type = vbrp.zz_cont_type   " 확장 필드 — 확인 필요
{
  " ─────────────────────────────────────────────────────────────
  "  ZI_ExportLoadItem — 청구 품목 한 줄 = 선적 한 줄
  "  이렇게 나눈 이유: 큐브 · 계획 · 쿼리가 모두 같은 라인에서 출발해야 합계가 갈라지지 않는다.
  " ─────────────────────────────────────────────────────────────
  key vbrp.vbeln                      as BillDoc,
  key vbrp.posnr                      as Item,
      vbrk.fkdat                      as BillDate,
      vbrk.kunag                      as Customer,
      vbrk.inco1                      as Incoterms,
      vbrp.matkl                      as ProdGroup,
      vbrp.aubel                      as SoDoc,
      vbrk.waerk                      as Currency,
      @Semantics.amount.currencyCode: 'Currency'
      vbrp.netwr                      as FcValue,
      @Semantics.quantity.unitOfMeasure: 'VolUnit'
      vbrp.volum                      as Cbm,
      vbrp.voleh                      as VolUnit,
      vbrp.zz_port                    as Port,          " 선적항 — 출하지점/경유지 중 택일, 확인 필요
      vbrp.zz_cont_n                  as ContN,         " 사용 컨테이너 수
      _cnt.cap_cbm * vbrp.zz_cont_n   as CapCbm,        " 적재 가능 용적
      case when _cnt.cap_cbm * vbrp.zz_cont_n > 0
           then cast( vbrp.volum as abap.dec(15,3) )
                / ( _cnt.cap_cbm * vbrp.zz_cont_n )
           else cast( 0 as abap.dec(15,3) ) end   as LoadRate
}
where vbrk.fkart = 'F2'        " 청구 유형 — 수출 청구 유형은 회사 정함, 확인 필요

③ 차원 뷰 — 선적항 · 컨테이너 유형의 값과 텍스트

레이아웃 보드와 필터가 보여 주는 값 목록은 차원 뷰가 줍니다. 값과 텍스트를 한 곳에서 내려 주면 화면의 값 도움말, 큐브의 그룹 기준, 쿼리의 필터가 같은 목록을 바라봅니다.

@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '수출 컨테이너 유형(차원)'
@Search.searchable: true
@ObjectModel.dataCategory: #VALUE_HELP
define view entity ZI_ExportContType
  as select from zexl_cntmap
{
  " ─────────────────────────────────────────────────────────────
  "  ZI_ExportContType — 컨테이너 유형 차원 + 텍스트
  "  이렇게 나눈 이유: 화면 값 목록 · 큐브 그룹 · 쿼리 필터가 같은 목록을 쓰게 한다.
  " ─────────────────────────────────────────────────────────────
  @ObjectModel.text.element: ['ContTypeText']
  @Search.defaultSearchElement: true
  key cont_type  as ContType,
      @Semantics.text: true
      descr      as ContTypeText,
      cap_cbm    as CapCbm
}

④ 큐브 — 차원 조합별 합계와 통화 환산

큐브는 선적 품목을 선적월 · 선적항 · 컨테이너 유형 · 제품 그룹 · 고객 · 인코텀즈로 묶은 합계입니다. 화면은 이 합계를 한 번 읽어 와 브라우저에서 다시 묶습니다. 외화 청구액은 환율 유형과 환산 시점을 명시해 원화로 바꾸고, 통화별 대사를 위해 원래 통화 금액도 같이 둡니다. 비율은 합산하지 않고 분자 · 분모를 따로 둡니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.dataCategory: #CUBE
@EndUserText.label: '수출 컨테이너 적재 큐브'
define view entity ZI_ExportLoadCube
  as select from ZI_ExportLoadItem
{
  " ─────────────────────────────────────────────────────────────
  "  ZI_ExportLoadCube — 차원 조합별 합계(실적)
  "  이렇게 나눈 이유: 화면이 한 번에 읽는 단위를 작게(수천 건 → 수백 건) 만든다.
  " ─────────────────────────────────────────────────────────────
  key substring( BillDate, 1, 6 )   as Period,
  key Port,
  key ContType,
  key ProdGroup,
  key Customer,
  key Incoterms,
      @Semantics.currencyCode: true
      cast( 'KRW' as abap.cuky )    as TargetCurrency,
      @Aggregation.default: #SUM
      @Semantics.amount.currencyCode: 'TargetCurrency'
      currency_conversion( amount => FcValue, source_currency => Currency,
         target_currency => cast( 'KRW' as abap.cuky ),
         exchange_rate_date => BillDate, exchange_rate_type => 'M',
         error_handling => 'SET_TO_NULL' )         as GrossKrw,
      @Aggregation.default: #SUM
      Cbm                           as CargoCbm,
      @Aggregation.default: #SUM
      CapCbm                        as CapacityCbm,
      @Aggregation.default: #SUM
      ContN                         as Containers,
      @Aggregation.default: #SUM
      cast( 1 as abap.int4 )        as Lines
}
group by substring( BillDate, 1, 6 ), Port, ContType, ProdGroup, Customer, Incoterms

⑤ 계획 뷰 — 실적과 같은 차원 조합으로 맞춘 비교 기준

계획과 실적을 한 칸에서 견주려면 계획이 실적과 같은 차원 조합으로 놓여 있어야 합니다. 계획의 원천(구매 · 판매 계획 테이블, 별도 업로드 테이블 등)은 회사마다 달라 여기서는 계획 테이블을 두는 형태로 스케치했습니다. 버전 컬럼으로 여러 계획을 보관할 수 있습니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.dataCategory: #CUBE
@EndUserText.label: '수출 물류비 계획'
define view entity ZI_ExportLoadPlan
  as select from zexl_plan
{
  " ─────────────────────────────────────────────────────────────
  "  ZI_ExportLoadPlan — 버전별 계획 값(실적 큐브와 같은 차원 조합)
  "  이렇게 나눈 이유: 실적과 계획이 같은 축이어야 차이 · 요인분해가 성립한다.
  " ─────────────────────────────────────────────────────────────
  key version     as Version,
  key period      as Period,
  key port        as Port,
  key cont_type   as ContType,
  key prod_group  as ProdGroup,
  key customer    as Customer,
  key incoterms   as Incoterms,
      @Semantics.currencyCode: true
      currency    as Currency,
      @Aggregation.default: #SUM
      @Semantics.amount.currencyCode: 'Currency'
      plan_freight as PlanFreight,
      @Aggregation.default: #SUM
      plan_cargo_cbm as PlanCargoCbm,
      @Aggregation.default: #SUM
      plan_containers as PlanContainers
}

⑥ 분석 쿼리 — 화면이 읽는 하나의 입구

분석 쿼리는 큐브를 화면에 내놓는 입구입니다. 필수 필터(회사코드 · 기간)를 걸어 대용량에서 전체를 읽지 않게 하고, 어느 필드가 행 · 열 · 측정값 후보인지 알립니다. 계산항목(물류비율 등)은 쿼리의 계산 필드로도 정의할 수 있지만, 이 앱은 소계 · 총계에서 다시 계산하려고 식을 서비스 데이터로 내립니다.

@AccessControl.authorizationCheck: #CHECK
@Analytics.query: true
@EndUserText.label: '수출 컨테이너 적재 분석'
@VDM.viewType: #CONSUMPTION
define view entity ZC_ExportLoadQuery
  as select from ZI_ExportLoadCube
{
  " ─────────────────────────────────────────────────────────────
  "  ZC_ExportLoadQuery — 분석 도구와 화면이 읽는 입구
  "  이렇게 나눈 이유: 필수 필터와 화면 주석을 큐브가 아닌 소비 계층에 둔다.
  " ─────────────────────────────────────────────────────────────
  @AnalyticsDetails.query.axis: #ROWS
  @Consumption.filter: { selectionType: #INTERVAL, mandatory: true }
  @UI.selectionField: [{ position: 10 }]
  key Period,
  @AnalyticsDetails.query.axis: #ROWS
  @Consumption.valueHelpDefinition: [{ entity: { name: 'ZI_ExportContType', element: 'ContType' } }]
  @UI.selectionField: [{ position: 20 }]
  key ContType,
  @AnalyticsDetails.query.axis: #ROWS
  key Port,
  @AnalyticsDetails.query.axis: #COLUMNS
  @UI.lineItem: [{ position: 10, label: '총 물류비(원)' }]
  GrossKrw,
  @AnalyticsDetails.query.axis: #COLUMNS
  @UI.lineItem: [{ position: 20, label: '화물 용적(㎥)' }]
  CargoCbm,
  @AnalyticsDetails.query.axis: #COLUMNS
  @UI.lineItem: [{ position: 30, label: '적재 가능 용적(㎥)' }]
  CapacityCbm
}

⑦ 접근 제어(DCL) — 합계로 남의 숫자가 새지 않게

집계 뷰에 권한을 걸지 않고 드릴스루 라인에만 걸면, 전사 합계에서 자기 몫을 빼는 방식으로 남의 숫자를 알 수 있습니다. 그래서 권한은 큐브 이전 단계인 기본 뷰에 겁니다. 아래는 판매 조직 단위 표준 권한 객체를 쓰는 형태이며, 회사의 권한 설계에 맞게 필드를 늘립니다.

@EndUserText.label: '수출 선적 품목 접근 제어'
@MappingRole: true
define role ZI_ExportLoadItem {
  grant select on ZI_ExportLoadItem
    where ( VKORG ) = aspect pfcg_auth( V_VBRK_VKO, VKORG, ACTVT = '03' );
  " ZI_ExportLoadCube · ZC_ExportLoadQuery 는 이 뷰를 거쳐 읽으므로
  " 같은 조건이 집계에도 적용된다. VKORG 필드를 뷰에 노출하는 수정이 필요하면
  " 기본 뷰에 vbrk.vkorg 를 추가한다(확인 필요).
}

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

화면은 OData V2 서비스 하나만 바라봅니다. 서비스 정의에 쿼리와 차원 뷰를 노출하고, 서비스 바인딩을 OData V2 UI 로 게시하면 서비스 주소가 생깁니다. 운영 전환은 이 주소를 화면의 manifest 에 넣는 것으로 끝납니다. 변동 사유 · 레이아웃 · 감시 대기함처럼 쓰는 대상은 RAP 관리형 엔터티로 따로 둡니다.

@EndUserText.label: '수출 컨테이너 적재 분석 서비스'
define service ZUI_ExportLoadAnalysis {
  expose ZC_ExportLoadQuery   as CubeSet;
  expose ZI_ExportLoadPlan    as PlanSet;
  expose ZI_ExportContType    as ContTypeSet;
  " 변동 사유 · 레이아웃 · 규칙 · 대기함은 RAP 관리형 엔터티로 노출한다.
}
" 서비스 바인딩: OData V2 - UI 로 만든 뒤 게시한다.
" 게시 확인: 서비스 카탈로그 활성화 후 서비스 주소를 화면 설정에 넣는다.

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래는 정하지 않으면 막히는 순서대로 적었습니다.

해야 할 일무엇을 정하나정하지 않으면누가
운임 · 부대비용 조건 유형어느 조건 유형이 해상 운임 · 분할 추가비 · 서류비인가물류비 합계가 표준 청구 금액과 어긋납니다수출 · 영업관리
컨테이너 유형 기준표유형별 용적 · 사용 가능 비율적재율이 실제와 달라 미적재 공간 운임이 틀어집니다물류
선적항 · 선적일 판정 필드출하지점 · 경유지 · 운송 문서 중 무엇을 쓰나항구별 집계가 포워더 자료와 맞지 않습니다물류 · 수출
분할 선적 판정오더 하나가 몇 개로 나뉘면 분할인가분할 비율과 분할 추가비 요인이 흔들립니다물류
인코텀즈별 비용 범위어느 조건에서 어느 비용을 회사 부담으로 볼까조건이 다른 선적을 같은 물류비로 견주게 됩니다수출 · 경영지원 (세무 · 관세 판단은 전문가와)
환율 유형 · 환산 시점청구 통화를 원화로 바꾸는 환율과 시점청구액 환산이 회계 전표와 어긋납니다재무
계획 원천 확정계획 값이 어디서 오고 버전은 무엇인가“계획이 왜 이 숫자냐”가 반복됩니다기획
차원 범위11개 차원 중 운영에서 쓸 것나중에 늘리려면 뷰를 고쳐 다시 이송해야 합니다현업 · IT
권한 설계판매 조직 · 회사코드 단위 권한 범위전사 합계와 자기 몫의 차이로 남의 숫자가 드러납니다보안 · 권한
성능 기준조회 응답 시간과 최대 기간대용량에서 화면이 기다림만 남깁니다IT
대사 체계표준 T-code 와 맞출 항목 · 주기숫자가 맞는지 아무도 확인하지 않습니다경영지원 · 회계
전송(TR) 순서 · 서비스 활성화매핑 → 뷰 → 쿼리 → 권한 → 서비스 순서, 서비스 게시와 manifest 서비스 주소 교체서비스가 켜져도 권한 없이 열리거나 화면이 옛 주소를 봅니다Basis · IT
배치 등록에이전트 실행 주기(SM36 배치 등)사람이 화면을 열 때만 점검이 돕니다Basis · 물류

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

검증용 샘플 전수에 대해 대사식을 돌렸고 차이는 모두 0건이며 의도적 예외는 없습니다. 도입 포인트의 사례와 같은 숫자입니다.

대사식검사 건수차이 건수
큐브 합계 = 원천 라인 합계 (총 물류비 · 청구액 · 적재 · 미적재 · 분할 · 서류비 · 건수 · 용적 등 12항목)120
적재 + 미적재 + 분할 추가비 + 서류비 = 총 물류비 (실적 · 계획)20
컨테이너 수 × 컨테이너당 운임 = 해상 운임 (원천 라인 합)10
요인 합 = 총차이 (실적 − 계획)10
외화 청구액 통화별 대사 (USD · EUR · JPY · CNY)40
차원별 소계 대사 (선적월 · 선적항 · 고객 · 제품 그룹 · 컨테이너 유형 · 국가의 모든 값)430
원천 라인 항등식 (적재 + 미적재 + 분할 + 서류 = 총 물류비)5,3350

대사식 20종(첫 다섯 줄의 합 12 + 2 + 1 + 1 + 4)은 모두 차이 0이고, 차원별 소계 43건과 원천 라인 5,335줄의 항등식도 차이 0입니다. 화면 쪽은 축을 바꿔도 합계가 변하지 않는지, 칸 금액과 원천 합계가 같은지를 실제 브라우저로 따로 확인했습니다.

운영 데이터로 갈 때

청구 문서가 수천만 건이 되면 집계 위치가 가장 먼저 중요해집니다. 큐브는 데이터베이스에서 집계하고 화면은 집계 결과만 읽습니다. 회사코드와 기간은 필수 조건으로 두어 전체를 읽지 않게 하고, 필요하면 월 단위 사전 집계 뷰를 둡니다. 인덱스는 청구일 · 판매 조직 · 고객 중심으로 점검하고, 드릴스루는 500줄씩 이어 읽습니다. 응답 시간 기준과 최대 조회 기간은 도입 시 함께 정합니다.

자주 묻는 질문

도입을 검토하시는 분들이 가장 자주 물으시는 질문을 숫자와 산식 · 화면과 사용 · 분석 기능 · 도입과 운영 순으로 모았습니다.

숫자와 산식

이 화면은 어느 시점 · 어느 범위의 데이터로 동작하나요?

공개한 화면은 검증용 샘플 데이터(2026-01 ~ 2026-09, 회사코드 1000)로 동작합니다. 샘플은 가상이며 원천 라인 5,335줄을 차원 조합 1,246행의 큐브로 묶고, 계획 1,215행을 맞춰 두었습니다.

운영 시스템에 연결할 때는 화면의 서비스 주소만 바꾸고, 서비스가 같은 형식으로 청구 · 납품 · 운임 조건 데이터를 내려 주면 됩니다. 요율 · 컨테이너 용적 · 임계값은 모두 가정값입니다.

총 물류비는 무엇을 더한 값인가요?

적재 공간 운임 + 미적재 공간 운임 + 분할 선적 추가비 + 서류 · B/L 비용입니다. 해상 운임은 컨테이너 수 × 컨테이너당 운임이고, 적재율로 나누어 화물이 차지한 몫(적재 공간 운임)과 빈 공간의 몫(미적재 공간 운임)이 됩니다.

이 항등식은 원천 라인 5,335줄 모두에서 1원 이내로 맞는지 전수로 검사했고 차이가 0건입니다.

적재율은 어떻게 계산하나요? 컨테이너 용적은 실제 값인가요?

적재율은 화물 용적 ÷ 적재 가능 용적 × 100 이고, 적재 가능 용적은 컨테이너 용적 × 컨테이너 수입니다. 샘플에서는 20피트 28㎥ · 40피트 58㎥ · 하이큐브 68㎥ 를 가정값으로 썼습니다.

운영에서는 회사가 정한 사용 가능 용적을 기준 테이블에 넣습니다. 적재율이 낮게 나오면 먼저 이 기준값과 용적 단위가 맞는지 확인하는 것이 순서입니다.

“미적재 공간 운임”은 무엇이고 어떻게 읽어야 하나요?

해상 운임 가운데 화물이 차지하지 않은 공간에 해당하는 몫입니다. 샘플에서는 6,787백만원이고 계획은 5,922백만원이었습니다.

이 값은 낭비라고 단정하는 숫자가 아니라 점검 필요 항목을 찾는 단서입니다. 혼재 적재 · 안전 적재 · 일정 때문에 불가피하게 비는 경우가 있어, 이유는 사람이 판단해 변동 사유로 남깁니다.

요인 합계가 항상 총차이와 같은 이유는 무엇인가요?

한 요인씩 계획 값을 실적 값으로 바꾸는 순차 대체 방식이기 때문입니다. 마지막까지 바꾸면 결과는 실적과 같아지므로 합이 총차이가 됩니다. 원 단위 반올림 차이는 서류비 요인이 흡수합니다.

화면은 매번 “요인 합계 1,608 / 총차이 1,608 (오차 0.00)” 같은 검산 줄을 보여 줍니다. 순서를 바꾸면 요인별 금액은 달라질 수 있어, 해석은 점검 단서로 씁니다.

“미계획 선적”과 “계획 미이행”은 무엇인가요?

계획에 없던 조합(선적월 · 선적항 · 컨테이너 유형 · 제품 그룹 · 고객 · 인코텀즈)의 실적은 미계획 선적으로, 실적이 없는 조합의 계획은 계획 미이행(음수)으로 모읍니다. 샘플에서는 각각 +1,005백만원과 −342백만원이었습니다.

조합이 안 맞는 이유가 계획 누락인지 신규 거래인지는 숫자로 알 수 없으므로 사유로 남깁니다.

외화 청구액과 환율은 어떻게 처리하나요?

청구액은 원화로 환산해 합산하고, 대사는 통화별(미국 달러 · 유로 · 일본 엔 · 중국 위안)로 따로 합니다. 통화가 다른 금액을 그대로 더하지 않습니다. 샘플의 환율은 가정값입니다.

운영에서는 환율 유형과 환산 시점(청구일 · 선적일 등)을 정해야 하며, 어떤 시점을 쓸지는 회사의 회계 정책을 따릅니다.

화면과 사용

축을 바꿀 때 서버를 다시 부르나요?

부르지 않습니다. 조회 한 번으로 큐브를 읽고, 이후 행 · 열 · 필터 · 항목 선택은 브라우저에 올라온 큐브를 다시 묶는 동작입니다. 헤드리스 브라우저로 축을 바꾼 뒤 네트워크 요청이 0건임을 확인했습니다.

서버를 다시 부르는 것은 조회 버튼을 누를 때와 칸을 눌러 원천 라인을 읽을 때뿐입니다.

열 조합이 36개를 넘으면 왜 막나요?

표를 반쯤 그린 채 보여 주면 합계가 틀린 것처럼 읽히기 때문입니다. 열 조합이 36개를 넘거나 행 노드가 500개를 넘으면 표를 그리지 않고 최대 개수를 알리며 차원을 줄이거나 필터로 범위를 좁히게 합니다.

상한 숫자는 화면 구성 값이라 운영 환경과 화면 크기에 맞게 조정할 수 있습니다.

칸 금액과 원천 라인 합계가 다르면 어떻게 하나요?

칸을 누르면 위쪽 줄에 “셀 값 N = 원천 합계 N”이 일치 여부와 함께 표시됩니다. 다르면 경고 줄이 뜨고 질의 조건이 함께 보입니다.

먼저 조회 범위와 필터가 같은지 확인하고, 그래도 다르면 서비스 담당자에게 질의 조건을 전달합니다. 샘플에서는 모든 칸이 일치했습니다.

변동 사유는 어디에 저장되나요? 다른 사람도 볼 수 있나요?

서비스에 저장됩니다. 키는 조회 범위와 행 경로라서 축 순서를 바꾸거나 다시 열어도 같은 행에 붙어 나옵니다. 같은 서비스를 보는 사람은 같은 사유를 보며, 누가 언제 바꿨는지가 함께 남습니다.

조회 범위가 다르면 사유도 다르게 저장됩니다. 사유를 지우는 기능은 관리자 권한 설계에 따라 정합니다.

저장한 레이아웃은 어디에 남고 자동 조회는 어떻게 동작하나요?

레이아웃은 서비스에 이름을 붙여 저장됩니다. 축 · 조회조건 · 항목 · 접힘 상태가 들어가고, 기본 레이아웃으로 지정하고 자동 조회를 켜면 화면을 여는 순간 조회까지 끝낸 채 시작합니다.

표와 차트의 너비 비율은 레이아웃이 아니라 그 브라우저에 기억됩니다.

휴대폰에서도 쓸 수 있나요?

390px 폭에서 확인했습니다. 조회조건은 세로로 쌓이고 차트는 표 아래로 내려가며 가로 스크롤 없이 읽을 수 있습니다. 다만 끌어다 놓기는 칩을 눌러 메뉴로 옮기는 방식으로 대신하고, 큰 표는 넓은 화면에서 보는 편이 낫습니다.

분석 기능

AI 분석은 외부 모델을 쓰나요? API 키는 어디에 두나요?

기본은 규칙 기반 해설이며 외부 모델 연결은 서비스 설정 하나로만 켜고 기본은 꺼져 있습니다. API 키는 화면 · 설명서 · 블로그 어디에도 두지 않고 서비스 쪽에서만 관리합니다.

모델을 꺼도 같은 근거 표로 규칙 기반 해설이 나옵니다.

AI 가 숫자를 만들어 내지는 않나요?

만들지 않습니다. 금액과 비율은 서비스가 큐브에서 계산한 값이고, 모델은 그 숫자를 읽어 설명만 합니다. 모델에 넘긴 근거 표를 화면에서 펼쳐 볼 수 있어 해설의 숫자를 원천과 맞춰 볼 수 있습니다.

이미 사유가 적힌 차이는 설명된 차이로 보고 해설에서 건너뛰며, 원인은 단정하지 않고 점검 필요 항목으로만 적습니다.

AI 에이전트는 무엇을 하고 하루 한 번 제한은 왜 있나요?

감시 규칙 5개(총 물류비 계획 차이 금액 · 물류비율 상한 · 미적재 공간 운임 비중 상한 · 컨테이너 적재율 하한 · 분할 선적 추가비 금액)를 실행해 걸린 항목을 받을 역할의 대기함에 올립니다.

같은 보고가 하루에 여러 번 쌓이지 않도록 하루 한 번만 실행하게 하고, 두 번째 요청은 서버가 건너뜀으로 판정하며 사유와 첫 실행 번호를 기록합니다. 임계값은 샘플 분포에서 정한 가정값입니다.

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

AI 분석 창의 보고서 버튼을 누르면 브라우저가 현재 범위의 표와 차트를 담은 .pptx 파일을 직접 만들어 내려받습니다. 서버에 파일을 남기지 않고 외부 라이브러리도 쓰지 않습니다.

샘플로 만든 파일을 슬라이드 6장 구성으로 열어 확인했습니다. 폰트와 배치는 문서 도구에서 다듬어 쓰시면 됩니다.

역할(CEO · CFO · 영업 · 물류)을 바꾸면 무엇이 달라지나요?

앞세우는 지표와 기본으로 쪼개 보는 차원이 달라집니다. CEO 는 제품 그룹 › 선적항, CFO 는 선적월, 영업 책임자는 국가 · 고객, 물류 책임자는 선적항 › 컨테이너 유형입니다. 역할을 바꿔도 다시 조회하지 않으며, 레이아웃 보드에서 직접 바꾼 축은 그대로 둡니다.

도입과 운영

표준 T-code 와는 어떤 관계인가요? 기존 리포트를 없애야 하나요?

없애실 필요가 없습니다. 표준 실행은 SAP 표준 T-code(VA03 · VL03N · VF03 · FBL5N · KE30)가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 법정 · 감사 · 신고 대응에 쓰던 화면은 그대로 두고, 이 앱은 월간 물류비 분석과 회의용으로 병행하는 것이 안전합니다.

운영 시스템에 연결하는 데 무엇이 필요하고 얼마나 걸리나요?

필요한 것은 기준값 정하기(운임 조건 유형 · 컨테이너 유형 용적 · 선적항 필드 · 분할 판정), CDS 뷰 8벌 만들기, 서비스 게시, 화면의 서비스 주소 교체입니다. 소요 기간은 회사의 데이터 구성과 합의 속도에 달려 있어 일반 수치를 드릴 수 없습니다.

개발보다 정하는 일이 많으며, 정해야 할 항목은 CDS 구성 절의 표에 정리했습니다.

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

권한은 큐브 이전 단계인 기본 뷰에 겁니다. 드릴스루 라인에만 걸면 전사 합계에서 자기 몫을 빼는 방식으로 남의 숫자가 드러날 수 있기 때문입니다. 판매 조직 단위의 표준 권한을 기본으로 설계합니다.

화면은 외부 차트 라이브러리와 외부 전송 없이 동작하며, AI 모델 연결은 꺼진 채 시작합니다.

선적 문서가 수천만 건이면 어떻게 되나요?

큐브 읽기 단위가 차원 조합이라 문서 수가 아니라 조합 수에 비례합니다. 그래도 운영 규모에서는 기간을 필수 조건으로 두고, 집계는 데이터베이스에서 하며, 필요하면 월 단위로 미리 집계하는 뷰를 둡니다. 드릴스루는 500줄씩 이어 읽습니다.

응답 시간 기준과 최대 조회 기간은 도입 시 함께 정합니다.

컨테이너 유형이나 선적항 규칙이 바뀌면 어떻게 하나요?

컨테이너 유형 용적은 기준 테이블 값을, 선적항 판정은 기본 뷰의 매핑을 고치면 됩니다. 값이 바뀌어도 화면 코드는 바뀌지 않습니다. 이미 남겨 둔 변동 사유는 조회 범위와 행 경로에 묶여 있어 규칙이 바뀐 기간에는 해당 범위의 사유를 다시 검토하는 것이 좋습니다.

분할 선적 여부와 컨테이너 정보는 SAP 의 어디에서 가져오나요?

분할 선적은 납품 · 선적 문서에서, 컨테이너 수와 유형은 운송 문서나 고객사 확장 필드에서 가져오는 구성이 일반적이지만 회사마다 다릅니다. 이 글의 매핑은 샘플 기준이며, 운영에서는 어느 필드를 쓸지 먼저 확인해야 합니다(확인 필요).

이 화면의 결과로 회계 · 세무 · 관세 처리를 확정할 수 있나요?

확정할 수 없습니다. 이 화면은 조회 · 점검 도구이며, 최종 판단은 회사와 감사인이 하고 세무 신고는 회사와 세무 대리인 · 관세사가 합니다. 인코텀즈별 비용 범위나 환산 시점 같은 기준도 회사의 정책과 전문가 판단에 따라 정합니다. 화면은 원인을 단정하지 않고 점검 필요 항목으로만 표시합니다.