SAP 구매 리드타임 분석 — 발주부터 입고까지, 목표보다 얼마나 늦었는지 본다
거래처마다 자재군마다 다른 납기, 목표 리드타임과 실제 리드타임을 대사해 지연 지점을 미리 찾는 방법을 정리했습니다
구매 발주(PO)부터 입고(GR)까지 걸리는 기간, 즉 리드타임은 재고 계획과 생산·판매 일정에 직접 영향을 줍니다. 거래처마다, 같은 거래처라도 자재군마다 납기가 다르기 때문에 "며칠이면 정상"이라는 기준도 조합마다 달라야 합니다.
이 화면은 발주 건별 실제 리드타임을 거래처×자재군별 목표 리드타임과 대사해 목표를 넘겨 들어온 건을 지연입고로 가려냅니다. 거래처×자재군 조합별 정시입고율과 월별 추이를 함께 보여줘 구매 조직이 납기 관리가 필요한 지점을 빠르게 찾도록 OpenUI5 화면으로 확장했습니다. 표준 실행(발주 등록·입고 처리·구매정보레코드 관리)은 SAP 표준 T-code 가 담당하고, 이 화면은 발주부터 입고까지의 기간을 한데 모아 보는 조회·점검 관점을 더합니다. 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 발주 조회 — 구매오더 목록 조회(
ME2N)의 발주번호·발주일·거래처·자재·수량·금액을 그대로 이어받습니다 - 입고 처리 — 상품 이동(
MIGO)으로 확정된 입고일을 리드타임 종료 시점으로 씁니다 - 입고 이력 — 자재 문서 목록(
MB51)으로 입고일을 대조합니다 - 목표 리드타임 — 구매정보레코드 조회(
ME13)의 거래처×자재군 기준을 참고합니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 구매(MM) · 발주·입고 관리 |
| 관련 기준서 | - |
| Namespace | zui5.leadtime |
| 셸 구조 | 조회조건 영역(우측 조회) + 리드타임 대사 요약 KPI 5종 + 탭 3개, 행 클릭 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 3개) + 상세 다이얼로그 |
| SAP 표준 T-code | ME2N · MIGO · MB51 · ME13 |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 실제 조치와 최종 판단은 구매 조직이 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
기본 조건으로 조회하면 대사 요약과 발주 명세가 뜹니다 → 거래처를 좁혀 필터 조회하고 → 거래처·자재군별·월별 추이 탭으로 집계를 확인하고 → 납기 판정을 지연입고로 좁혀 점검 대상을 추린 뒤 → 행을 클릭해 리드타임 판정 단계를 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 회계연도(필수)와 거래처·자재군·납기 판정(선택)을 입력합니다. 선택 조건을 비워 두면 전체가 조회 대상입니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 회계연도 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다. 화면을 열면 기본 조건으로 한 번 자동 조회됩니다.
- 리드타임 대사 요약에서 발주 건수 · 평균 리드타임 · 정시입고 건수 · 지연입고 건수 · 정시입고율을 먼저 확인합니다(회계연도 전체 기준).
- 탭을 옮겨 발주 명세 → 거래처·자재군별 → 월별 추이 순으로 봅니다.
- 명세에서 행을 클릭하면 리드타임 판정 단계 4단계가 다이얼로그로 열립니다.
- 발주 명세 탭의 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 / EKPO | EBELN · EBELP · LIFNR · BEDAT | 구매오더 헤더·품목 — 발주번호, 거래처, 발주일 |
MKPF / MSEG | MBLNR · BUDAT · EBELN · EBELP | 자재 이동 전표 — 입고일 확정 |
EINA / EINE | MATNR · 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.html | OpenUI5 부트스트랩 — 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.js | CSV 다운로드 공통 처리 |
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 키 조회 · 서비스 미연결 시 안내 메시지 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
어떤 발주 데이터에 적용할 수 있나요?
발주일과 입고일이 모두 확정된 발주 건이 있는 회계기간이면 적용할 수 있습니다. 아직 입고되지 않은 미입고 발주는 리드타임을 계산할 수 없어 대상에서 빠집니다. 이 화면은 발주부터 입고까지 걸린 기간을 조회·점검하는 도구이며, 목표 리드타임 조정이나 거래처 계약 변경 같은 최종 조치는 구매 조직이 판단합니다.
정시입고 판정이 곧 거래처 평가 결론인가요?
아닙니다. 이 화면의 판정은 리드타임 대사 결과를 보여주는 참고 지표이며, 거래처 평가·계약 조건 조정 같은 최종 판단은 구매 조직이 다른 기준과 함께 검토해 정합니다.
목표 리드타임은 어떻게 정해지나요?
이 화면에서는 거래처×자재군 조합별로 미리 정한 기준 영업일수를 씁니다. 실제 운영에서는 구매정보레코드나 별도 기준표에서 가져오도록 연결하며, 그 기준값 자체가 적정한지는 화면 밖에서 별도로 검토합니다.
지연입고로 판정되면 다음에 무엇을 보나요?
해당 발주 건의 상세를 열어 발주일·입고일·지연일수를 확인하고, 같은 거래처×자재군 조합의 정시입고율과 월별 추이를 함께 봐 반복되는 패턴인지 확인합니다. 원인은 점검 필요·확인 필요로만 표시하며 단정하지 않습니다.