솔루션 홈
구매 분석

SAP 구매 리드타임 분석 — 발주부터 입고까지, 목표보다 얼마나 늦었는지 본다

거래처마다 자재군마다 다른 납기, 목표 리드타임과 실제 리드타임을 대사해 지연 지점을 미리 찾는 방법을 정리했습니다

구매 발주(PO)부터 입고(GR)까지 걸리는 기간, 즉 리드타임은 재고 계획과 생산·판매 일정에 직접 영향을 줍니다. 거래처마다, 같은 거래처라도 자재군마다 납기가 다르기 때문에 "며칠이면 정상"이라는 기준도 조합마다 달라야 합니다.

이 화면은 발주 건별 실제 리드타임을 거래처×자재군별 목표 리드타임과 대사해 목표를 넘겨 들어온 건을 지연입고로 가려냅니다. 거래처×자재군 조합별 정시입고율과 월별 추이를 함께 보여줘 구매 조직이 납기 관리가 필요한 지점을 빠르게 찾도록 OpenUI5 화면으로 확장했습니다. 표준 실행(발주 등록·입고 처리·구매정보레코드 관리)은 SAP 표준 T-code 가 담당하고, 이 화면은 발주부터 입고까지의 기간을 한데 모아 보는 조회·점검 관점을 더합니다. 실제 구동 화면 6종을 함께 공개합니다.

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

  • 발주 조회 — 구매오더 목록 조회(ME2N)의 발주번호·발주일·거래처·자재·수량·금액을 그대로 이어받습니다
  • 입고 처리 — 상품 이동(MIGO)으로 확정된 입고일을 리드타임 종료 시점으로 씁니다
  • 입고 이력 — 자재 문서 목록(MB51)으로 입고일을 대조합니다
  • 목표 리드타임 — 구매정보레코드 조회(ME13)의 거래처×자재군 기준을 참고합니다
항목내용
업무 영역구매(MM) · 발주·입고 관리
관련 기준서-
Namespacezui5.leadtime
셸 구조조회조건 영역(우측 조회) + 리드타임 대사 요약 KPI 5종 + 탭 3개, 행 클릭 상세 Dialog
화면 수조회 화면 1개(탭 3개) + 상세 다이얼로그
SAP 표준 T-codeME2N · MIGO · MB51 · ME13
데이터 연동 방식OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩
성격조회·대사·점검형 — 실제 조치와 최종 판단은 구매 조직이 수행
UI 테마sap_horizon 단일 적용

실제 화면 6종 둘러보기

기본 조건으로 조회하면 대사 요약과 발주 명세가 뜹니다 → 거래처를 좁혀 필터 조회하고 → 거래처·자재군별·월별 추이 탭으로 집계를 확인하고 → 납기 판정을 지연입고로 좁혀 점검 대상을 추린 뒤 → 행을 클릭해 리드타임 판정 단계를 봅니다.

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

Main.view.xml
구매 리드타임 분석 메인 화면 — 조회조건과 리드타임 대사 요약
메인화면 — 조회조건 · 리드타임 대사 요약 · 발주 명세가 한 화면에 뜹니다(전체 152건). 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
거래처 필터
거래처 필터를 적용한 발주 명세 화면
거래처 필터 — 특정 거래처만 골라 조회하면 26건으로 좁혀집니다. 조회조건은 전부 OData $filter 로 전달됩니다.
거래처·자재군별
거래처·자재군별 집계 화면, 맨 아래 전체 합계 행
거래처·자재군별 — 조합별 평균 리드타임 · 정시입고 건수 · 지연입고 건수 · 정시입고율을 나란히 봅니다. 맨 아래 행은 전체 합계입니다.
월별 추이
월별 평균 리드타임·정시입고율 추이 화면
월별 추이 — 회계기간(월)별 평균 리드타임과 정시입고율을 나열해 시점별 변화를 봅니다.
지연입고 필터
납기 판정을 지연입고로 좁혀 조회한 발주 명세 화면
지연입고 필터 — 납기 판정을 지연입고로 좁히면 점검이 필요한 건만 90건으로 모아 볼 수 있습니다.
리드타임 판정 단계
발주 상세 다이얼로그 — 리드타임 판정 단계
리드타임 판정 단계 — 행을 클릭하면 리드타임 · 목표 리드타임 · 지연일수 · 판정까지 4단계 값이 다이얼로그로 펼쳐집니다.

