솔루션 홈
CS03·CA03 · BOM·공정경로

SAP 자재명세서(BOM)·공정경로 현황 — 유효기간과 표준시간을 한 화면에서

CS03 은 상위자재 한 건씩만 보여 줍니다. 여러 자재의 구성품 유효기간과 라우팅 표준시간을 한 번에 훑어보는 화면입니다.

자재명세서(BOM)는 CS03 화면에서 상위자재 한 건씩 조회하는 것이 표준입니다. 그런데 구성품에는 저마다 유효기간(Datuv~Datub)이 걸려 있어서, 지금 이 구성이 실제로 적용 중인지, 곧 끝나는지는 화면에서 날짜 두 개를 눈으로 비교해야 알 수 있습니다. 라우팅(공정경로)의 표준시간을 함께 보려면 CA03 을 따로 열어야 하고요.

SAP 표준 BOM(MAST/STPO)·라우팅(PLKO/PLPO) 데이터 구조를 그대로 이어받아, 상위자재별 구성품을 기준일자 대비로 자동 판정하고 공정별 표준시간까지 한 번에 계산해 보여 주도록 OpenUI5 화면으로 확장한 것이 이 화면입니다. 유사한 화면으로 표준원가계산(CK13N 계열)이 BOM 을 원가 롤업의 재료로 쓰는 사례가 이미 있지만, 그 화면은 원가 관점이고 이 화면은 원가 계산 없이 BOM·라우팅 자체의 유효성과 소요시간만 다룬다는 점에서 다릅니다. 실제 구동 화면 2종을 함께 공개합니다.

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

  • BOM 원천 — 헤더(MAST)와 품목(STPO) 구조를 그대로 사용
  • 라우팅 원천 — 그룹 헤더(PLKO)와 공정(PLPO) 구조를 그대로 사용
  • 작업장 마스터 — CRHD 코드·명칭
  • 관리키 — T430 계열 텍스트(확인요/불요/외주공정)
항목내용
대응 T-codeCS03(BOM 조회) · CA03(라우팅 조회)
업무 영역생산관리(PP) · 자재명세서·공정경로
Namespacezui5.bom
셸 구조조회조건 영역(상단) + BOM 구성품 명세 테이블, 상세보기 Dialog(구성품 전체 + 라우팅 + 표준시간 요약)
화면 수조회 화면 1개 + 상세보기
성격조회형 — BOM·라우팅 마스터데이터는 표준 트랜잭션(CS01/CS02, CA01/CA02)이 그대로 담당
UI 테마sap_horizon 단일 적용

실제 화면 2종 둘러보기

플랜트·상위자재·BOM용도·기준일자를 넣고 조회하면 구성품이 품목번호 순으로 펼쳐집니다 → 상태 컬럼에서 만료임박·만료 건을 먼저 확인하고 → 행의 상세로 라우팅 표준시간까지 함께 봅니다.

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

zui5.bom — Main.view.xml
BOM 구성품 명세 메인화면
BOM 구성품 명세 메인화면 — 플랜트·상위자재·BOM용도·유효성상태·기준일자로 조회한 결과입니다. 구성품마다 품목유형(재고품목/텍스트품목), 소요량, Scrap(%), 유효기간, 상태(유효/만료임박/만료/미래유효)가 한 줄로 표시되고 만료임박·만료 행은 하이라이트로 구분됩니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
zui5.bom — DetailDialog.fragment.xml
BOM·공정경로 상세 다이얼로그
BOM·공정경로 상세 — 상위자재 1건의 BOM 구성품 전체와 라우팅 공정경로를 함께 보여 줍니다. 요약 영역에 구성품 수·공정 수·1단위 총 표준시간을 표시하고, 공정별로 준비시간(로트 전체)과 가동시간(단위당)을 더한 단위표준시간을 계산해 보여 줍니다.

조작 방법

  1. 플랜트BOM용도를 Select 로 고릅니다. 기본값은 전체입니다.
  2. 상위자재(코드/명) 입력란에 코드나 명칭 일부를 입력하면 대소문자 구분 없이 부분 일치로 찾습니다.
  3. 유효성상태를 고르면 해당 상태의 구성품만 걸러 봅니다.
  4. 기준일자를 바꾸면 그 날짜를 기준으로 유효기간 판정이 다시 계산됩니다.
  5. 조회조건 입력필드에서 Enter 를 눌러도 바로 조회됩니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
  6. 결과 행의 상세 버튼을 누르면 BOM 구성품 전체와 라우팅 공정경로, 1단위 총 표준시간을 봅니다.
  7. 목록은 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

BOM 구성품 유효기간 판정 규칙

구성품마다 유효기간이 있어, 기준일자 하나만으로는 지금 이 구성이 실제로 적용 중인지 알기 어렵습니다. 그래서 기준일자와 유효기간을 비교해 4단계로 판정합니다. 텍스트품목은 자재가 아니므로 판정 대상에서 제외합니다.

