SAP 제품·고객 마진 믹스 분석 점검 — 마진이 줄었다면, 가격·수량·믹스·원가 중 무엇 때문인지부터 가른다
제품군·고객군별 마진 변동을 판매가격·순수 판매수량·믹스·단위원가 네 요인으로 분해해 대사하는 화면을 OpenUI5로 구현한 사례. 그룹 소계·전체 합계까지 항등식으로 대사하는 로직과 조회조건·결과 컬럼 스펙, 실제 화면 4종을 공개합니다.
제품별·고객별 손익을 나열하는 화면은 많지만, "마진이 왜 줄었는지"에 답하는 화면은 드뭅니다. 판매가격이 내려간 걸까요, 잘 팔리던 품목이 덜 팔린 걸까요, 아니면 마진율이 낮은 품목 쪽으로 판매 비중이 옮겨간 걸까요. 매출·마진 표만 봐서는 세 가지가 뒤섞여 보입니다.
대상 영역은 수익성 분석입니다. 제품군·고객군별로 전기 대비 당기 마진 변동을 판매가격 · 순수 판매수량 · 믹스(품목 구성비 변화) · 단위원가 네 요인으로 분해하고, 품목 단위 합계 → 그룹 소계 → 전체 합계까지 항등식으로 대사하는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 4종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 수익성분석 실행 — 수익성분석(CO-PA) 보고서 실행의 표준 화면(
KE30)이 만든 실적 집계를 그대로 이어받아 요인 분해 관점을 더합니다 - 표준 화면 — 수익성분석 명세 라인아이템 조회(
KE24)의 집계 구조를 참고했습니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 관리회계(CO) · 수익성 분석 |
| 관련 기준서 | - (분석·점검 목적의 관리회계 조회 화면으로, 특정 기준서에 대응하지 않습니다) |
| Namespace | zui5.marginmix |
| 셸 구조 | 조회조건 영역(우측 조회) + KPI 요약 카드 6개 + 요약 브릿지/품목별 상세 탭, 행 클릭 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 2개) + 상세 다이얼로그 |
| SAP 표준 T-code | KE30 · KE24 |
| 데이터 연동 방식 | OData V2 — 탭마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 원인 판단은 화면 밖에서 회사가 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 4종 둘러보기
조회연도·분석축을 넣고 조회하면 KPI 카드와 요약 브릿지 탭이 함께 뜹니다 → 분석축을 고객군으로 바꿔 다시 조회하고 → 품목별 상세 탭에서 총변동 내림차순 명세를 보고 → 품목 행을 클릭해 상세 다이얼로그를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 조회연도는 4자리로 입력합니다(필수). 서비스는 내부적으로 전기(연도−1)와 함께 조회합니다.
- 분석축에서 제품군 또는 고객군 중 하나를 선택합니다(필수). 선택에 따라 그룹 목록이 바뀝니다.
- 그룹은 비워 두면(전체) 전체 그룹 합계 브릿지를, 특정 그룹을 고르면 그 그룹만 조회합니다(선택).
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 조회연도 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 화면을 열면 기본 조건(최근 연도·제품군·전체)으로 자동 조회되며, KPI 카드 6개가 함께 표시됩니다.
- 요약 브릿지 탭에서 그룹별·요인별 금액을, 품목별 상세 탭에서 품목 단위 명세를 총변동 내림차순으로 확인합니다.
- 품목별 상세에서 행을 클릭하면 해당 품목의 상세가 다이얼로그로 열립니다.
- 품목별 상세 화면 우측 상단 CSV 내려받기(UTF-8 BOM)로 현재 조회조건 기준 품목 목록을 저장할 수 있습니다.
브릿지 판정 규칙
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 총변동 > 0 | 증가 | 요인별 기여도를 요약 브릿지에서 확인합니다. |
| 총변동 < 0 | 감소 — 확인 필요 | 가격·수량·믹스·원가 요인 순서대로 확인합니다. |
| 믹스 변동이 총변동에서 차지하는 비중이 큼 | 믹스 영향 큼 — 확인 필요 | 그룹 내 품목 구성비 변화를 품목별 상세와 대조합니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시일 뿐입니다. 이 화면은 분류·집계·대사를 돕는 조회·점검 도구이고, 변동 원인에 대한 최종 판단은 회사와 감사인이 합니다.
마진 브릿지 산출 순서
| 단계 | 내용 |
|---|---|
| 1단계 | 전기·당기 두 기간의 품목별 판매수량·판매가격·단위원가를 원천에서 모은다 |
| 2단계 | 품목별로 판매가격 변동·수량변동·단위원가 변동을 산출한다 — 세 요인의 합은 품목 총변동과 항상 일치한다 |
| 3단계 | 그룹 안에서 수량변동을 순수 판매수량 변동과 믹스 변동으로 다시 나눈다 |
| 4단계 | 그룹별 요인 금액을 더해 전체 브릿지를 만든다 — 가격·순수수량·믹스·원가의 합은 항상 전체 총변동과 일치한다 |
| 5단계 | 품목 합계 → 그룹 소계 → 전체 합계 순서로 대사한다 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 조회연도 | 필수 | 당기 연도 4자리 |
| 분석축 | 필수 | 제품군 또는 고객군 |
| 그룹 | 선택 | 비워 두면(전체) 전체 그룹 합계 브릿지가 조회됩니다. |
결과 컬럼
| 컬럼 | 설명 |
|---|---|
| 그룹 / 품목 | 제품군·고객군 그룹명과 품목명(소계·합계 행은 굵게 표시) |
| 전기수량 / 당기수량, 전기단가 / 당기단가, 전기단위원가 / 당기단위원가 | 비교 대상 두 기간의 기초 데이터 |
| 전기마진 / 당기마진 | 수량 × (단가−단위원가) |
| 가격변동 / 수량변동 / 원가변동 / 총변동 | 세 요인의 합은 총변동(당기마진−전기마진)과 항상 일치 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 결과에 가격·수량·믹스·원가 요인 분해 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
KE30 | 수익성분석(CO-PA) 보고서 실행 | 품목·그룹 단위 손익 조회 결과를 가격·수량·믹스·원가 네 요인으로 재분해합니다 |
KE24 | 수익성분석 명세 라인아이템 조회 | 라인아이템 집계 구조를 참고해 품목별 상세를 구성합니다 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
VBRK / VBRP | VBELN · POSNR · FKIMG · NETWR | 판매수량·판매가격의 원천(매출 전표) |
MBEW | MATNR · BWKEY · VERPR · STPRS | 단위원가 원천(자재 평가) |
KNA1 / MARA | KUNNR · MATNR | 고객군·제품군 그룹핑 기준 |
define view entity ZC_MARGIN_MIX_BRIDGE
as select from vbrp as item
inner join vbrk as header on item.vbeln = header.vbeln
{
key item.vbeln,
key item.posnr,
header.fkdat,
item.matnr,
item.fkimg as SalesQty,
item.netwr as NetValue
// 단위원가 조인, 가격/수량/믹스/원가 분해 로직은 프로젝트별로 확인이 필요합니다
}
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · KPI 카드 6개 · IconTabBar(요약 브릿지/품목별 상세) |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 탭마다 엔티티셋에 개별 바인딩합니다. 모델 설정은 useBatch:false |
| 조회조건 | sap.m.Select · sap.m.Input — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조건을 조립합니다. "전체" 그룹은 필터를 만들지 않습니다 |
| 품목별 상세 | 컬럼 14개로 sap.ui.table.Table 사용 — 총변동 내림차순 기본 정렬, 행 클릭 시 상세 다이얼로그 |
| KPI 요약 | 대사용 파생 지표는 별도 조회 동작으로 KPI 카드에 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패를 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 화면 상태 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.marginmix · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · KPI 카드 · 요약 브릿지/품목별 상세 탭 |
view/DetailDialog.fragment.xml | 품목 상세 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액·상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 2개 분석축(제품군·고객군) × 5개 그룹 × 4개 품목을 기준으로, 품목 합계·그룹 소계·전체 합계가 항등식으로 대사되도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 품목 단위 항등식(총변동 = 당기마진−전기마진, 52건) | 통과(반올림 오차 0.01 이내) |
| 그룹 브릿지 항등식(전기+가격+순수수량+믹스+원가=당기, 12건) | 통과(반올림 오차 0.01 이내) |
| 그룹 소계 롤업(품목 합계 = 그룹 소계, 10건) | 통과(반올림 오차 0.01 이내) |
| 조회 조건 전달 — 분석축·그룹 필터, 총변동 내림차순 정렬(Edm.Decimal 숫자 비교) 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 분석축 전환 → 탭 전환 → 행 클릭 상세까지 실동작 후 캡처 | 4/4 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면은 언제부터, 어느 범위에 적용할 수 있습니까
특정 회계기준의 시행일이 걸린 화면이 아니라 상시 운영되는 관리 목적의 조회·분석 화면입니다. 별도의 시행일·경과규정은 없으며, 조회 가능한 연도는 원천 데이터가 있는 기간으로 한정됩니다.
순수 판매수량 변동과 믹스 변동은 왜 나눕니까
여러 품목의 수량이 동시에 바뀌면 전체 물량이 늘어난 효과와, 마진율이 다른 품목 쪽으로 판매 비중이 옮겨간 효과가 섞여 보입니다. 두 요인을 나누면 어느 쪽이 마진 변동의 실제 원인인지 더 분명해집니다.
화면의 색상 표시는 최종 결론입니까
아닙니다. 이 화면은 분류·집계·대사를 돕는 조회·점검 도구이며, 색상은 증가·감소 방향을 보여줄 뿐입니다. 변동의 원인에 대한 최종 판단은 회사와 감사인이 합니다.
CSV로 받은 데이터를 그대로 다른 보고서에 반영해도 됩니까
CSV는 현재 조회 조건의 품목별 상세를 그대로 내려받는 참고용 파일입니다. 반영 전에는 관련 부서의 확인 절차를 거치는 것을 권장합니다.
마진이 줄어든 진짜 이유를 요인별로 먼저 가려보세요
매출·마진 합계만으로는 가격·수량·믹스·원가 중 무엇이 실제 원인인지 보이지 않습니다. 화면에서 요인별 브릿지를 미리 대사해 두면 점검 우선순위를 정하기가 한결 가벼워집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.
| 관련 글 | 차이점 |
|---|---|
| SAP 제품별 공헌이익 분석 점검 | 제품별 손익을 나열해 손실·저마진을 가려냄 — 이 화면은 전기 대비 변동을 가격·수량·믹스·원가로 분해 |
| SAP 고객별 공헌이익 점검 | 고객별 손익을 나열해 저마진 거래를 가려냄 — 이 화면은 고객군 축으로도 요인 분해 브릿지를 제공 |