솔루션 홈
COOIS·CO03 · 생산

SAP 생산오더 진행현황 — 계획수량 대비 지금 얼마나 왔는가

오더수량 대비 작업확인·생산입고가 어디까지 왔는지, 기본완료일을 넘긴 오더가 몇 건이고 얼마나 남았는지를 한 화면에서 봅니다.

생산오더를 릴리즈했다고 끝난 것이 아닙니다. 그 뒤로 현장에서 작업을 확인(CO11N)하고, 만든 것을 창고로 입고(MB31)해야 오더 하나가 실제로 끝납니다. 문제는 이 세 시점 — 계획한 수량, 현장이 확인한 수량, 창고에 들어온 수량 — 이 서로 다른 속도로 움직인다는 것입니다.

오더를 하나씩 열어보면(CO03) 그 오더가 어디까지 왔는지는 보이지만, 플랜트 전체에서 어떤 오더를 먼저 챙겨야 하는지는 보이지 않습니다. 계획수량 대비 확인·입고 진행률을 한 번에 펼쳐 놓고, 기본완료일을 넘겼는데도 안 끝난 오더를 지연일수 순으로 위에 띄우도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 확인수량이 오더수량을 넘거나 입고수량이 확인수량을 넘는 데이터 이상치도 같은 화면에서 자동으로 걸러냅니다. 실제 구동 화면 5종을 함께 공개합니다.

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

  • 생산오더 — 오더 헤더(AFKO)와 품목(AFPO) 구조를 그대로 사용
  • 작업확인 — AFRU 확인 실적(취소분 제외 누계)
  • 생산입고 — AFPO-WEMNG(101 이동유형 반영분)
  • 작업장 — CRHD 작업장 마스터
  • 오더상태 — JEST 시스템상태관리를 5단계로 단순화
항목내용
기반 T-codeCOOIS · CO03 — 보조 : CO11N(작업확인) · MB31(생산입고)
업무 영역생산(PP) · 오더 진행관리
Namespacepp005_prodstat
셸 구조조회조건 영역 + 진행현황 테이블 + 상세 다이얼로그(수량 구성 + 처리 이력)
화면 수조회 화면 1개 + 상세 다이얼로그
성격조회형(Read-Only) — 작업확인·생산입고 실행은 표준이 담당
UI 테마sap_horizon 단일 적용

실제 화면 5종 둘러보기

플랜트·작업장으로 조회하면 오더별 진행현황이 나옵니다 → 지연·정합성 이상치를 먼저 가려보고 → 상세 다이얼로그에서 수량 구성과 처리 이력을 확인합니다.

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

pp005_prodstat — Main.view.xml
초기 화면 — 조회조건
초기 화면 — 조회조건 — 플랜트·작업장·기준일자·자재·오더번호·오더유형·오더상태를 고르는 화면입니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
pp005_prodstat — Enter 키 조회
오더번호 입력 후 Enter 키 조회
Enter 키 조회 — 오더번호 입력 필드에서 Enter 키만 눌러도 바로 조회됩니다. 마우스로 조회 버튼을 누르지 않아도 됩니다.
pp005_prodstat — 진행현황 전체 조회
진행현황 전체 조회 결과 — 지연·이상치 표시
진행현황 전체 조회 — 본사 공장(1000) 오더 24건입니다. 지연 오더는 행 왼쪽에 빨간 강조 바가 붙고, 타이틀·메시지 스트립에 지연 건수와 지연 잔여수량 합계가 동시에 뜹니다.
pp005_prodstat — 지연 오더만
지연 오더만 필터 결과
지연 오더만 필터 — 표시옵션 체크 한 번으로 24건 중 지연 8건만 남고, 합계·타이틀 KPI 가 필터링된 결과 기준으로 다시 계산됩니다.
pp005_prodstat — 상세 다이얼로그
오더 상세 — 수량 구성과 처리 이력
상세 다이얼로그 — 오더 1건의 수량 구성(오더수량·확인수량·입고수량·잔여수량)과 생성→릴리즈→작업확인→생산입고→기술적완료 처리 이력을 시간순으로 보여줍니다.

조작 방법

  1. 플랜트를 고릅니다. 작업장 목록이 그 플랜트 소속으로 자동으로 좁혀집니다.
  2. 필요하면 작업장·자재·오더번호·오더유형·오더상태 조건을 추가합니다. 자재·오더번호는 부분일치 검색입니다.
  3. 조회조건 영역 오른쪽의 조회 버튼을 누르거나, 입력 필드에서 Enter 키를 누릅니다.
  4. 한 번 조회한 뒤로는 조건을 바꾸는 즉시 자동으로 재조회됩니다. 다시 조회 버튼을 누르지 않아도 됩니다.
  5. 지연 오더만 옵션으로 기준일자 기준 지연 건만 남길 수 있습니다.
  6. 행의 상세 버튼(또는 행 클릭)으로 수량 구성과 처리 이력을 확인합니다.
  7. 목록과 이력 모두 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

확인·입고 진행률과 정합성 판정 로직