상태판정 조건의미
미래유효(미적용)기준일자 < 유효시작일등록은 됐지만 기준일자 시점에는 아직 적용되지 않음
유효유효기간 내 · 잔여 31일 이상(또는 무기한)기준일자 시점에 정상 적용 중
만료임박유효종료일까지 잔여 30일 이하곧 유효기간이 끝나 후속 대체 구성품 확인 필요
만료기준일자 > 유효종료일기준일자 시점에 이미 적용 종료

텍스트품목을 판정에서 뺀 이유

BOM 품목유형에는 재고품목(자재) 외에 조립 지시사항 같은 텍스트품목도 섞여 있습니다. 실제 자재가 아니므로 유효기간 개념 자체가 없고, 그대로 판정에 넣으면 "상태 없음"이 아니라 잘못된 상태로 표시될 수 있어 화면에서부터 제외했습니다.

공정경로 표준시간 집계 처리 단계

라우팅은 공정 단위로 준비시간(로트 전체 1회)과 가동시간(단위당)을 따로 관리합니다. 다음 4단계로 상위자재 1단위 생산에 필요한 표준시간을 계산합니다.

단계내용
1라우팅 로드 — 상위자재·플랜트가 일치하는 공정경로 목록을 공정번호 순으로 불러온다
2단위 준비시간 환산 — 공정별 준비시간(로트 전체)을 BOM 기준수량으로 나눠 1단위당 준비시간으로 바꾼다
3단위표준시간 산출 — 환산된 단위 준비시간에 공정별 단위당 가동시간을 더한다
4총 표준시간 합산 — 전체 공정의 단위표준시간을 더해 1단위 생산 총 표준시간을 산출한다

예) 기준수량 10EA, 준비시간 8분, 가동시간(단위당) 1.2분인 공정은 단위표준시간 = (8 ÷ 10) + 1.2 = 2.0분/EA 입니다.

조회조건

필드필수설명
플랜트선택기본값 전체 플랜트
BOM용도선택1=생산, 2=엔지니어링/설계
상위자재(코드/명)선택부분 일치, 대소문자 구분 없음
유효성상태선택유효/만료임박/만료/미래유효 중 필터
기준일자필수(기본값 오늘)유효기간 판정의 기준 시점

결과 컬럼

BOM 구성품 명세

컬럼의미 · 표시
플랜트 · 상위자재 · 상위자재명BOM 헤더 정보
BOM용도생산 / 엔지니어링·설계 아이콘 구분
품목번호 · 품목유형0010 단위 증가, 재고품목/텍스트품목 구분
구성품 · 구성품명자재코드와 명칭
소요량 · Scrap(%)기준수량당 필요수량과 스크랩률
유효기간YYYY.MM.DD ~ YYYY.MM.DD, 무기한이면 "무기한" 표시
상태유효/만료임박/만료/미래유효 — 기준일자 대비 판정 결과

상세보기 — 라우팅 공정경로

컬럼의미 · 표시
공정번호 · 작업장0010 단위 증가, 작업장 코드와 명칭
작업내역 · 관리키공정 설명과 확인 요부(PP01/PP02) 또는 외주(PP03) 구분
준비시간(로트) · 가동시간(단위당)라우팅 원본값
단위표준시간(준비시간 ÷ 기준수량) + 가동시간(단위당)

SAP 표준 기능 매핑

이 화면은 BOM·라우팅을 만들거나 바꾸지 않습니다. 마스터데이터 유지는 CS01/CS02(BOM)와 CA01/CA02(라우팅)가 그대로 담당하고, 이 화면은 그 데이터를 조회 관점으로 모아 유효기간 판정과 표준시간 집계를 더해 확장한 구성입니다.

테이블 · 오브젝트역할
MAST · STKOBOM 헤더 — 상위자재·플랜트·BOM용도·Alt BOM·기준수량
STPOBOM 품목 — 품목유형·구성품·소요량·Scrap·유효기간
PLKO · PLPO라우팅 그룹 헤더/공정 — 작업장·표준시간·관리키
CRHD작업장 마스터 — 작업장 코드와 명칭
T430 계열관리키 텍스트(확인요/불요/외주공정)

도입 시 확인이 필요한 부분

