SAP 작업센터 능력부하 현황 — 가용능력을 다 채우기 전에 미리 본다
작업센터의 하루 가용시간과 오더 소요시간을 조회기간 기준으로 맞대어, 부하율을 정상·주의·초과 3단계로 미리 확인하는 화면입니다.
작업센터의 하루 가용시간은 교대 구성(교대횟수·교대시간·휴게시간·가동률)으로 정해져 있지만, 그 앞에 쌓이는 오더 소요시간은 매주 달라집니다. 계획 담당자가 궁금한 것은 결국 하나입니다 — 이번 2주, 어느 작업센터가 감당 못 할 만큼 밀려 있는가.
SAP 표준 작업장·능력소요 데이터 구조를 그대로 이어받아, 조회기간을 바꿀 때마다 가용능력과 필요능력을 즉시 다시 계산해 부하율을 정상·주의·초과 3단계로 보여주도록 OpenUI5 화면으로 확장했습니다. 작업센터를 선택하면 일자별 부하 추이와 그 기간에 걸린 오더별 소요시간까지 바로 확인할 수 있습니다. 실제 구동 화면 4종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 작업장 마스터 — 작업장 헤더(
CRHD)와 능력헤더(CRCA)의 교대구성·가동률 구조 - 능력소요 — 오더 작업별 소요시간 개별 레코드(
KBED) - 오더 텍스트 — 오더유형·오더번호(
AUFK), 대상자재(자재마스터MAKT) - 표준 실행 — 능력현황평가·작업장 마스터 표시는 SAP 표준 기능이 계속 담당
| 항목 | 내용 |
|---|---|
| 업무 영역 | 생산관리(PP) · 작업센터 능력계획 |
| Namespace | zui5.captload |
| 셸 구조 | 조회조건 영역(우측 조회) + 작업센터별 결과 목록, 일자별·오더별 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | CM01(능력현황평가) · CR03(작업장 마스터 표시) |
| 성격 | 조회·판정형 — 작업장·능력소요 데이터 자체는 표준 기능이 관리 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 4종 둘러보기
플랜트·작업센터·조회기간을 넣고 조회하면 작업센터별 부하율이 목록으로 뜹니다 → 텍스트로 좁혀 보고 → 결과를 확인한 뒤 → 작업센터를 골라 일자별·오더별 상세를 들여다봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 플랜트 · 작업센터(코드/명) · 조회기간(From, To) · 부하상태를 지정합니다. 조회기간 기본값은 오늘부터 2주입니다.
- 조회조건 입력 필드에서 Enter 를 눌러도 바로 재조회됩니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
- 결과가 없으면 조회조건을 다시 확인하도록 안내 메시지가 뜹니다.
- 결과 목록 각 행의 오른쪽 화살표(상세)를 누르면 일자별 부하 추이와 오더별 소요시간 내역이 다이얼로그로 열립니다.
- 결과는 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.
부하율 3단계 판정 로직
작업센터의 1일 가용시간은 교대횟수 × (교대시간 − 휴게시간) × 가동률(%) 로 정해집니다.
조회기간에 포함된 평일(월~금) 수만큼 이 값을 누적한 것이 가용능력이고, 같은 기간·같은 작업센터에
배정된 모든 오더의 작업별 소요시간을 합산한 것이 필요능력입니다.
부하율 = 필요능력 ÷ 가용능력 × 100
- 100% 초과 → 초과 — 능력 부족, 외주·잔업 검토 대상
- 85%~100% → 주의 — 여유 능력이 15% 미만
- 85% 미만 → 정상
주말(토·일)은 가용능력 계산에서 제외하며, 상세 화면의 일자별 표에도 평일만 나열합니다.
능력부하 집계 4단계
| 단계 | 내용 |
|---|---|
| ① 대상 추리기 | 플랜트·작업센터(코드/명) 조건에 맞는 작업센터 마스터를 추립니다. |
| ② 기간 전개 | 조회기간(From~To)의 평일 목록을 만들고 그 일수를 구합니다. |
| ③ 능력 집계 | 작업센터별로 (평일수 × 1일 가용시간)을 가용능력으로, 그 기간의 오더별 소요시간 합계를 필요능력으로 계산해 부하율을 산출합니다. |
| ④ 표시 판정 | 부하상태 필터를 적용하고 정상/주의/초과 건수를 집계해 메시지와 하단 요약에 반영합니다. |
조회조건
| 필드 | 설명 |
|---|---|
| 플랜트 | 작업센터가 속한 플랜트(전체/서울 제1공장/구미 제2공장) |
| 작업센터(코드/명) | 작업센터 코드 또는 명칭 일부 텍스트 검색 |
| 조회기간(From, To) | 부하를 집계할 기간(평일만 가용능력에 반영) |
| 부하상태 | 정상/주의/초과 중 하나로 결과를 좁혀 봄(기본: 전체) |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 플랜트 · 작업센터 · 작업센터명 | 작업센터 마스터 식별 정보 |
| 능력유형 | 기계(설비) / 인력 구분 아이콘 표시 |
| 평일수 | 조회기간에 포함된 평일(월~금) 일수 |
| 가용능력 · 필요능력 | 우측정렬, 시간(h) 단위 |
| 부하율 | 필요능력 ÷ 가용능력 × 100(%), 상태별 색상 표시 |
| 상태 | 정상 · 주의 · 초과 (3단계 판정 로직 참고) |
상세 화면에는 이 값들 외에 일자별 가용·필요능력·부하율·상태 표와 오더별 소요시간 내역(오더번호·오더유형·작업·대상자재·소요시간) 표가 함께 제공됩니다.
SAP 표준 기능 매핑
이 화면은 표준 실행을 대체하지 않습니다. 작업장·능력소요 데이터는 SAP 표준 능력계획 기능이 그대로 관리하고, 이 화면은 그 데이터를 조회조건별로 즉시 재계산해 부하가 몰리는 작업센터를 먼저 짚어보는 조회·판정 관점을 더한 것입니다.
| SAP 표준 T-code | 기능 |
|---|---|
| CM01 | 능력현황평가 — 플랜트/기간별 작업장 부하 조회 |
| CR03 | 작업장 마스터 표시 — 교대구성·가동률 등 능력정보 확인 |
참고 CDS 뷰
운영 서비스로 연결할 때는 작업장 헤더와 능력헤더를 붙인 뷰로 서빙하는 구성을 제안합니다.
@AbapCatalog.sqlViewName: 'ZCCAPTLOAD'
@EndUserText.label: '작업센터 능력부하용 뷰 (Z)'
define view Z_C_WORKCENTER_LOAD
as select from crhd as WorkCenter
inner join crca as Capacity on Capacity.arbpl = WorkCenter.arbpl
and Capacity.werks = WorkCenter.werks
{
key WorkCenter.werks,
key WorkCenter.arbpl,
WorkCenter.ktext as ArbplText,
Capacity.kapart as Kapart,
Capacity.schichten as Schichten,
Capacity.schichtdauer as Schichtdauer,
Capacity.pause as Pause,
Capacity.nutzungsgrad as Nutzungsgrad,
// 파생값 — 1일 가용시간 = 교대횟수 x (교대시간-휴게시간) x (가동률/100)
Capacity.schichten * ( Capacity.schichtdauer - Capacity.pause )
* ( Capacity.nutzungsgrad / 100 ) as DailyAvailHours
// 능력소요(KBED)는 기간·작업장 단위로 별도 뷰에서 합산해 결합
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 능력카테고리 구성과 공휴일 캘린더 반영 방식에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.f.DynamicPage + 조회조건 헤더 + 결과 테이블 + 푸터 요약 |
| 조회조건 | sap.m.Select · sap.m.Input · sap.m.DatePicker — 우측 끝에 조회 버튼, change/submit 로 Enter 조회 |
| 결과 목록 | sap.ui.table.Table — 상태별 행 하이라이트, 행 액션으로 상세 오픈 |
| 상세 화면 | sap.m.Dialog — 요약 카드 + 일자별 표 + 오더별 표 |
| 포맷 | 시간·퍼센트·일자·상태 아이콘/색상 포맷터 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment |
Component.js | 디바이스 모델 초기화, 에러 핸들러 연결 |
manifest.json | 앱 디스크립터 — ko 로케일, sap.ui.table 의존성 |
view/Main.view.xml + fragments/ | 조회 헤더·검색·메시지·결과 테이블 프래그먼트 |
controller/Main.controller.js | 능력 집계·부하율 판정·상세 데이터 구성 |
model/ModelMock.js | localdata JSON 을 fetch 로 읽는 모의 모델 |
js/formatter.js | 시간·퍼센트·일자·상태 포맷 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/*.json | 플랜트·작업센터·능력소요 검증용 데이터 |
운영 전환 시에는 ModelMock 내부만 실제 서비스 호출로 바꾸면 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 데이터는 작업센터 18개(2개 플랜트), 능력소요 레코드 1,600여 건이며, 기본 조회기간(2주) 기준으로 정상·주의·초과 상태가 모두 나타나도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| JSON/XML 전체 파싱, manifest 참조 누락 검사 | 통과 |
| i18n 키 누락 검사 (뷰·컨트롤러 사용 키 전수 대조) | 통과 |
| 이벤트핸들러 미구현 검사 (press/change/submit 전수 대조) | 통과 |
| 부하율 산식 재현 (Node 스크립트로 별도 계산해 정상/주의/초과 3단계 모두 일치) | 통과 |
| 조회 버튼 위치 — 조회조건 영역 오른쪽 끝(하단 Bar 아님) | 통과 |
| Enter 키 조회 동작 | 통과 |
| 적용 테마 sap_horizon 확인 | 통과 |
| 화면 렌더링 — 실브라우저에서 조회 → 필터 → 상세 실동작 후 캡처 | 4/4 |
작업센터·오더·소요시간은 모두 검증용 데이터입니다.
자주 묻는 질문
주말에 잡힌 오더 소요시간은 어떻게 반영되나요?
가용능력은 평일만 인정하지만 필요능력 합계는 조회기간 내 모든 날짜의 소요시간을 그대로 더합니다. 주말 작업이 많으면 부하율이 실제보다 높아 보일 수 있어, 상세 화면의 오더별 내역에서 날짜를 함께 확인하는 것이 좋습니다.
부하율 판정 기준(85%·100%)은 고정값인가요?
이번 화면에 적용한 기준값입니다. 현장 관리기준에 맞춰 조정이 필요하면 담당자와 협의해 반영하는 구조로 되어 있습니다.
한 작업센터에 기계·인력 능력이 함께 있으면 어떻게 되나요?
작업센터 마스터에는 하나의 능력유형만 대표값으로 반영됩니다. 실제로 두 능력유형을 따로 관리한다면 작업센터를 능력유형별로 분리해 등록하는 편이 정확합니다.
SAP 표준 기능과 어떻게 이어지나요?
작업장과 능력소요 데이터 자체는 SAP 표준 능력계획 기능이 만들고 관리합니다. 이 화면은 그 데이터를 조회기간 기준으로 즉시 재계산해, 부하가 몰리는 작업센터를 미리 짚어보는 조회 관점을 더한 것입니다.