솔루션 홈
판매 분석

SAP 반품률 분석 점검 — 출고 대비 반품이 유독 많은 제품·고객부터 가른다

제품군·고객별 출고 대비 반품 수량·금액을 대사해 반품률을 계산하고, 임계치를 넘는 곳을 자동으로 가려냅니다

반품 몇 건이 들어오는지는 다들 보고 있지만, 어느 제품·어느 고객에서 유독 반품이 몰리는지는 전표를 하나씩 열어 보지 않는 이상 잘 드러나지 않습니다. 반품 건수만 보면 판매량이 많은 제품이 항상 상위에 오르기 때문에, 정작 비율로 보면 심각한 곳을 놓치기 쉽습니다.

제품군·고객별로 출고수량·출고금액 대비 반품수량·반품금액을 대사해 수량 기준과 금액 기준 반품률을 함께 계산하고, 임계치를 넘는 제품군·고객을 자동으로 가려내는 화면을 OpenUI5로 구현했습니다. 두 집계 축(제품군별/고객별)의 전체 합계가 서로 일치하는지 대사하는 로직까지 포함해, 실제 구동 화면 3종을 함께 공개합니다.

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

  • 판매문서 리스트 실행 — 반품 오더유형으로 필터링한 판매문서 리스트의 표준 화면(VA05)이 만든 데이터를 그대로 이어받아 반품률 계산과 임계치 판정을 더합니다
  • 표준 화면 — 청구문서(크레딧메모) 조회(VF03)의 금액 집계 구조를 참고했습니다
항목내용
업무 영역영업(SD) · 판매 분석
대상 영역제품군·고객별 반품률 분석 — 출고 대비 반품 수량·금액 대사, 임계치 초과 판정
Namespacezui5.returnrate
셸 구조조회조건 영역(우측 조회) + 반품률 요약 KPI 배너 + 명세/집계 탭, 행 클릭 상세 Dialog
화면 수조회 화면 1개(탭 2개) + 상세 다이얼로그
SAP 표준 T-codeVA05 · VF03
데이터 연동 방식OData V2 — 탭마다 엔티티셋에 조건을 실어 개별 조회
성격조회·대사·점검형 — 사유 분석·후속 조치는 화면 밖에서 회사가 수행
UI 테마sap_horizon 단일 적용

실제 화면 3종 둘러보기

조회조건을 넣고 조회하면 출고-반품 명세와 반품률 요약 KPI 가 한 화면에 뜹니다 → 반품률 집계 탭에서 제품군별·고객별 판정을 확인하고 → 명세 행을 클릭해 출고-반품 상세를 확인합니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

Main.view.xml
출고-반품 명세 — 조회조건과 반품률 요약 KPI
메인화면 — 전체 조건 조회 결과. 출고수량·반품수량·수량 반품률·반품금액·금액 반품률·반품건수 6개 KPI 와 출고-반품 명세가 함께 표시됩니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
반품률 집계 탭
반품률 집계 탭 — 제품군별 반품률과 점검 필요 판정
반품률 집계(제품군별) — 제품군별 출고·반품 수량과 금액, 수량·금액 반품률을 함께 보여주고, 임계치를 넘는 제품군은 판정 컬럼에 점검 필요로 표시됩니다.
출고-반품 상세 다이얼로그
출고-반품 상세 다이얼로그
출고-반품 상세 — 명세 행을 클릭하면 해당 출고 건의 반품 여부·반품사유·반품수량·반품금액이 다이얼로그로 펼쳐집니다.

사용 방법

  1. 영업조직·제품군·고객코드·반품사유·출고일 범위는 모두 선택 항목이며, 비워 두면 전체 대상으로 조회합니다.
  2. 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 어느 입력 필드에서든 Enter 키를 누르면 즉시 조회됩니다.
  3. 화면을 열면 전체 조건으로 자동 조회되며, 반품률 요약 KPI 6종이 함께 표시됩니다. 반품률이 임계치 이상이면 값이 붉게 표시됩니다.
  4. 출고-반품 명세 탭에서 라인별 내역을 확인합니다. "반품 있음만" 조건으로 반품이 있는 건만 걸러 볼 수 있습니다.
  5. 반품률 집계 탭에서 제품군별·고객별 버튼으로 집계 기준을 바꿔가며 그룹별 반품률과 판정을 확인합니다.
  6. 명세 탭에서 행을 클릭하면 해당 건의 상세 다이얼로그가 열립니다.
  7. 명세 탭 우측 상단 CSV 내려받기(UTF-8 BOM)로 현재 조회 결과를 저장할 수 있습니다.