사용 방법

  1. 회계연도(필수)와 거래처·자재군·납기 판정(선택)을 입력합니다. 선택 조건을 비워 두면 전체가 조회 대상입니다.
  2. 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 회계연도 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다. 화면을 열면 기본 조건으로 한 번 자동 조회됩니다.
  3. 리드타임 대사 요약에서 발주 건수 · 평균 리드타임 · 정시입고 건수 · 지연입고 건수 · 정시입고율을 먼저 확인합니다(회계연도 전체 기준).
  4. 탭을 옮겨 발주 명세 → 거래처·자재군별 → 월별 추이 순으로 봅니다.
  5. 명세에서 행을 클릭하면 리드타임 판정 단계 4단계가 다이얼로그로 열립니다.
  6. 발주 명세 탭의 CSV 내려받기(UTF-8 BOM)로 현재 조회 결과를 저장합니다.

납기 판정 기준

판정 조건결과 상태사용자 조치
지연일수 = 0 (리드타임 ≤ 목표 리드타임)정시입고조치 없음
지연일수 ≥ 1 (리드타임 > 목표 리드타임)지연입고 — 점검 필요지연 사유를 확인하고, 반복되면 거래처 납기 이력을 봄
거래처×자재군 정시입고율 < 60%확인 필요우선 점검 대상으로 삼아 납기 조건 재협의를 검토
거래처×자재군 정시입고율 60% 이상 80% 미만확인 필요(모니터링)추이를 지켜보며 반복 지연 여부 확인
거래처×자재군 정시입고율 80% 이상양호조치 없음

발주 건별 판정은 지연일수 하나로만 정해지고, 거래처×자재군별 정시입고율 판정은 집계 탭에서 별도로 표시합니다. 60%·80% 기준은 예시 기준이며 회사 정책에 맞게 바꿔 씁니다.

리드타임 산출 절차

단계내용
1단계리드타임(영업일) = 입고일 − 발주일
2단계목표 리드타임 = 거래처×자재군별 기준 영업일수
3단계지연일수 = 리드타임 − 목표 리드타임, 0 미만이면 0
4단계판정 = 지연일수 0 → 정시입고 / 1 이상 → 지연입고
5단계거래처×자재군별 합계 = 전체 합계, 월별 건수 합계 = 발주 명세 전체 건수를 전수 대사

조회조건

필드필수설명
회계연도필수단일 값
거래처선택전체면 조건 제외
자재군선택전체면 조건 제외
납기 판정선택정시입고 · 지연입고 — 전체면 조건 제외

결과 컬럼

컬럼설명
발주번호 · 거래처명 · 자재발주 건 식별
플랜트입고 대상 플랜트
발주일 · 입고일리드타임 산출 기준일
리드타임 · 목표 리드타임실제 영업일수와 거래처×자재군 기준
지연일수 · 판정목표 초과일수와 정시입고 여부
발주수량 · 발주금액발주 규모 참고값

SAP 표준 기능 매핑

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 리드타임 대사 관점의 조회·점검을 더해 확장합니다.

표준 T-code표준 기능이 화면이 더한 것
ME2N구매오더 목록 조회발주번호·발주일·거래처·자재·수량·금액을 리드타임 명세로 가져옵니다
MIGO상품 이동(입고 처리)확정된 입고일을 리드타임 종료 시점으로 씁니다
MB51자재 문서 목록입고 이력을 조회해 입고일을 대조합니다
ME13구매정보레코드 조회거래처×자재군 목표 리드타임 설정을 참고합니다

분석 지표 정의표

지표정의이 화면의 대응 기능원천 데이터비고
리드타임발주일부터 입고일까지 걸린 영업일수발주 명세 탭 · 상세 다이얼로그 1단계EKKO/EKPO · MKPF/MSEG휴일 캘린더는 미반영
목표 리드타임거래처×자재군 조합별로 정한 기준 영업일수발주 명세 · 집계 탭EINA/EINE(구매정보레코드)실제 기준값은 운영 협의로 확정
지연일수 · 판정리드타임 − 목표 리드타임(0 미만은 0)발주 명세 · 상세 다이얼로그 3~4단계파생-
정시입고율정시입고 건수 ÷ 전체 건수 × 100거래처·자재군별 · 월별 추이 탭파생-

참고 CDS 뷰

원천 테이블주요 필드쓰임
EKKO / EKPOEBELN · EBELP · LIFNR · BEDAT구매오더 헤더·품목 — 발주번호, 거래처, 발주일
MKPF / MSEGMBLNR · BUDAT · EBELN · EBELP자재 이동 전표 — 입고일 확정
EINA / EINEMATNR · LIFNR구매정보레코드 — 거래처×자재군 목표 리드타임 참고
define view entity ZI_LeadTimeItem
  as select from ekpo as p
    inner join ekko as h on h.ebeln = p.ebeln
    left outer join mseg as m on m.ebeln = p.ebeln and m.ebelp = p.ebelp and m.bwart = '101'
{
  key p.ebeln                                     as PoNo,
  key p.ebelp                                     as PoItem,
      h.lifnr                                     as Vendor,
      p.matkl                                     as MatGroup,
      h.bedat                                     as PoDate,
      min( m.budat )                              as GrDate
}
group by p.ebeln, p.ebelp, h.lifnr, p.matkl, h.bedat

