솔루션 홈
생산 분석

SAP 생산 스크랩·불량 손실 점검 — 불량이 났다면, 얼마짜리인지부터 본다

생산오더의 불량수량에 표준단가를 곱해 손실금액을 산출하고, 작업장·기간별로 다시 모아 임계금액을 넘는 항목부터 가려냅니다

생산 현장에서 스크랩이 나면 수량은 이동전표로 남지만, 그 수량이 얼마짜리 손실인지는 별도로 계산해 보지 않으면 잘 드러나지 않습니다. 그래서 생산오더 단위로 불량수량에 표준단가를 곱해 손실금액을 산출하고, 작업장·기간별로 다시 모아 살펴보는 화면을 OpenUI5로 구현했습니다.

손실금액이 임계금액(50만원)을 넘으면 "점검 필요"로 자동 판정합니다. 스크랩 이동전표 등록·오더 확정이라는 표준 기능 위에, 손실금액이라는 관점 하나를 더해 확장한 셈입니다. 실제 구동 화면 3종을 함께 공개합니다.

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

  • 스크랩 이동전표 등록 — 이동유형 551 기준 MB1A(또는 MIGO) 전표의 수량·전기일·사유 구조를 그대로 이어받습니다
  • 오더 확정 — 생산오더 실적 확인(CO11N)에서 입력되는 투입·양품 수량 구조를 그대로 이어받습니다
  • 오더 정보시스템 — 생산오더 정보시스템(COOIS)의 오더별 조회 관점을 명세 탭 구성에 옮겨 왔습니다
항목내용
업무 영역생산(PP) · 생산 분석
Namespacezui5.scraploss
셸 구조조회조건 영역(우측 조회) + 요약 KPI 3종 + 탭 3개, 행 클릭 상세 Dialog
화면 수조회 화면 1개(탭 3개) + 상세 다이얼로그
SAP 표준 T-codeMB1A · CO11N · COOIS · MB51
데이터 연동 방식OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩
성격조회·점검형 — 실제 원인 판단은 담당자가 수행
UI 테마sap_horizon 단일 적용

실제 화면 3종 둘러보기

기본 조건으로 조회하면 요약 KPI와 명세 탭이 뜹니다 → 집계 탭에서 작업장·기간 축으로 다시 모아 보고 → 행을 클릭해 상세를 봅니다.

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

메인 화면
생산 스크랩·불량 손실 점검 메인 화면 — 조회조건과 요약 KPI, 명세 탭
메인 화면 — 조회조건 · 요약 KPI(총 손실금액·평균 스크랩률·임계초과 건수) · 명세 탭이 한 화면에 뜹니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
작업장·기간별 집계
작업장·기간별 집계 탭 — 손실금액이 큰 순으로 정렬, 소계 행 강조
작업장·기간별 집계 — 플랜트·작업장·기간 단위로 손실금액을 합산하고, 손실금액이 큰 순으로 정렬합니다. 소계 행(전체 작업장)은 배경색으로 구분합니다.
명세 상세
명세 탭 행 클릭 시 열리는 손실 상세 다이얼로그
명세 상세 — 명세 탭에서 행을 클릭하면 투입·양품·불량 수량과 손실금액·점검결과가 다이얼로그로 펼쳐집니다.

사용 방법

  1. 화면에 들어오면 기본 조건(전체 플랜트·작업장·2026.03.01~2026.08.31)으로 자동 조회가 1회 실행되어 요약 KPI와 명세 탭이 함께 채워집니다.
  2. 조회조건 영역에서 플랜트·작업장·스크랩 사유를 선택합니다(선택하지 않으면 전체). 전기일(시작/종료)은 기본값이 채워져 있어 필요할 때만 바꿉니다.
  3. 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 조회조건 영역 어디서든 Enter 키를 눌러도 같은 조회가 실행됩니다. 초기화 버튼은 조회 버튼 바로 왼쪽에 있습니다.
  4. 상단 카드에서 총 손실금액 · 평균 스크랩률 · 임계초과 건수를 먼저 확인합니다.
  5. 탭을 옮겨 명세 → 집계 → 사유별 추이 순서로 봅니다.
  6. 명세 탭에서 행을 클릭하면 해당 건의 수량·손실금액·점검결과 상세가 다이얼로그로 열립니다.
  7. 명세·집계 탭 우측 상단의 CSV 다운로드(UTF-8 BOM)로 현재 조회 결과를 저장합니다.