다단계 BOM(구성품이 다시 상위자재가 되는 경우)의 재귀 전개는 이번 화면 범위에 포함하지 않았습니다. 실제 도입 시에는 CS12(다단계 BOM 전개) 로직을 참고해 재귀 전개와 순환참조 방지 로직을 추가해야 합니다. Scrap(%) 처리 시점(부품투입 vs 조립완료 기준)도 회사 표준에 맞춰 정합니다.

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZCBOMROUTE'
@EndUserText.label: 'BOM·공정경로 조회용 (Z)'
define view Z_C_BOM_ROUTING
  as select from mast as Bom
    inner join      stpo as Item     on  Bom.stlnr = Item.stlnr
    left outer join plko as RtHeader on  Bom.werks = RtHeader.werks
                                     and  Bom.matnr = RtHeader.matnr
    left outer join plpo as RtOper   on  RtHeader.plnnr = RtOper.plnnr
                                     and  RtHeader.plnal = RtOper.plnal
    left outer join crhd as WorkCtr  on  RtOper.arbpl = WorkCtr.arbpl
{
  key Bom.stlnr,
  key Item.stlnr_item as Posnr,
      Bom.matnr,
      Bom.werks,
      Bom.stlan,
      Bom.stlal,
      Bom.basmn,
      Item.postp,
      Item.idnrk,
      Item.menge,
      Item.meins,
      Item.ausch,
      Item.datuv,
      Item.datub,
      // 라우팅 단위표준시간 = (준비시간 / 기준수량) + 가동시간(단위당)
      RtOper.vorgang,
      WorkCtr.arbpl,
      RtOper.vgw01,
      RtOper.vgw02,
      division( RtOper.vgw01, Bom.basmn, 2 ) + RtOper.vgw02 as UnitStandardMin
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 BOM 이력(변경번호) 반영 여부와 다단계 전개 범위에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.f.DynamicPage + 조회조건 헤더 + sap.ui.table.Table
조회조건sap.m.Select · sap.m.Input · sap.m.DatePicker — 조회조건 영역 오른쪽 끝에 조회/초기화 버튼, change/submit 로 Enter 조회
결과 테이블sap.ui.table.Table — 컬럼 11개, RowAction 으로 상세 진입
상세보기sap.m.Dialog — 요약 카드 + 구성품 전체 테이블 + 라우팅 테이블
포맷수량 · 퍼센트 · 일자범위 · 상태 아이콘/색상 포맷터

기준일자를 조회조건으로 뺀 이유

유효기간 판정은 "오늘" 하나로 고정하면 결산 시점이나 미래 특정 시점의 적용 여부를 미리 확인할 수 없습니다. 기준일자를 조회조건으로 열어 두면 담당자가 원하는 시점 기준으로 재판정해 볼 수 있습니다.

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment
Component.js디바이스 모델 초기화 · 라우터
manifest.json앱 디스크립터 — 앱 ID(zui5.bom) · ko 로케일
view/Main.view.xml · fragments/조회조건 + 구성품 테이블 + 상세 Dialog
controller/Main.controller.js조회 · 유효기간 판정 · 표준시간 집계 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
js/formatter.js수량 · 퍼센트 · 일자범위 · 상태 포맷
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/werks · stlan · boms · bomitems · routings 검증용 데이터

검증 결과

화면 구성에 쓴 데이터는 상위자재(BOM) 6건 · 구성품 35건 · 라우팅 공정 18건입니다.

검증 항목결과
XML/JSON 전체 파싱 · manifest 참조 누락 0건 · i18n 키 누락 0건통과
로컬 http.server 전 리소스 HTTP 200통과
BOM 품목 → BOM 헤더, 라우팅 → 상위자재 참조 무결성(orphan 0건)통과
조회 버튼 위치 — 조회조건 영역 오른쪽 끝(하단 Bar 아님)통과
적용 테마 sap_horizon 확인통과
화면 렌더링 — 실브라우저에서 조회 → Enter 키 조회 → 상세다이얼로그 실동작 후 캡처2/2

플랜트 · 자재 · 작업장명은 모두 검증용 데이터입니다.

자주 묻는 질문

다단계 BOM(구성품이 또 다른 BOM인 경우)도 전개되나요?

이번 범위는 단일 레벨 조회입니다. 구성품이 다시 상위자재가 되는 다단계 전개는 CS12 로직을 참고해 별도로 확장해야 합니다.

기준일자를 바꾸면 어떤 값이 다시 계산되나요?

구성품별 유효/만료임박/만료/미래유효 상태만 다시 계산됩니다. 소요량·표준시간 등 다른 값은 기준일자와 무관합니다.

단위표준시간은 실제 SAP 표준원가와 같은 개념인가요?

계산 방식(준비시간을 로트로 나눠 단위당 가동시간과 더하는 방식)은 표준원가계산의 개념을 단순화한 것으로, 실제 표준원가 산정에는 활동유형 단가·간접비 배부 등이 추가로 필요합니다.

텍스트품목은 왜 상태가 표시되지 않나요?

텍스트품목은 실제 자재가 아니라 조립 지시사항 등을 남기는 항목이라 유효기간 판정 대상에서 제외했습니다.

BOM·공정경로 확인, 지금 쓰는 SAP 위에서 확장해 보세요

CS03·CA03 을 오가며 날짜를 눈으로 비교하는 대신, 화면 하나에서 유효기간과 표준시간을 함께 확인하면 자재·생산기술 검토 시간이 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

BOM자재명세서공정경로CS03CA03라우팅표준시간OpenUI5