화면은 저장된 값을 그대로 보여주지 않고, 조회 시점마다 아래 식을 다시 계산합니다. 기준일자를 바꿔가며 "그 시점에는 며칠 지연이었는가"를 되돌려 볼 수 있게 하기 위해서입니다.

항목산출식
진행률확인수량 ÷ 오더수량 × 100
잔여수량MAX(0, 오더수량 − 확인수량)
지연일수오더상태가 입고완료·기술적완료가 아니고 기준일자가 기본완료일을 넘긴 경우에만 기준일자 − 기본완료일(일). 이미 끝난 오더는 지연을 다시 재지 않습니다.
생산정합성확인수량이 오더수량의 102% 이하이고 입고수량이 확인수량 이하이면 정합, 그렇지 않으면 이상치로 표시합니다.

정렬은 지연일수 내림차순 → 잔여수량 내림차순입니다. 화면 맨 위에 언제나 가장 급한 오더가 오도록 한 설계입니다.

102% 라는 허용치를 둔 이유

스크랩이 나오면 대체 생산분을 추가로 확인해 오더수량을 소폭 넘기는 일이 실무에서는 흔합니다. 이를 전부 오류로 잡으면 정상적인 재작업까지 매번 이상치로 뜨게 됩니다. 102% 까지는 정상 범위로 두고, 그 이상이거나 입고가 확인보다 먼저 찍힌 경우만 데이터 오류 의심 건으로 골라냅니다.

생산오더 진행현황 집계 처리 5단계

  1. 기준 데이터 적재 — 플랜트·작업장·오더유형·상태 코드값과 오더 마스터, 처리이력을 한 번에 읽습니다.
  2. 1차 필터링 — 플랜트(필수)·작업장·오더유형·자재·오더번호 조건으로 오더를 좁힙니다.
  3. 행 단위 계산 — 좁혀진 오더마다 진행률·잔여수량·지연일수·생산정합성을 계산합니다.
  4. 2차 필터링·정렬 — 오더상태·지연 오더만 옵션을 계산된 값 기준으로 다시 적용하고, 지연일수→ 잔여수량 순으로 정렬합니다.
  5. 합계 집계 — 화면에 보이는 결과 기준으로 수량 합계·상태별 건수·지연 건수·정합성 이상치 건수를 다시 계산해 타이틀·테이블 하단에 반영합니다.

조회조건

필드필수설명
플랜트필수1000(본사 공장) · 2000(생산법인 공장)
작업장선택선택된 플랜트 소속 작업장만 표시
기준일자필수지연일수 계산의 기준 시점, 기본값은 오늘
자재선택자재코드·자재명 부분일치
오더번호선택부분일치
오더유형선택표준 생산오더 · 리워크(재작업) 오더 · 샘플오더
오더상태선택릴리즈 · 부분확인 · 확인완료 · 입고완료 · 기술적완료
표시옵션선택지연 오더만

결과 컬럼

컬럼의미 · 표시
오더번호 · 오더유형 · 플랜트 · 자재 · 작업장오더 식별 정보
기본시작일 · 기본완료일오더 헤더의 계획 일정
오더수량 · 확인수량 · 입고수량계획 · 작업확인 누계 · 생산입고 누계
진행률 · 잔여수량 · 지연일수매 조회마다 재계산되는 파생 값
오더상태릴리즈/부분확인/확인완료/입고완료/기술적완료를 색상으로 구분
생산정합성정합/이상치 — 이상치·지연 건은 행 좌측 강조 바로 함께 표시

SAP 표준 기능 매핑

표준 실행은 COOIS·CO03·CO11N·MB31 이 그대로 담당합니다. 이 화면은 그 실행 결과를 한 번에 모아 보고 검증하는 관점을 더합니다.

표준 기능이 화면에서의 확장
COOIS 생산오더 정보시스템플랜트·작업장 단위로 다건을 펼치고 지연일수·잔여수량 기준으로 자동 정렬
CO03 생산오더 조회오더를 하나씩 열지 않고도 상세 다이얼로그에서 수량 구성과 이력을 한 번에 확인
CO11N 작업확인 / MB31 생산입고두 실행 결과를 오더수량과 대사해 생산정합성 이상치를 자동으로 걸러냄

도입 시 확인이 필요한 부분

102% 허용치와 지연일수를 재는 기준(완료 상태 판정 기준)은 회사마다 다를 수 있습니다. 작업장별 표준 리드타임이 다르면 지연 여부를 오더유형·작업장 조합으로 세분화할 필요도 있습니다. 실제 도입 시에는 현장 운영 기준에 맞춰 조정합니다.

참고 CDS 뷰

운영 서비스로 연결할 때는 오더 헤더·품목에 작업확인 누계를 붙인 뷰로 서빙하는 구성을 제안합니다.