점검 판정 기준

판정 조건결과 상태사용자 조치
손실금액(불량수량 × 표준단가) > 임계금액(500,000원)점검 필요스크랩 사유·작업장·공정을 확인하고 필요 시 재발방지 조치를 검토
손실금액 ≤ 임계금액(500,000원)정상범위조치 없음

임계금액은 화면에서 조정하는 값이 아니라 서비스 쪽에 반영된 관리 기준값입니다. 위 기준은 조회·점검을 돕기 위한 것이며, 실제 원인 판단과 조치는 화면이 단정하지 않고 담당자가 확인합니다.

손실금액 산출 절차

단계내용
1단계생산오더·자재·작업장·전기일 단위로 투입·양품·불량 수량을 모음(투입 = 양품 + 불량)
2단계자재·플랜트별 표준단가를 조회
3단계손실금액 = 불량수량 × 표준단가로 산출
4단계플랜트·작업장·기간(연월)별로 투입·불량 수량과 손실금액을 집계(소계 행 별도 표시)
5단계건별 손실금액을 임계금액과 비교해 점검 대상 여부를 판정

조회조건

필드필수설명
플랜트선택전체면 조건 제외
작업장선택전체면 조건 제외
스크랩 사유선택전체면 조건 제외 — 명세 탭에만 적용
전기일(시작/종료)기본값 제공스크랩 이동전표 전기일 범위 — 명세·추이 탭에 적용

결과 컬럼

컬럼설명
생산오더 · 오더유형 · 플랜트 · 자재 · 작업장 · 전기일 · 스크랩 사유명세의 기준 정보
투입수량 · 양품수량 · 불량수량 · 표준단가 · 손실금액 · 점검결과수량·금액 실적과 판정 결과
플랜트 · 작업장 · 기간 · 투입수량합계 · 불량수량합계 · 손실금액합계 · 스크랩률집계 컬럼(소계 행은 "ZZ99 소계"로 구분)

SAP 표준 기능 매핑

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 손실금액 대사 관점을 더해 확장합니다.

표준 T-code표준 기능이 화면이 더한 것
MB1A스크랩 이동전표 등록(이동유형 551)등록된 수량·전기일·사유에 표준단가를 곱해 손실금액으로 환산합니다
CO11N생산오더 실적 확인투입·양품 수량과 스크랩 수량을 같은 오더 축에서 대사합니다
COOIS생산오더 정보시스템오더별 조회 관점을 손실금액 중심으로 재구성합니다
MB51자재이동 조회스크랩 이동전표 내역을 대사할 때 참고합니다

분석 지표 정의표

대상 영역지표정의원천 데이터
생산 분석손실금액(LossAmount)불량수량 × 표준단가스크랩 이동전표(이동유형 551), 자재 평가(표준단가)
생산 분석스크랩률(ScrapRate)불량수량 ÷ 투입수량 × 100스크랩 이동전표, 오더 실적 확인
생산 분석임계초과 여부손실금액 > 임계금액(500,000원)산출값 비교(점검 대상 판정용, 최종 판단 아님)

참고 CDS 뷰

원천 테이블주요 필드쓰임
AFKO / AFPOAUFNR · AUART · WERKS · MATNR생산오더 헤더·품목
AFRUGMNGA오더 확정 실적(투입·양품 수량)
MSEG / MKPFBWART · MENGE · GRUND · BUDAT스크랩 이동전표(이동유형 551)
MBEWSTPRS자재 평가(표준단가)
CRHDARBPL작업장 마스터
define view entity I_ScrapLossItem
  as select from afpo
    inner join afko on afko.aufnr = afpo.aufnr
    inner join mseg on  mseg.aufnr = afpo.aufnr
                     and mseg.bwart = '551'
    inner join mbew on  mbew.matnr = afpo.matnr
                     and mbew.bwkey = afpo.werks
{
  key afpo.aufnr    as ProdOrder,
      afko.auart     as OrderType,
      afpo.werks     as Plant,
      afpo.matnr     as Material,
      mseg.grund     as ScrapReason,
      mseg.menge     as ScrapQty,
      mbew.stprs     as StdPrice
}

필드 매핑은 가상 데이터 기준 스케치이며, 손실금액(불량수량 × 표준단가)은 별도 파생값으로 계산합니다.