목표 리드타임(거래처×자재군 기준)은 구매정보레코드 또는 운영 기준표에서 별도로 매핑합니다. 실제 기준값은 회사마다 확인이 필요합니다.

OpenUI5 구성

기능사용 컨트롤 · 구성
화면 골격sap.m.Page + 조회조건 패널 · 대사 요약 KPI · IconTabBar 3개 탭
데이터 연동manifest.json dataSources.mainService(OData V2, 상대 경로)로 기본 모델을 만들고 defaultCountMode:"Inline" · useBatch:false 로 구성합니다. 화면 블록마다 해당 엔티티셋에 직접 바인딩하고, 대사 요약은 거래처×자재군 합계 키로 단건 조회합니다
조회조건sap.ui.model.Filter 로 조립해 바인딩에 적용합니다. 전체를 고른 조건은 필터를 만들지 않습니다. 정렬은 Sorter, 총건수는 인라인 카운트로 받습니다
발주 명세sap.ui.table.Table — 컬럼이 많은 명세, 행 클릭(cellClick)으로 상세 다이얼로그
집계 표sap.m.Table — 거래처·자재군별, 월별 추이 소량 집계
예외 메시지메타데이터 실패·요청 실패·빈 결과를 구분해 안내하는 전용 처리기

파일 구성

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

검증 결과

검증용 샘플 데이터(발주 152건, 6개 거래처 × 4개 자재군)를 기준으로 대사식을 전수 검증했습니다. 점검 화면이라 해상운송 지연 등으로 크게 늦어진 지연입고 90건을 포함시켰고, 대사식 차이와 분리해 기록했습니다.

검증 항목결과
리드타임 재계산 = 입고일 − 발주일(영업일) 일치 (152건)통과(차이 0)
지연일수 = 리드타임 − 목표 리드타임(0 미만은 0), 판정 일치 (152건)통과(차이 0)
거래처×자재군 소계 합계 = 전체 합계(건수·정시입고·지연입고) (24건)통과(차이 0)
월별 건수 합계 = 발주 명세 전체 건수 (12건)통과(차이 0)
조회 조건 전달 — 거래처 필터 · 납기 판정 필터 · 발주일 내림차순 정렬 · 총건수 표시확인
화면 요약 합계 = 검증 스크립트 합계(발주 152 · 정시입고 62 · 지연입고 90 · 정시입고율 40.79%)일치
표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현0건
화면 렌더링 — 조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 안내 메시지확인

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

자주 묻는 질문

어떤 발주 데이터에 적용할 수 있나요?

발주일과 입고일이 모두 확정된 발주 건이 있는 회계기간이면 적용할 수 있습니다. 아직 입고되지 않은 미입고 발주는 리드타임을 계산할 수 없어 대상에서 빠집니다. 이 화면은 발주부터 입고까지 걸린 기간을 조회·점검하는 도구이며, 목표 리드타임 조정이나 거래처 계약 변경 같은 최종 조치는 구매 조직이 판단합니다.

정시입고 판정이 곧 거래처 평가 결론인가요?

아닙니다. 이 화면의 판정은 리드타임 대사 결과를 보여주는 참고 지표이며, 거래처 평가·계약 조건 조정 같은 최종 판단은 구매 조직이 다른 기준과 함께 검토해 정합니다.

목표 리드타임은 어떻게 정해지나요?

이 화면에서는 거래처×자재군 조합별로 미리 정한 기준 영업일수를 씁니다. 실제 운영에서는 구매정보레코드나 별도 기준표에서 가져오도록 연결하며, 그 기준값 자체가 적정한지는 화면 밖에서 별도로 검토합니다.

지연입고로 판정되면 다음에 무엇을 보나요?

해당 발주 건의 상세를 열어 발주일·입고일·지연일수를 확인하고, 같은 거래처×자재군 조합의 정시입고율과 월별 추이를 함께 봐 반복되는 패턴인지 확인합니다. 원인은 점검 필요·확인 필요로만 표시하며 단정하지 않습니다.

거래처별 납기 관리, 감이 아니라 데이터로 보세요

거래처마다 자재군마다 다른 납기를 손으로 엑셀에 모으는 대신, 목표 리드타임 대비 실제 리드타임을 한 화면에서 조회해 두면 재고 계획과 생산 일정을 더 여유 있게 세울 수 있습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

구매 리드타임정시입고율발주 입고 대사목표 리드타임구매 분석OpenUI5