SAP 구매가격차이 점검 — 표준단가 대비 얼마나, 어디서 벌어졌는지부터 가른다
공급업체·기간별로 발주단가와 표준단가를 대사하고, 차이가 큰 항목을 자동으로 가려냅니다
구매 발주 단가가 표준 단가에서 얼마나 벗어났는지는 알지만, 그 차이가 어느 공급업체·어느 기간에 몰려 있는지 한눈에 보기는 쉽지 않습니다. 발주 건수가 많아질수록 이상 건을 손으로 골라내는 데 시간이 걸립니다.
공급업체·기간별로 발주단가와 표준단가를 대사하고, 차이율이 임계치를 넘는 항목을 자동으로 가려내는 과정을 OpenUI5 화면으로 확장했습니다. 발주 항목을 클릭하면 상세 내역까지 바로 확인할 수 있는 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 구매문서 목록 조회 — 자재 기준 구매문서 목록 조회의 표준 화면(
ME2M)이 다루는 발주 항목 구조를 그대로 이어받습니다 - 공급업체별 구매문서 조회 — 공급업체 기준 구매문서 조회의 표준 화면(
ME2L)이 다루는 집계 축을 그대로 이어받아 대사 관점을 더합니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 구매(MM) · 구매 분석 |
| 대상 영역 | 구매가격차이 점검 — 발주단가·표준단가 대사, 공급업체·기간별 차이 판정 |
| Namespace | zui5.pricevar |
| 셸 구조 | 조회조건 영역(우측 조회) + KPI 요약 + 탭(공급업체별 요약 / PO 항목 상세), 행 클릭 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 2개) + 상세 다이얼로그 |
| SAP 표준 T-code | ME2M · ME2L |
| 데이터 연동 방식 | OData V2 — 탭마다 별도 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 최종 판단은 화면 밖에서 회사가 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
회계연도를 넣고 조회하면 공급업체별 요약과 KPI 가 한 화면에 뜹니다 → 조건을 좁혀 특정 공급업체·기간만 보고 → PO 항목 상세 탭에서 차이율로 정렬해 점검 대상을 가려내고 → 행을 클릭해 상세 내역을 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 화면 진입 시 회계연도(기본값 2026) 기준으로 자동 조회가 1회 실행됩니다.
- 조회조건 영역에서 회계연도(필수)와 기간·공급업체·플랜트(선택, 비우면 전체)를 지정합니다. 구매문서번호(선택)는 직접 입력할 수 있습니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 상단 KPI 타일에서 조회 항목 수·점검 필요 건수·사전승인 예외 건수·공급업체 수를 확인합니다.
- 공급업체별 요약 탭에서 공급업체·기간별 발주금액·표준금액·차이금액·차이율·상태를 확인합니다.
- PO 항목 상세 탭으로 이동해 개별 발주 항목의 단가·수량·차이 내역을 확인합니다.
- PO 항목 상세 탭에서 행을 클릭하면 해당 항목의 상세 정보가 다이얼로그로 열립니다.
- 각 탭 위의 CSV 내려받기(UTF-8) 버튼으로 현재 조회 결과를 저장할 수 있습니다.
점검 판정 로직
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 사전승인 예외로 표시된 항목 | 사전승인 예외 | 참고만 하고 별도 조치 없음(점검 대상 집계에서 제외) |
| |차이율| ≥ 5%(사전승인 예외가 아닌 경우) | 점검 필요 | 구매팀 확인 필요 — 발주 사유·계약조건 대조 |
| |차이율| < 5% | 정상 | 추가 조치가 필요하지 않습니다 |
이 화면이 대신 정하지 않는 것
점검 필요 표시는 가격 차이가 임계치를 넘었다는 신호일 뿐입니다. 차이의 원인 확정과 후속 조치는 회사와 감사인이 판단합니다.
산출 순서
| 단계 | 내용 |
|---|---|
| 1단계 | PO 항목별 발주단가와 표준단가(또는 최근 이동평균가)를 나란히 놓는다 |
| 2단계 | 항목별 차이금액 = (발주단가 − 표준단가) × 발주수량, 차이율 = 차이금액 ÷ (표준단가 × 발주수량) × 100 을 산출한다 |
| 3단계 | 공급업체·회계연도·기간 축으로 항목을 합산해 발주금액·표준금액·차이금액·차이율을 집계한다 |
| 4단계 | 사전승인 예외를 제외한 항목 중 임계치(5%)를 넘는 건을 점검 필요로 표시한다 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회계연도 | 필수 | 기본값 2026 |
| 기간 | 선택 | 비우면 전체 기간 |
| 공급업체 | 선택 | 비우면 전체 공급업체 |
| 플랜트 | 선택 | PO 항목 상세에만 적용 |
| 구매문서번호 | 선택 | PO 항목 상세에만 적용, Enter 키로 즉시 조회 |
결과 컬럼
| 컬럼 | 설명 |
|---|---|
| 공급업체 / 업체명 / 연도 / 기간 | 집계 대상 식별 정보 |
| 발주금액 / 표준금액 | 발주단가 기준 합계 / 표준단가 기준 합계 |
| 차이금액 / 차이율 | 발주금액 − 표준금액 / 차이금액 ÷ 표준금액 |
| 항목수 / 상태 | 집계 항목 수 / 정상·점검 필요·사전승인 예외 |
| 구매문서 / 항목 / 자재 / 발주단가 / 표준단가 / 발주일 | PO 항목 상세의 개별 발주 정보 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 결과에 조회·점검 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
ME2M | 자재 기준 구매문서 목록 조회 | 발주 항목 구조를 참고해 표준단가와 나란히 비교합니다 |
ME2L | 공급업체 기준 구매문서 조회 | 공급업체·기간 축으로 집계하고 차이가 큰 건을 가려냅니다 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
EKKO · EKPO | EBELN · EBELP · LIFNR · MATNR · NETPR | 구매문서 헤더·항목 — 발주단가의 원천 |
MBEW | STPRS · VERPR | 자재 평가 — 표준단가·이동평균가의 원천 |
define view entity C_PurchasePriceVarianceQ
as select from ekpo association to parent ekko as _Header
{
key ekpo.ebeln as PoNo,
key ekpo.ebelp as PoItem,
_Header.lifnr as Vendor,
ekpo.matnr as Material,
ekpo.werks as Plant,
ekpo.menge as OrderQty,
ekpo.netpr as PoPrice
// 표준단가·차이금액·차이율은 소비 계층에서 파생
}
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · KPI 요약 · IconTabBar(공급업체별 요약 / PO 항목 상세) |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 탭마다 독립된 엔티티셋에 바인딩 |
| 조회조건 | sap.m.Select · sap.m.Input — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter 로 조건을 조립합니다. 전체를 고른 조건은 필터를 만들지 않습니다 |
| 상세 보기 | sap.ui.table.Table 의 cellClick 에서 행 컨텍스트로 상세 다이얼로그를 엽니다 |
| 점검결과 표시 | sap.m.ObjectStatus 로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패를 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 컴포넌트 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.pricevar · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · KPI 요약 · 탭별 목록 |
view/DetailDialog.fragment.xml | PO 항목 상세 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액·상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 공급업체 8개 × 기간 8개 조합 기준 PO 항목 331건(공급업체·기간 집계 63건)을 기준으로 대사식을 전수 검증했습니다.
| 검증 항목 | 결과 |
|---|---|
| Σ PO 항목 차이금액(공급업체·기간) = 집계 차이금액(63개 조합 전수) | 통과(불일치 0건) |
| 점검 필요 판정 분포(사전승인 예외 18건 별도 관리) | 정상 266건 · 점검 필요 65건 · 예외 18건 |
| 조회 조건 전달 — 공급업체·기간으로 좁히면 해당 건만 남는지 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 필터 → 정렬 → 행 클릭 상세까지 실동작 후 캡처 | 6/6 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면이 다루는 데이터 범위는 어디까지인가요
검증용 샘플 데이터 기준으로 2026년 회계연도 001~008 기간, 8개 공급업체, 10개 자재의 구매 발주 항목(331건)을 다룹니다. 실제 적용 시 범위는 연결한 OData 서비스의 데이터 범위를 따릅니다.
점검 필요로 표시되면 바로 가격 오류로 봐야 하나요
아닙니다. 이 화면은 분류·집계·대사를 돕는 조회·점검 도구이며, 임계치를 넘는 항목을 가려낼 뿐 원인을 단정하지 않습니다. 최종 판단은 회사와 감사인이 합니다.
사전승인 예외는 어떻게 처리되나요
사전승인 예외로 표시된 항목은 차이율이 임계치를 넘더라도 점검 필요 집계에서 제외하고 별도로 표시합니다. 대사 차이 건수와는 분리해서 관리합니다.
샘플 데이터로 살펴본 화면과 실제 운영 화면은 어떻게 다른가요
샘플 데이터 화면은 검증용 데이터로 화면 동작을 확인하는 용도입니다. 실제 운영 화면은 연결된 실 OData 서비스를 바라보며, 서비스에 연결되지 않으면 오류 메시지를 안내합니다.
발주 전에 표준단가와의 차이부터 먼저 확인해 보세요
발주가 몰리는 시기일수록 단가 이상 건을 손으로 찾기 어렵습니다. 화면에서 공급업체·기간별로 표준단가와 미리 대사해 두면 확인이 필요한 건을 먼저 가려낼 수 있습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.
| 관련 글 | 차이점 |
|---|---|
| SAP 구매 리드타임 분석 | 발주부터 입고까지의 소요 기간을 점검하는 화면 — 이 화면은 발주단가와 표준단가의 금액 차이를 공급업체·기간별로 대사합니다 |