@AbapCatalog.sqlViewName: 'ZCPRODSTAT'
@EndUserText.label: '생산오더 진행현황 (Z)'
define view Z_C_PROD_ORDER_PROGRESS
  as select from afko as Order
    inner join      afpo as Item     on  Order.aufnr = Item.aufnr
    left outer join afru as Confirm  on  Confirm.aufnr = Order.aufnr
                                     and Confirm.stokz <> 'X'
{
  key Order.aufnr        as OrderNo,
      Order.auart         as OrderType,
      Item.werks          as Plant,
      Item.matnr          as Material,
      Order.gstrp         as BasicStart,
      Order.gltrp         as BasicFinish,
      Order.gamng         as OrderQty,
      Order.gmein         as Uom,
      Item.wemng          as GrQty,
      sum( Confirm.lmnga ) as ConfirmQty
      // 진행률 = ConfirmQty / OrderQty x 100, 지연일수 = 기준일자 - BasicFinish (완료 상태 제외)
}
group by Order.aufnr, Order.auart, Item.werks, Item.matnr,
         Order.gstrp, Order.gltrp, Order.gamng, Order.gmein, Item.wemng

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 상태관리 설정과 확인 취소 처리 방식에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.f.DynamicPage — 타이틀 KPI + 조회조건 헤더 + 진행현황 테이블
조회조건sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화, 모든 이벤트가 onPAI 단일 진입점
진행현황 테이블sap.ui.table.Table — 16개 컬럼, 행 강조(highlight)로 지연·이상치 표시
상세 다이얼로그sap.m.Dialog + ObjectHeader(수량 구성) + sap.m.Table(처리 이력)
데이터OData 미구현 — ModelMock 이 localdata JSON 을 fetch 로 읽어 Promise 로 반환
테마sap_horizon

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment
Component.js디바이스 모델 초기화 · 라우터 시작
manifest.json앱 디스크립터 — 앱 ID(zui5.prodstat) · ko 로케일 · sap_horizon
view/Main.view.xml · view/fragments/*DynamicPage 타이틀/조회조건/메시지스트립/테이블 Fragment 분리
controller/Main.controller.js조회 · 집계(진행률/지연/정합성) · 상세 · CSV
model/ModelMain.js · ModelMainView.js업무데이터 모델 · 화면상태 모델
model/ModelMock.jslocaldata JSON 읽기(Promise)
model/formatter.js수량 · 비율 · 지연일수 · 상태 포맷터
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/meta.json · orders.json · history.json기준값 · 오더 마스터 · 처리이력 검증용 데이터

검증 결과

화면 구성에 쓴 데이터는 생산오더 48건(플랜트 2곳 각 24건) · 처리이력 221건입니다.

검증 항목결과
진행률·잔여수량·지연일수 계산값에 음수·NaN 없음 (전 건)통과
처리이력의 작업확인 수량 합계 = 오더의 확인수량통과
처리이력의 생산입고 수량 합계 = 오더의 입고수량통과
의도적으로 심은 이상치 3건만 생산정합성 이상치로 검출통과
완료(입고완료·기술적완료) 오더는 지연일수 0으로 고정통과
XML · JSON 전체 파싱 / i18n 키·이벤트핸들러 누락오류 0건
조회 버튼 위치 — 조회조건 영역 오른쪽 끝(하단 Bar 아님)통과
Enter 키 조회 · 지연 오더만 필터(24건→8건) · 상세 다이얼로그통과
화면 렌더링 — 실브라우저에서 조회 → 필터 → 상세 실동작 후 캡처, 테마 sap_horizon 확인5/5

플랜트·작업장·자재·오더번호는 모두 검증용 데이터입니다.

자주 묻는 질문

지연일수는 오더가 끝난 뒤에도 계속 늘어나나요?

아닙니다. 오더상태가 입고완료 또는 기술적완료가 되면 그 시점부터 지연일수는 0으로 고정됩니다. 이미 끝난 오더를 계속 지연 중이라고 보여주지 않기 위한 설계입니다.

확인수량이 오더수량보다 많을 수 있나요?

스크랩 발생으로 대체 생산분을 추가 확인하면 오더수량을 소폭 넘길 수 있습니다. 102% 까지는 정상 범위로 보고, 그 이상이거나 입고수량이 확인수량을 넘어서면 생산정합성 이상치로 표시합니다.

작업장을 바꾸지 않고 플랜트만 바꿔도 되나요?

가능합니다. 플랜트를 바꾸면 작업장 목록이 그 플랜트 소속으로 자동 갱신되고 작업장 선택값은 전체로 리셋됩니다. 다시 조회하면 새 플랜트 기준 결과가 나옵니다.

SAP 표준 기능과 어떻게 이어지나요?

오더 실행은 표준 COOIS·CO03·CO11N·MB31 이 그대로 담당합니다. 이 화면은 그 실행 결과(확인수량·입고수량)를 오더수량과 대사해 진행률·지연일수·정합성 이상치를 자동으로 걸러내는 조회 관점을 더한 것입니다.

생산오더 진행현황, 지금 쓰는 SAP 위에서 확장해 보세요

어떤 오더를 먼저 챙겨야 하는지가 화면 하나로 보이면 생산관리팀의 하루 점검 시간이 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

생산오더 진행현황진행률지연일수생산정합성COOISCO03PPOpenUI5