SAP 생산 수율 점검 — 투입한 만큼, 양품으로 얼마나 나왔는지부터 본다
생산오더 하나하나의 투입·양품·불량·재공 수량을 대사해 수율을 산출하고, 작업장·자재 단위로 다시 모아 목표 대비 차이가 큰 곳부터 가려냅니다
생산 실적은 보통 오더별로 확인(Confirmation) 시점에 투입·양품·불량 수량이 기록되지만, 그 수치를 "목표 대비 얼마나 벌어졌는지" 관점으로 다시 훑어보는 화면은 따로 없는 경우가 많습니다. 그래서 생산오더별 투입·양품·불량·재공증감 수량을 대사해 수율을 산출하고, 목표수율과 비교하는 화면을 OpenUI5로 구현했습니다.
수율이 목표수율보다 2.0%p 넘게 낮으면 "점검필요"로 자동 판정합니다. 표준 실적 확인·조회 기능이 담당하는 수량 입력·조회 위에, 오더·작업장·자재 세 관점에서 목표 대비 차이를 한 번에 볼 수 있는 층을 더한 셈입니다. 실제 구동 화면 5종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 실적 확인 — 생산오더 실적 확인(
CO11N)에서 입력되는 투입·양품·불량 수량 구조를 그대로 이어받습니다 - 오더 정보시스템 — 생산오더 정보시스템(
COOIS)의 오더별 조회 관점을 명세 탭 구성에 옮겨 왔습니다 - PP 정보시스템 — PP 정보시스템 오더 실적 분석(
MCRM)의 표준 집계 관점을 작업장·자재 집계 탭으로 보완합니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 생산(PP) · 생산 분석 |
| Namespace | zui5.yieldrate |
| 셸 구조 | 조회조건 영역(우측 조회) + 대사 요약 KPI 4종 + 탭 3개, 행 클릭 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 3개) + 상세 다이얼로그 |
| SAP 표준 T-code | CO11N · COOIS · MCRM |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·점검형 — 실제 공정 원인 판단은 현장 담당자가 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 5종 둘러보기
기본 조건으로 조회하면 요약 KPI와 명세 탭이 뜹니다 → 작업장별·자재별 집계 탭에서 축을 바꿔 보고 → 행을 클릭해 상세를 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 화면에 들어오면 기본 조건(전체 기간·전체 플랜트)으로 자동 조회가 1회 실행되어 요약 KPI와 명세·집계 탭이 함께 채워집니다.
- 조회조건 영역에서 플랜트·작업장·자재·판정을 선택합니다(선택하지 않으면 전체). 전기일(시작/종료)은 기본값이 채워져 있어 필요할 때만 바꿉니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 조회조건 영역 어디서든 Enter 키를 눌러도 같은 조회가 실행됩니다. 초기화 버튼은 조회 버튼 바로 왼쪽에 있습니다.
- 상단 카드에서 조회 오더 건수 · 평균 수율 · 점검필요 건수 · 의도적 예외 건수를 먼저 확인합니다.
- 탭을 옮겨 명세 → 작업장별 집계 → 자재별 집계 순으로 봅니다.
- 명세 탭에서 행을 클릭하면 해당 생산오더의 수량·수율 판정 상세가 다이얼로그로 열립니다.
- 각 탭 하단의 CSV 내려받기(UTF-8 BOM)로 현재 탭의 조회 결과를 저장합니다.
수율 판정 기준
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 수율 − 목표수율 ≤ -2.0%p (의도적 예외 아님) | 점검 필요 | 작업장별·자재별 집계 탭에서 편차가 몰린 지점을 확인하고 공정 담당자에게 확인 요청 |
| 재공 재작업 진행 중인 예외 건(판정 보류) | 점검 필요(보류) | 재작업이 끝나 재공수량이 확정된 뒤 재집계 결과를 다시 확인 |
| 그 외(수율이 목표수율에 근접하거나 상회) | 정상 | 조치 없음 |
위 기준은 조회·점검을 돕기 위한 것이며, 실제 공정상의 원인 판단과 조치는 화면이 단정하지 않고 현장 담당자가 확인합니다.
수율 산출 절차
| 단계 | 내용 |
|---|---|
| 1단계 | 생산오더별 투입·양품·불량·재공증감 수량을 실적 확인 데이터에서 모음 |
| 2단계 | 정합성 검증: 투입수량 = 양품수량 + 불량수량 + 재공증감수량(전수 일치 확인) |
| 3단계 | 수율(%) = 양품수량 ÷ 투입수량 × 100 산출 |
| 4단계 | 목표수율과 비교해 차이(%p)를 계산하고 판정(정상/점검필요) 부여 |
| 5단계 | 같은 오더 데이터를 작업장·자재 축으로 다시 합산(집계 합계 = 명세 합계) |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 플랜트 | 선택 | 전체면 조건 제외 |
| 작업장 | 선택 | 전체면 조건 제외 |
| 자재 | 선택 | 전체면 조건 제외 |
| 전기일(시작/종료) | 기본값 제공 | 생산오더 실적 확인일 범위 — 화면 진입 시 최근 30일로 채워짐 |
| 판정 | 선택 | 정상 · 점검필요 — 전체면 조건 제외 |
결과 컬럼
| 컬럼 | 설명 |
|---|---|
| 생산오더 · 플랜트 · 작업장 · 자재 · 전기일 | 명세의 기준 정보 |
| 투입수량 · 양품수량 · 불량수량 · 재공증감 | 수량 실적(정합성 대사 대상) |
| 수율(%) · 목표수율(%) · 차이(%p) · 판정 | 산출 지표와 판정 결과 |
| 작업장(또는 자재) · 오더건수 · 투입/양품/불량 수량 합계 · 수율(%) | 작업장별·자재별 집계 컬럼 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 수율 대사 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
CO11N | 생산오더 실적 확인 | 확인된 투입·양품·불량 수량 위에 재공증감을 더해 대사식을 완성합니다 |
COOIS | 생산오더 정보시스템 | 오더별 조회 관점을 수율·목표수율 차이 중심으로 재구성합니다 |
MCRM | PP 정보시스템 — 오더 실적 분석 | 표준 집계 관점을 작업장·자재별 수율 집계로 보완합니다 |
분석 지표 정의표
| 대상 영역 | 지표 | 정의 | 원천 데이터 |
|---|---|---|---|
| 생산 분석 | 수율(YieldRate) | 양품수량 ÷ 투입수량 × 100 | 생산오더 실적 확인 수량 |
| 생산 분석 | 차이(YieldGap) | 수율 − 목표수율 | 수율 산출값, 목표수율 마스터 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
AFKO | AUFNR | 오더 헤더 — 생산오더 번호 |
AFPO | WERKS · MATNR | 오더 품목 — 플랜트·자재 |
AFRU | GMNGA · XMNGA · BUDAT | 오더 실적 확인 — 양품·불량 수량, 확인일 |
CRHD | ARBPL | 작업장 마스터 |
define view entity I_ProductionOrderYield
as select from afru
inner join afpo on afpo.aufnr = afru.aufnr
inner join afko on afko.aufnr = afpo.aufnr
{
key afru.aufnr as OrderNo,
afpo.werks as Plant,
afpo.matnr as Material,
afru.budat as PostDate,
sum(afru.gmnga) as GoodQty,
sum(afru.xmnga) as ScrapQty
}
필드 매핑은 가상 데이터 기준 스케치이며, 재공증감은 별도 파생값으로 계산합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 요약 KPI · IconTabBar 3개 탭 |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로)로 기본 모델을 만들고 defaultCountMode:"Inline" · useBatch:false 로 구성합니다. 화면 블록마다 해당 엔티티셋에 직접 바인딩합니다 |
| 명세 탭 | sap.ui.table.Table(컬럼 13개) — 셀 클릭으로 상세 다이얼로그를 엽니다 |
| 집계 탭 | sap.m.Table 2개(작업장별·자재별) — 소계·총계 행은 굵게 구분 표시 |
| 조회조건 | sap.ui.model.Filter 로 조립해 바인딩에 적용합니다. 같은 필드(전기일 시작·종료)의 조건은 하나의 AND 복합 Filter 로 묶어 전달합니다. 전체를 고른 조건은 필터를 만들지 않습니다 |
| 예외 메시지 | 메타데이터 실패·요청 실패를 구분해 안내하는 전용 처리기 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 모델 초기화, 예외 메시지 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.yieldrate · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 요약 KPI · 3개 탭 |
view/DetailDialog.fragment.xml | 생산오더 상세 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/formatter.js · model/ErrorHandler.js | 표시 서식 · 예외 메시지 처리 |
i18n/i18n_ko.properties | 화면 문구 |
검증 결과
검증용 샘플 데이터(생산오더 64건, 플랜트 3개, 작업장 8개, 자재 10종)를 기준으로 대사식을 전수 검증했습니다. 재공 재작업이 진행 중이라 판정을 보류해야 하는 예외 사례 2건을 의도적으로 포함했습니다.
| 검증 항목 | 결과 |
|---|---|
| 투입수량 = 양품수량 + 불량수량 + 재공증감수량 (64건 전수) | 통과(불일치 0건) |
| 작업장별·자재별 집계 합계 = 명세 합계 | 통과(차이 0) |
| 조회 조건 전달 — 플랜트·작업장·자재·전기일·판정 필터 · 정렬 · 총건수 표시 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 | 0건 |
화면 렌더링 — 조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 안내 메시지 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면은 어떤 범위의 생산오더를 대상으로 하나요?
실적 확인이 이뤄진 생산오더 가운데 조회조건의 전기일 범위에 포함된 오더를 대상으로 합니다. 특정 업종이나 공정에 한정되지 않고, 투입·양품·불량·재공증감 수량이 확인되는 오더라면 모두 집계 대상이 됩니다.
"점검필요"로 표시되면 바로 불량 처리하면 되나요?
아닙니다. 이 화면은 목표수율과의 차이가 큰 오더·작업장·자재를 먼저 가려내는 조회·점검 도구입니다. 실제 원인 파악과 처리 여부는 공정·품질 담당자가 표준 프로세스에 따라 확인합니다.
재공증감(WipDeltaQty)은 왜 따로 관리하나요?
생산 중인 수량이 그대로 재공(WIP)으로 남아 있으면 투입수량이 아직 양품·불량 어느 쪽으로도 확정되지 않은 상태입니다. 이를 별도 항목으로 분리해야 "투입 = 양품 + 불량 + 재공증감" 대사식이 항상 성립하고, 재공이 많은 오더를 판정에서 구분해 볼 수 있습니다.
이 화면은 생산오더 실적 확인(CO11N)을 대체하나요?
아닙니다. 실적 확인 입력은 표준 트랜잭션에서 그대로 수행합니다. 이 화면은 이미 확인된 실적을 수율 관점에서 다시 조회하고, 목표 대비 차이가 큰 대상을 찾아내는 조회·점검 화면입니다.