OpenUI5 구성

기능사용 컨트롤 · 구성
화면 골격조회조건 패널 · 요약 KPI · IconTabBar 3개 탭
데이터 연동manifest.json dataSources.mainService(OData V2, 상대 경로)로 기본 모델을 만들고 defaultCountMode:"Inline" · useBatch:false 로 구성합니다. 화면 블록마다 해당 엔티티셋에 직접 바인딩합니다
명세 탭sap.ui.table.Table(컬럼 13개) — 셀 클릭으로 상세 다이얼로그를 엽니다
집계 탭sap.ui.table.Table — 소계 행(전체 작업장)은 배경색으로 구분 표시
조회조건sap.ui.model.Filter 로 조립해 바인딩에 적용합니다. 같은 필드(전기일 시작·종료)의 조건은 하나의 AND 복합 Filter 로 묶어 전달합니다. 전체를 고른 조건은 필터를 만들지 않습니다
예외 메시지메타데이터 실패·요청 실패를 구분해 안내하는 전용 처리기

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결
Component.js모델 초기화, 예외 메시지 처리기 연결
manifest.json앱 디스크립터 — zui5.scraploss · ko 로케일, OData 서비스와 모델 선언
view/Main.view.xml조회조건 · 요약 KPI · 3개 탭
view/DetailDialog.fragment.xml명세 상세 다이얼로그
controller/Main.controller.js조회조건 조립 · 바인딩 · 다이얼로그 · CSV
controller/BaseController.jsCSV 다운로드 공통 처리
model/formatter.js · model/ErrorHandler.js표시 서식 · 예외 메시지 처리
i18n/i18n_ko.properties화면 문구

검증 결과

검증용 샘플 데이터(명세 192건, 플랜트 2개, 작업장 4개, 자재 5종, 기간 6개월)를 기준으로 대사식을 전수 검증했습니다. 점검 로직 확인을 위해 스크랩률을 의도적으로 높인 예외 건 7건을 포함했습니다.

검증 항목결과
투입수량 = 양품수량 + 불량수량 (192건 전수)통과(불일치 0건)
집계(플랜트·작업장·기간) 손실금액합계 = 명세 손실금액 합계통과(차이 0)
조회 조건 전달 — 플랜트·작업장·스크랩 사유·전기일 필터 · 정렬 · 총건수 표시확인
표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현0건
화면 렌더링 — 조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 안내 메시지확인

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

자주 묻는 질문

이 화면은 어떤 기간의 스크랩 데이터를 대상으로 하나요?

검증용 샘플 데이터는 2026년 3월부터 8월까지로 구성되어 있습니다. 실제 운영에서는 특정 시행일이나 적용 범위가 정해진 것이 아니라, 조회조건의 전기일(시작/종료) 범위를 회사가 정한 관리 기간에 맞춰 자유롭게 선택해 사용합니다.

"점검 필요"로 표시되면 바로 불량 처리하면 되나요?

아닙니다. 이 화면은 임계금액을 기준으로 확인이 필요한 항목을 먼저 걸러주는 조회·점검 도구입니다. 실제 원인 파악과 처리 여부는 담당자와 관련 부서가 표준 프로세스에 따라 확인하고 결정합니다.

임계금액은 화면에서 조정할 수 있나요?

현재 화면에는 임계금액을 직접 입력하는 조회조건이 따로 없습니다. 관리 기준금액은 서비스 쪽 정책 값으로 관리하고, 화면은 그 값을 기준으로 판정 결과만 보여줍니다.

이 화면은 스크랩 이동전표 등록(MB1A)이나 오더 확정(CO11N)을 대체하나요?

아닙니다. 스크랩 이동전표 등록과 오더 확정 입력은 표준 트랜잭션에서 그대로 수행합니다. 이 화면은 이미 등록된 실적·이동전표 데이터를 손실금액 관점에서 다시 조회하고, 임계금액을 넘는 대상을 찾아내는 조회·점검 화면입니다.

스크랩 수량, 손실금액 관점을 하나 더 붙여 보세요

이동전표로만 남는 스크랩 수량을 표준단가로 환산해 임계금액 초과 항목을 미리 걸러 두면, 공정 점검을 더 일찍 시작할 수 있습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

스크랩 손실불량 손실생산 분석생산(PP)OpenUI5