SAP 판매 실적 분석 — 누가 무엇을 얼마나 샀는가
고객과 제품 축으로 판매 실적을 집계하고, 연도별 비교와 통화 전환으로 추세를 확인하는 화면입니다.
매출 총액이 늘었다는 사실만으로는 영업 전략이 나오지 않습니다. 어느 고객이 늘었고 어느 제품이 줄었는지를 알아야 다음 행동이 정해집니다.
고객 축과 제품 축은 보는 관점이 다릅니다. 고객별로 보면 관계 관리가, 제품별로 보면 상품 전략이 나옵니다. 두 축을 전환하며 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 2종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 회사코드 — 분석 단위 법인
- 연도 — 비교 대상 회계연도
- 통화 유형 — 표시 통화 선택
- 고객 — 판매 상대
- 제품 — 판매 대상 자재
| 항목 | 내용 |
|---|---|
| 업무 영역 | 영업(SD) · 판매 분석 |
| Namespace | sd001_salesanalysis |
| 셸 구조 | 조회조건 영역 + 축 전환 + 실적 테이블 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 판매 실적과 값 도움 등 다중 엔티티 |
| 성격 | 조회형(Read-Only) — 판매 전기는 표준이 담당 |
| 집계 축 | 고객 · 제품 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 2종 둘러보기
회사코드·연도·통화로 조회하면 판매 실적이 나옵니다 → 고객 축과 제품 축을 전환하며 보고 → 연도 비교로 추세를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드를 고릅니다.
- 연도를 지정합니다. 전년과 자동 비교됩니다.
- 통화 유형을 고릅니다. 해외 매출이 있으면 환산 기준이 중요합니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 고객 축으로 어느 거래처가 큰지 봅니다.
- 제품 축으로 전환해 어느 품목이 팔리는지 봅니다.
- 증감으로 늘고 있는지 줄고 있는지 확인합니다.
- 결과는 CSV 다운로드로 내려받아 영업 회의 자료로 씁니다.
집계 축
같은 판매 데이터를 두 관점으로 나눠 봅니다.
고객 축 고객별 매출 합계 → 거래처 관리
제품 축 제품별 매출 합계 → 상품 전략
두 축의 총합은 동일
증감 당해 매출 − 전년 매출
증감률 증감 ÷ 전년 매출 × 100
통화 환산 선택한 통화 유형의 환율 적용
두 축을 전환하게 만든 이유
고객별로만 보면 "A사 매출이 줄었다" 는 것은 알지만 무엇이 줄었는지 모릅니다. 제품별로만 보면 "B제품이 줄었다" 는 것은 알지만 누가 안 사는지 모릅니다. 두 축을 오가면 "A사가 B제품을 안 산다" 까지 좁혀집니다.
분석 관점 4가지
| 관점 | 보는 것 | 판단 대상 |
|---|---|---|
| 고객 집중도 | 상위 고객 비중 | 의존도 위험 |
| 제품 구성 | 제품별 매출 비중 | 상품 포트폴리오 |
| 증감 추세 | 전년 대비 변화 | 성장·위축 |
| 통화 구성 | 내수와 수출 비중 | 환위험 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 분석 단위 |
| 연도 | 필수 | 대상 회계연도 |
| 통화 유형 | 선택 | 표시 통화 |
| 고객 | 선택 | 특정 거래처 |
| 제품 | 선택 | 특정 자재 |
| 집계 축 | 선택 | 고객 / 제품 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 집계 기준 | 고객 또는 제품 |
| 코드 · 명칭 | 고객명 또는 제품명 |
| 연도 | 대상 회계연도 |
| 매출 | 당해 매출액 |
| 전년 매출 | 비교 기준 |
| 증감 · 증감률 | 변화폭과 방향 |
| 구성비 | 전체 매출 대비 비중 |
| 통화 | 표시 통화 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
VA05 | 수주 목록 | 판매 데이터 원천 |
KE30 | CO-PA 리포트 | 수익성 관점 보완 |
VBAK · VBAP | 수주 헤더와 품목 | 판매 내역 |
VBRK · VBRP | 청구 헤더와 품목 | 매출 확정 |
KNA1 · MARA | 고객 · 자재 마스터 | 명칭 |
TCURR | 환율 마스터 | 통화 환산 |
도입 시 확인이 필요한 부분
매출을 수주 기준으로 볼지 청구 기준으로 볼지 정해야 합니다. 수주는 미래 예측에 좋고 청구는 회계 매출과 맞습니다. 두 숫자가 다르므로 어느 기준인지 화면에 명확해야 재무 자료와 대조할 때 혼란이 없습니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCSALESANLY'
@EndUserText.label: '판매 실적 분석 (Z)'
define view Z_C_SALES_ANALYSIS
as select from vbrp as BillItem
inner join vbrk as BillHeader on BillItem.vbeln = BillHeader.vbeln
left outer join kna1 as Customer on BillHeader.kunag = Customer.kunnr
left outer join makt as MatText on BillItem.matnr = MatText.matnr
and MatText.spras = 'K'
{
key BillHeader.bukrs,
key BillHeader.fkdat as BillingDate,
key BillHeader.kunag as Customer,
key BillItem.matnr as Material,
Customer.name1 as CustomerName,
MatText.maktx as MaterialName,
BillHeader.waerk as Currency,
sum( BillItem.netwr ) as NetValue
// 전년 실적은 같은 뷰를 전년 조건으로 조회해 조인
// 통화 환산은 TCURR 환율을 적용하는 소비 뷰에서
}
group by BillHeader.bukrs, BillHeader.fkdat, BillHeader.kunag,
BillItem.matnr, Customer.name1, MatText.maktx, BillHeader.waerk
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.f.DynamicPage + 조회조건 · 축 전환 · 실적 테이블 |
| 조회조건 | sap.m.Select — 우측 끝에 조회 |
| 축 전환 | sap.m.SegmentedButton — 고객 / 제품 |
| 실적 테이블 | sap.ui.table.Table — 매출순 정렬 |
| 증감 표시 | sap.m.ObjectNumber — 증가·감소 부호 색 |
| 이벤트 | onPAI 단일 진입점, fcCode 로 분기 |
매출순으로 정렬하는 이유
고객이 수백 곳이어도 매출의 대부분은 상위 몇 곳에서 나옵니다. 코드순으로 정렬하면 중요한 거래처가 목록 중간에 묻힙니다. 매출순으로 두면 상위 고객이 먼저 보이고, 집중도도 한눈에 파악됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — ko 로케일 · sap_horizon |
view/Main.view.xml | 조회조건 · 축 전환 · 실적 테이블 |
controller/Main.controller.js | 조회 · 축별 집계 · 증감 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 증감 · 통화 포맷터 |
localdata/ZFCMC_F02_C012.json | 판매 실적 |
localdata/CurrencyTypeValueHelpSet.json | 통화 유형 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 고객 축 합계 = 제품 축 합계 | 통과 |
| 증감 = 당해 매출 − 전년 매출 | 통과 |
| 구성비 합계 = 100% | 통과 |
| 통화 전환 시 환율 적용 금액 정합 | 통과 |
| 고객·제품 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 축 전환 후 캡처 | 2/2 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
수주와 청구 중 무엇이 매출인가요?
회계상 매출은 청구 기준입니다. 수주는 아직 매출이 아니지만 앞으로의 흐름을 보여 줘 영업 관점에서는 함께 봅니다.
고객 축 합계와 제품 축 합계가 다르면요?
같은 데이터를 다르게 묶은 것이므로 반드시 같아야 합니다. 다르면 어느 한쪽에서 조건이 다르게 걸린 것이니 확인이 필요합니다.
상위 고객 비중이 높으면 문제인가요?
효율은 좋지만 의존도 위험이 있습니다. 한 고객이 이탈하면 타격이 큽니다. 구성비로 집중도를 주기적으로 확인하는 것이 좋습니다.
SAP 표준 기능과 어떻게 이어지나요?
판매 데이터는 표준 SD 가 관리합니다. 이 화면은 그 데이터를 고객과 제품 두 축으로 집계하고 전년 비교와 통화 전환을 붙인 확장입니다.