반품률 판정 로직

판정 조건결과 상태사용자 조치
수량·금액 반품률 모두 8% 미만정상추가 조치가 필요하지 않습니다.
수량 반품률 또는 금액 반품률 8% 이상점검 필요해당 제품군·고객의 반품 사유 분포와 개별 건을 확인합니다.

이 화면이 대신 정하지 않는 것

판정 결과는 확인 대상을 알리는 표시일 뿐입니다. 거래처 대응, 품질 조치 등 실제 의사결정은 회사가 반품 사유와 거래 이력을 종합해 판단합니다.

반품률 산출 절차

단계내용
1단계조회 기간의 출고 라인을 추출한다(반품 유무와 무관하게 전체 출고 라인을 대상으로 한다)
2단계반품이 있는 라인은 반품수량·반품금액을 함께 채우고, 없는 라인은 0으로 둔다
3단계제품군별·고객별로 각각 출고수량·반품수량·출고금액·반품금액을 합산한다(전체 합계 포함)
4단계그룹별로 수량 반품률(반품수량 ÷ 출고수량)과 금액 반품률(반품금액 ÷ 출고금액)을 계산한다
5단계두 반품률 중 하나라도 임계치 이상이면 해당 그룹을 점검 필요로 판정한다
6단계제품군별 전체 합계와 고객별 전체 합계가 일치하는지 대사한다(같은 모집단을 다른 축으로 나눈 값이므로 항등)

조회조건

필드필수설명
영업조직 / 제품군 / 반품사유선택비워 두면(전체) 조건 없이 조회됩니다.
고객선택고객코드 직접 입력
출고일(시작/종료)선택출고일 기준 기간 범위
반품 있음만선택체크 시 반품수량이 0보다 큰 라인만 조회

결과 컬럼

컬럼설명
출고전표 / 품목 / 고객 / 제품 / 제품군식별 정보
출고일 / 반품전표 / 반품일 / 반품사유반품이 없는 라인은 "-"/"해당없음"으로 표시
출고수량 / 반품수량 / 출고금액 / 반품금액수량 × 단가로 산출된 값
처리상태반품없음 / 처리중 / 처리완료

SAP 표준 기능 매핑

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 결과에 반품률 계산과 임계치 자동 판정 관점을 더해 확장합니다.

표준 T-code표준 기능이 화면이 더한 것
VA05판매문서(반품오더 포함) 리스트 조회출고 전체 대비 반품 비율을 제품군·고객 축으로 집계하고 임계치를 자동 판정합니다
VF03청구문서(크레딧메모) 조회반품 금액 집계 구조를 참고해 금액 기준 반품률을 함께 계산합니다

참고 CDS 뷰

원천 테이블주요 필드쓰임
LIKP / LIPSVBELN · POSNR · WADAT_IST · LFIMG출고(배송) 문서 헤더/항목 — 출고수량·출고일의 원천
VBAK / VBAPVBELN · AUGRU_AV판매문서(반품오더 포함) — 반품사유의 원천
VBRK / VBRPVBELN · NETWR청구문서(크레딧메모) — 반품금액 산정 참고
define view entity ZI_ReturnRateAnalysis
  as select from likp
  inner join lips on lips.vbeln = likp.vbeln
  left outer join vbap on vbap.vbeln = lips.vgbel and vbap.posnr = lips.vgpos
{
  key likp.vbeln  as ShipDocNo,
  key lips.posnr  as Item,
      likp.kunnr  as CustCode,
      lips.matnr  as MatCode,
      likp.wadat_ist as ShipDate,
      lips.lfimg  as ShipQty
      // 반품 라인 매칭·반품사유 반영 로직은 반품 오더유형 설정에 따라 달라 확인이 필요합니다
}

표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.

OpenUI5 구성

기능사용 컨트롤 · 구성
화면 골격sap.m.Page + 조회조건 패널 · 반품률 요약 KPI 배너 · IconTabBar(명세/집계)
데이터 연동manifest.json dataSources.mainService(OData V2, 상대 경로) — 탭마다 엔티티셋에 조건을 실어 개별 조회합니다. 모델 설정은 useBatch:false
조회조건sap.m.Select · sap.m.Input · sap.m.DatePicker — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다
명세 목록컬럼 13개로 sap.ui.table.Table 사용, cellClick에서 행 컨텍스트로 상세 다이얼로그를 엽니다
점검결과 표시sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시
공통 처리CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패를 구분해 안내

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결
Component.js화면 상태 모델 초기화, 전역 오류 처리기 연결
manifest.json앱 디스크립터 — zui5.returnrate · ko 로케일, OData 서비스와 모델 선언
view/Main.view.xml조회조건 · 반품률 요약 KPI · 명세/집계 탭
view/DetailDialog.fragment.xml출고-반품 상세 다이얼로그
controller/Main.controller.js조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드
controller/BaseController.jsCSV 다운로드 공통 처리
model/ErrorHandler.js전역 오류 처리
model/formatter.js금액 · 반품률 · 상태 표시 서식
i18n/i18n_ko.propertiesko 로케일 리소스

운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 검증용 샘플 데이터는 출고 라인 73건(제품군 4종 × 고객 8곳)을 기준으로, 제품군별 합계와 고객별 합계가 출고수량·반품수량·출고금액·반품금액 모두 일치하도록 구성했습니다.

검증 항목결과
제품군별 전체 합계 = 고객별 전체 합계(출고·반품 수량·금액, 87건 대사)통과(차이 0)
라인별 수량 × 단가 = 금액 전수 검증(73건)통과(차이 0)
임계치 초과 판정 분포(의도적 구성)점검 필요 2건(제품군 1 · 고객 1) · 정상 나머지
조회 조건 전달 — 고객코드 필터 시 7건, 제품군 필터·정렬 결과 확인확인
표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출0건
화면 렌더링 — 실브라우저에서 조회 → 집계 전환 → 행 클릭 상세까지 실동작 후 캡처3/3
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내확인

모든 데이터는 검증용으로 구성한 가상 데이터입니다.

자주 묻는 질문

반품률은 어떻게 계산합니까

제품군·고객별로 일정 기간의 출고수량·출고금액 대비 반품수량·반품금액의 비율을 각각 계산합니다. 수량 기준과 금액 기준 반품률을 모두 보여주며, 둘 중 하나라도 기준치를 넘으면 점검 대상으로 표시합니다.

반품이 없는 출고 건도 화면에 나오는 이유는 무엇입니까

반품률은 출고 전체를 분모로 하는 비율이므로, 반품이 없는 출고 라인도 분모 계산에 필요해 함께 표시됩니다. 반품이 있는 건만 따로 걸러 볼 수 있는 조건도 함께 제공합니다.

조회 결과를 그대로 거래처 제재나 품질 조치에 사용할 수 있습니까

아닙니다. 화면은 반품률을 계산해 점검이 필요한 대상을 가려내는 조회 도구이며, 사유 분석과 후속 조치에 대한 최종 판단은 회사와 담당 부서가 수행합니다.

반품률 임계치는 고정된 값입니까

화면에 설정된 내부 참고값이며, 제품 특성이나 회사 정책에 따라 조정할 수 있습니다. 임계치를 넘는지 여부만 조회 화면이 계산해 보여줍니다.

반품 건수 뒤에 숨은 반품률을 먼저 확인해 보세요

반품 건수만으로는 어느 제품·고객이 실제로 문제인지 보이지 않습니다. 화면에서 출고 대비 반품률을 미리 대사해 두면 품질·거래처 점검의 우선순위를 정하기가 한결 가벼워집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

판매 분석반품률품질 점검출고 대사고객별 반품OpenUI5
관련 글차이점
SAP 영업 견적 전환율 점검견적 대비 수주 전환율을 집계 — 이 화면은 출고 대비 반품 비율을 제품군·고객 축으로 대사