창고 관리 데이터 템플릿
창고 관리 데이터 템플릿
- 분석에 권장되는 주요 속성
- 프로세스 전반에서 추적할 주요 활동
- SAP EWM 데이터 추출 안내
창고 관리 속성
| 이름 | 설명 | ||
|---|---|---|---|
| Warehouse Order WarehouseOrder | 리소스가 수행할 창고 작업을 묶는 Warehouse Order의 고유 식별자입니다. | ||
| 설명 Warehouse Order는 창고 내 상품 처리의 전체 프로세스를 추적하는 기본 케이스 식별자입니다. 출고 배송 상품의 피킹이나 입고 상품의 적치와 같은 작업 묶음을 나타냅니다. 각 Warehouse Order에는 하나 이상의 창고 작업이 포함됩니다. process mining에서 Warehouse Order를 기준으로 분석하면 특정 작업 묶음의 전체 수명 주기를 파악할 수 있습니다. 이를 통해 병목을 찾고, 생성부터 완료까지의 전체 사이클 타임을 측정하며, 단일 물류 지시와 관련된 활동 흐름을 파악할 수 있습니다. 중요한 이유 관련된 모든 창고 활동을 연결하는 기본 식별자입니다. 이를 통해 단일 작업 단위의 전체 프로세스와 사이클 타임을 분석할 수 있습니다. 확보 방법 일반적으로 SAP EWM의 창고 주문 헤더 테이블인 /SCWM/WHO에서 확인할 수 있습니다. 예시 200000145200000146200000147 | |||
| 마지막 데이터 갱신 LastDataUpdate | 이 레코드의 데이터가 소스 시스템에서 마지막으로 갱신된 시점을 나타내는 타임스탬프입니다. | ||
| 설명 소스 시스템에서 데이터를 마지막으로 추출한 시점을 기록하는 속성입니다. 분석 대상 데이터의 최신성을 파악하는 데 필요한 맥락을 제공합니다. 분석이나 대시보드에서 데이터가 얼마나 최신인지 알아야 적절한 판단을 내릴 수 있습니다. 이 타임스탬프를 통해 사용자는 실시간 정보인지 특정 시점의 스냅샷인지 확인하고 데이터의 최신성에 대한 기대치를 조정할 수 있습니다. 중요한 이유 데이터의 최신성을 나타내므로 사용자가 프로세스 분석이 얼마나 최신 정보를 반영하는지 파악하는 데 중요합니다. 확보 방법 일반적으로 데이터 추출(ETL) 과정에서 생성해 추가하는 메타데이터 필드입니다. 데이터 적재 시점을 나타냅니다. 예시 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| 소스 시스템 SourceSystem | 데이터를 추출한 소스 시스템을 나타냅니다. 예를 들어 SAP EWM 운영 인스턴스가 해당합니다. | ||
| 설명 창고 관리 데이터가 생성된 기준 시스템을 지정하는 속성입니다. 여러 시스템을 사용하는 기업 환경에서는 추적성과 맥락을 위해 데이터의 출처를 표시해야 합니다. 분석할 때 이 속성을 사용하면 여러 시스템에 걸친 프로세스를 구분하거나 지역별로 분리된 시스템의 프로세스를 비교할 수 있습니다. 데이터 계보를 명확하게 유지하고 감사할 수 있도록 합니다. 중요한 이유 여러 SAP 인스턴스나 통합 시스템을 사용하는 환경에서 데이터 출처와 맥락을 추적할 수 있도록 하며, 데이터 계보를 명확하게 유지합니다. 확보 방법 일반적으로 데이터 추출, 변환, 적재(ETL) 과정에서 추가하는 고정값으로, 특정 SAP S/4HANA 또는 EWM 인스턴스를 나타냅니다. 예시 SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| 시작 시간 EventTime | 활동이나 이벤트가 시작된 시점을 나타내는 타임스탬프입니다. | ||
| 설명 특정 창고 활동이 발생한 정확한 날짜와 시간을 기록하는 속성입니다. 이벤트 순서를 정하고 이벤트 간 소요 시간을 계산하는 데 사용하는 기본 시간 정보입니다. process mining에서는 각 케이스의 시간순 이벤트를 구성하는 데 시작 시간이 필요합니다. 사이클 타임, 대기 시간, 처리 시간을 계산하는 데 사용되며, 이는 성과 분석, 병목 식별, SLA 모니터링에 중요합니다. 중요한 이유 이 타임스탬프는 이벤트의 시간순 정렬과 사이클 타임, 소요 시간 등 시간 기반 성과 지표 계산에 중요합니다. 확보 방법 일반적으로 /SCWM/ORDIM_C와 같은 이벤트 또는 확인 테이블(예: CONF_TIMESTAMP 필드)이나 창고 주문 및 작업과 관련된 상태 변경 로그에서 확인할 수 있습니다. 예시 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| 활동 이름 ActivityName | '피킹 작업 생성'이나 '상품 출고 전기'와 같이 발생한 창고 관리 활동 또는 이벤트의 이름입니다. | ||
| 설명 창고 관리 프로세스에서 발생한 단일 단계나 이벤트를 설명하는 속성입니다. 활동은 프로세스 맵을 구성하는 기본 요소로, 생성, 확인, 포장, 적재, 상품 이동 등의 작업을 나타냅니다. 이러한 활동의 순서와 빈도를 분석하는 것은 process mining의 기본입니다. 프로세스 흐름을 시각화하고, 일반적이거나 드문 경로를 식별하며, 표준 절차에서 벗어난 부분을 찾아 지연이나 재작업을 유발하는 단계를 파악할 수 있습니다. 중요한 이유 프로세스의 단계를 정의해 프로세스 맵의 기반을 마련하고, 흐름과 이탈, 병목을 분석할 수 있도록 합니다. 확보 방법 창고 주문 및 작업과 관련된 상태 변경, 이벤트 메시지, 트랜잭션 로그에서 도출합니다. 예를 들어 /SCWM/ORDIM_C(확인) 테이블을 사용하거나 /SCWM/WHO 및 /SCWM/ORDIM_O의 상태 필드를 해석할 수 있습니다. 예시 피킹 작업 확인적치 작업 생성입고 전기Warehouse Order 완료 | |||
| Warehouse Order 상태 WarehouseOrderStatus | 'Completed' 또는 'Canceled'와 같은 창고 주문의 현재 또는 최종 상태입니다. | ||
| 설명 이 속성은 창고 오더의 최종 결과를 나타냅니다. 오더가 정상적으로 완료되었는지 취소되었는지 파악하면 프로세스 성공률을 분석하고 미완료 원인을 찾는 데 도움이 됩니다. 여러 분석에서 중요한 필터로 사용됩니다. 예를 들어 창고 전체 사이클 타임을 계산할 때는 일반적으로 완료된 오더만 분석합니다. 취소된 오더의 빈도와 원인을 파악하고 조사할 때도 유용합니다. 중요한 이유 케이스의 결과를 나타냅니다. 완료된 오더와 취소된 오더를 구분해 필터링할 수 있어 사이클 타임과 처리량을 정확하게 분석하는 데 중요합니다. 확보 방법 상태 필드는 일반적으로 창고 오더 헤더 테이블인 /SCWM/WHO에 있습니다. 예시 완료진행 중취소 | |||
| Warehouse Order 유형 WarehouseOrderType | 적치, 피킹, 내부 보충과 같이 목적에 따라 창고 주문을 분류합니다. | ||
| 설명 Warehouse Order 유형은 물류 기능에 따라 주문을 분류합니다. 유형별로 프로세스 경로와 성과 기대치가 다르므로 이 구분은 중요합니다. 분석에서는 이 속성을 주요 필터 및 비교 기준으로 사용합니다. 예를 들어 'Warehouse Order 처리량 및 물량' 대시보드는 이 속성으로 입고(적치)와 출고(피킹) 프로세스의 성과를 구분해 창고 운영을 더 의미 있게 보여줍니다. 중요한 이유 입고와 출고 등 프로세스 범주별로 분석을 구분해 관련성 높은 비교와 인사이트를 얻을 수 있습니다. 확보 방법 창고 프로세스 유형에 따라 결정되며, 일반적으로 창고 주문 헤더 테이블 /SCWM/WHO에서 확인할 수 있습니다. 예시 피킹적치보충보관 | |||
| 사용자 ID User | 활동을 확인하거나 실행한 창고 작업자 또는 사용자의 식별자입니다. | ||
| 설명 창고 작업을 수행한 사람의 사용자 ID를 기록하는 속성입니다. 피킹을 확인한 피커, 포장 작업장의 포장 담당자, 적치를 확인한 지게차 운전자가 해당할 수 있습니다. 이 데이터는 '리소스 및 장비 활용' 대시보드에 중요합니다. 개인이나 팀의 성과를 분석하고 교육이 필요한 부분을 파악하며, 창고 직원 간 업무량을 더 효과적으로 조정할 수 있습니다. 중요한 이유 작업을 특정 사용자와 연결해 사용자나 팀별 성과를 분석하고 리소스 관리와 업무량 조정을 지원합니다. 확보 방법 일반적으로 창고 작업 확인 데이터에서 확인할 수 있습니다. 예를 들어 /SCWM/ORDIM_C 테이블의 UNAME 필드가 해당합니다. 예시 JSMITHARODRIGUEZOPERATOR_05 | |||
| 우선순위 Priority | 창고 오더에 지정된 우선순위로, 긴급도(예: 높음, 보통, 낮음)를 나타냅니다. | ||
| 설명 이 속성은 업무상 중요도나 긴급도에 따라 창고 오더를 분류합니다. 예를 들어 우선순위가 높은 오더는 특급 배송이나 긴급 생산 자재 공급에 해당할 수 있어 신속한 처리가 필요합니다. 우선순위는 '우선 오더 이행 준수' 대시보드와 KPI의 주요 분석 기준입니다. 우선순위별로 성과를 필터링하고 구분해 가장 중요한 오더가 목표 시간 내에 처리되는지 확인하고, 창고 운영을 업무 목표에 맞출 수 있습니다. 중요한 이유 긴급도가 높은 오더가 서비스 수준을 충족하는지 우선적으로 분석하고 모니터링할 수 있어 고객 만족도에 직접 영향을 줍니다. 확보 방법 우선순위는 원본 납품 문서에서 설정해 창고 오더로 전달할 수 있습니다. /SCWM/WHO와 같은 테이블에서 확인할 수 있습니다. 예시 높음보통낮음 | |||
| 자재 번호 MaterialNumber | 창고 작업에서 취급하는 제품 또는 자재의 고유 식별자입니다. | ||
| 설명 이동, 피킹, 포장 또는 입고하는 자재를 지정하는 속성입니다. 제품 특성에 따라 창고 성과를 구분하고 분석하는 데 중요한 기준입니다. 자재 번호별로 분석하면 적치 시간이 가장 긴 제품, 피킹 오류가 자주 발생하는 제품, 품질 검사가 필요한 제품을 파악할 수 있습니다. 이는 '입고 및 적치 성과'와 '품질 검사 리드 타임' 대시보드에 필요한 정보입니다. 중요한 이유 제품별로 프로세스 데이터를 필터링하고 구분할 수 있어 취급, 보관, 품질 관리에서 제품별 문제를 찾는 데 중요합니다. 확보 방법 일반적으로 /SCWM/ORDIM_O와 같은 창고 작업 테이블에서 확인할 수 있으며, 자재 마스터 데이터와 연결됩니다. 예시 FIN-1001RAW-2050SFIN-300-A | |||
| 종료 시간 EventEndTime | 활동이나 이벤트가 완료된 시점을 나타내는 타임스탬프입니다. | ||
| 설명 특정 창고 활동이 끝난 날짜와 시간을 기록하는 속성입니다. 단일 이벤트에서는 시작 시간과 같은 경우가 많지만, 포장이나 적재처럼 소요 시간을 측정할 수 있는 활동은 다를 수 있습니다. 종료 시간이 별도로 있으면 개별 활동의 처리 시간을 정확하게 계산할 수 있습니다. 이는 '피킹 및 포장 효율'과 같이 특정 단계의 소요 시간을 분석하는 성과 대시보드에 중요하며, 시간이 가장 많이 걸리는 작업을 찾는 데 도움이 됩니다. 중요한 이유 개별 활동의 소요 시간을 정확하게 계산할 수 있어 시간이 오래 걸리는 단계와 리소스 집약적인 작업을 식별하는 데 도움이 됩니다. 확보 방법 단일 이벤트에서는 시작 타임스탬프와 같은 경우가 많습니다. 장시간 진행되는 작업은 /SCWM/ORDIM_C와 같은 테이블의 별도 필드에 기록되거나 이후 상태 변경을 바탕으로 도출할 수 있습니다. 예시 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| Warehouse Task WarehouseTask | Warehouse Order를 구성하는 개별 창고 작업의 고유 식별자입니다. | ||
| 설명 창고 작업은 제품을 보관 빈에서 포장 작업장으로 옮기는 것과 같은 구체적인 상품 이동을 수행하라는 지시입니다. Warehouse Order에는 이러한 작업이 하나 이상 포함됩니다. 작업 단위로 분석하면 창고 운영을 더 세부적으로 파악할 수 있습니다. 특정 이동 작업의 리소스 성과를 이해하고, 접근하기 어려운 보관 빈을 찾거나, 개별 피킹 및 적치 활동의 효율을 분석할 수 있습니다. 중요한 이유 세부적인 분석이 가능해져 더 큰 Warehouse Order에 포함된 개별 이동과 단계를 살펴볼 수 있습니다. 확보 방법 /SCWM/ORDIM_O(작업 데이터) 및 /SCWM/ORDIM_C(확인 데이터)와 같은 창고 작업 테이블에서 확인할 수 있습니다. 예시 300000451300000452300000453 | |||
| 계획 수량 PlannedQuantity | 창고 작업에서 지정한 자재의 예상 수량입니다. | ||
| 설명 이 속성은 창고 작업 지시에 따라 이동, 피킹 또는 입고해야 하는 자재의 목표 수량을 나타냅니다. 실제 처리 수량을 비교하는 기준이 됩니다. 계획 수량은 '재고 차이 분석' 대시보드와 '재고 정확도' KPI에 필요합니다. 실제 수량과 비교하면 피킹 오류, 입고 실수 또는 데이터 입력 문제로 이어질 수 있는 차이를 확인해 재고 정확도를 높일 수 있습니다. 중요한 이유 재고 정확도를 계산하고 차이를 파악하는 기준으로, 정확한 재고 수준을 유지하는 데 중요합니다. 확보 방법 창고 작업 데이터에서 확인할 수 있습니다. 예를 들어 /SCWM/ORDIM_O 테이블의 NISTA(목표 수량)와 같은 필드에 저장되는 경우가 많습니다. 예시 10050250 | |||
| 계획 출발 시각 PlannedDepartureTime | 화물이 창고에서 출발할 예정인 시각입니다. | ||
| 설명 이 속성은 피킹, 포장, 적재를 모두 마친 화물의 출고 목표 시각을 나타냅니다. 출고 프로세스 마지막 단계의 정시 처리 성과를 측정하는 기준입니다. '화물 정시 출고 성과' 대시보드에 필요한 시각 정보입니다. 실제 출고 시각과 계획 시각을 비교하면 적재, 운송사 조율 또는 서류 처리에서 발생한 지연을 파악하고 물류 및 운송 계획의 효율을 분석할 수 있습니다. 중요한 이유 정시 출고 성과를 측정하는 기준으로, 물류 계획을 세우고 운송사 일정을 준수하는 데 중요합니다. 확보 방법 일반적으로 창고 오더와 연결된 운송 또는 화물 문서에 포함됩니다. 자세한 내용은 SAP Extended Warehouse Management 문서를 참조하세요. 예시 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| 기한 내 완료 여부 IsOnTime | 창고 오더가 요청 완료일까지 완료되었는지 나타내는 불리언 값입니다. | ||
| 설명 이 플래그는 SLA 준수 여부를 간단한 두 가지 결과로 나타냅니다. 창고 오더의 최종 완료 이벤트가 지정된 요청 완료일 당일 또는 그 이전에 발생했는지 확인합니다. '우선 오더 이행 준수' 대시보드에 필요한 속성입니다. 기한 내 완료된 오더와 지연된 오더를 쉽게 집계하고 필터링할 수 있어 KPI와 시각화를 간편하게 구성할 수 있습니다. 분석 단계에서 복잡한 날짜 계산을 하지 않고도 서비스 수준 목표 대비 성과를 빠르게 확인할 수 있습니다. 중요한 이유 각 오더의 정시 또는 지연 이행 여부를 명확한 두 가지 값으로 제공해 SLA 성과 분석을 간소화합니다. 확보 방법 계산 속성입니다. '창고 오더 완료' 활동의 타임스탬프를 'RequestedCompletionDate' 속성과 비교합니다. 예시 truefalse | |||
| 사용 장비 EquipmentUsed | 창고 작업에 사용한 지게차나 팔레트 잭 등의 장비 식별자입니다. | ||
| 설명 이 속성은 창고 작업에 배정되거나 사용된 자재 취급 장비를 나타냅니다. 특정 지게차, 무인 운반 차량(AGV) 또는 특정 유형의 카트가 해당할 수 있습니다. 이 데이터는 '리소스 및 장비 활용' 대시보드와 '장비 활용률' KPI의 기반입니다. 작업별 장비 사용 현황과 사용 시간을 추적하면 관리자가 활용 패턴을 분석하고, 유지보수를 계획하며, 장비 규모와 구성에 관한 의사결정을 내릴 수 있습니다. 중요한 이유 장비 활용도와 효율을 분석해 장비 운영을 최적화하고 리소스 제약을 파악할 수 있습니다. 확보 방법 SAP EWM에서 리소스 관리 기능을 설정한 경우 이 정보가 창고 작업 또는 오더 상세 정보에 저장될 수 있습니다. 자세한 내용은 SAP Extended Warehouse Management 문서를 참조하세요. 예시 지게차-07무인 운반 차량-02카트-15 | |||
| 수량 차이 QuantityVariance | 작업의 계획 수량과 실제 확인 수량 간의 차이입니다. | ||
| 설명 이 계산 지표는 창고 작업 중 발생한 수량 차이를 나타냅니다. 값이 0이 아니면 실제 재고와 시스템 기록이 일치하지 않는다는 뜻이며, 피킹 오류, 입고 실수 또는 상품 손상 등의 문제를 나타낼 수 있습니다. 이 속성은 오류 규모를 보여줘 '재고 차이 분석' 대시보드를 지원합니다. 차이의 발생 빈도와 크기를 분석하면 재고 관리와 운영 실행에서 반복되는 문제를 찾아 정확도 개선에 활용할 수 있습니다. 중요한 이유 재고 및 운영상의 부정확성을 수치로 보여주므로 차이의 규모를 쉽게 파악하고 분석할 수 있습니다. 확보 방법 관련 작업별로 PlannedQuantity에서 ActualQuantity를 빼서 계산합니다. 예시 0-15 | |||
| 실제 수량 ActualQuantity | 사용자가 창고 작업에서 확인한 자재의 실제 수량입니다. | ||
| 설명 이 속성은 창고 작업자가 실제로 처리하고 확인한 수량입니다. 보관 위치에서 피킹한 수량, 적치한 수량 또는 입고 시 실사한 수량이 여기에 해당합니다. 실제 수량과 계획 수량의 비교는 '재고 차이 분석'의 기본입니다. 두 값의 차이는 조사가 필요한 프로세스 예외를 직접 보여줍니다. 운영 정확도를 직접 측정하며 '재고 정확도' 및 '피킹 오류율' KPI의 주요 입력값으로 사용됩니다. 중요한 이유 실제로 처리한 수량을 나타내는 기준값입니다. 계획 수량과 비교하면 운영 정확도를 측정하고 오류를 파악할 수 있습니다. 확보 방법 창고 작업 확인 데이터에서 확인할 수 있습니다. 예를 들어 /SCWM/ORDIM_C 테이블의 NDIFF(차이 수량) 필드에 저장되거나 확인 수량을 바탕으로 산출됩니다. 예시 10049250 | |||
| 요청 완료일 RequestedCompletionDate | 우선순위가 높은 창고 오더를 완료하도록 요청된 날짜입니다. | ||
| 설명 이 속성은 창고 오더의 서비스 수준 계약(SLA) 또는 목표 완료일을 나타냅니다. 실제 완료 시각과 비교해 오더가 기한 내에 처리되었는지 판단하는 마감일입니다. '우선 오더 이행률' KPI를 계산하는 데 필요한 날짜입니다. 실제 완료 시각과 요청 완료일을 비교하면 서비스 수준 준수 여부를 수치화하고, 지연 위험이 있거나 이미 늦어진 오더를 파악할 수 있습니다. 중요한 이유 오더의 SLA를 정의하고 정시 이행 성과를 측정하는 기준이 됩니다. 특히 우선순위가 높은 품목을 평가할 때 유용합니다. 확보 방법 이 날짜는 창고 오더를 생성한 출고 납품 오더의 계획 출고일이나 납품일에서 가져오는 경우가 많습니다. 자세한 내용은 SAP Extended Warehouse Management 문서를 참조하세요. 예시 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| 저장 위치 StorageLocation | 상품을 이동해 오거나 이동해 가는 창고 내 구체적인 위치입니다. 보관 빈 등이 해당합니다. | ||
| 설명 이 속성은 창고 작업과 관련된 실제 위치를 나타냅니다. 예를 들어 피킹의 출발 빈이나 적치 대상 빈이 해당하며, 넓은 구역부터 특정 선반 좌표까지 지정할 수 있습니다. 저장 위치별 분석을 통해 피킹률이 높은 '골든 존'이나 지연과 오류가 잦은 문제 구역 등 운영 현황을 파악할 수 있습니다. '피킹 경로 준수' 분석에 활용하면 피커의 창고 내 이동 경로도 확인할 수 있습니다. 중요한 이유 창고 내 위치 정보를 제공해 이동 효율, 빈 접근성, 피킹 경로 최적화를 분석할 수 있습니다. 확보 방법 일반적으로 /SCWM/ORDIM_O와 같은 창고 작업 테이블에서 확인할 수 있으며, 출발 빈(VLPLA)과 도착 빈(NLPLA) 정보가 포함됩니다. 예시 01-02-03포장 스테이션-01출고 구역-A | |||
| 전체 사이클 타임 EndToEndCycleTime | 창고 오더 생성부터 최종 완료까지 걸린 총시간입니다. | ||
| 설명 이 KPI는 창고 오더의 전체 처리 기간을 측정합니다. 창고 운영의 전반적인 효율과 처리 속도를 보여주는 상위 지표입니다. 이 지표는 '창고 전체 사이클 타임' 대시보드의 기반입니다. 시간에 따른 KPI 추이를 추적하고 오더 유형이나 자재 등의 기준으로 구분하면 반복되는 비효율을 파악하고 프로세스 개선 활동이 전체 운영에 미친 영향을 측정할 수 있습니다. 중요한 이유 창고 프로세스의 전반적인 효율을 측정하는 주요 KPI로, 운영 성과를 한눈에 보여줍니다. 확보 방법 케이스별로 첫 이벤트('창고 오더 생성')의 타임스탬프에서 마지막 이벤트('창고 오더 완료')의 타임스탬프를 빼서 계산합니다. 예시 8640017280043200 | |||
창고 관리 활동
| 활동 | 설명 | ||
|---|---|---|---|
| Warehouse Order 생성 | 이 활동은 여러 창고 작업으로 구성된 작업 묶음인 Warehouse Order(WO)가 생성된 시점을 나타냅니다. 시스템은 작업 구역, 큐, 제품 등의 기준에 따라 창고 직원의 작업을 묶고 정리하기 위해 WO를 생성합니다. | ||
| 중요한 이유 창고 실행 프로세스의 주요 시작 이벤트입니다. 생성부터 첫 작업까지 걸린 시간을 분석하면 작업 배정과 리소스 할당이 지연되는 구간을 파악할 수 있습니다. 확보 방법 Warehouse Order 헤더 테이블 /SCWM/WHO의 생성 타임스탬프(CREATED_AT 필드)에서 이 이벤트를 확인합니다. 기록 각 Warehouse Order 번호(WHO)에 대해 /SCWM/WHO 테이블에서 생성 타임스탬프를 추출합니다. 이벤트 유형 explicit | |||
| Warehouse Order 완료 | 연결된 모든 창고 작업이 확인되면 Warehouse Order 상태가 'Completed'로 설정됩니다. 실행 관점에서 작업 묶음이 종료됩니다. | ||
| 중요한 이유 프로세스의 주요 정상 종료 이벤트입니다. 창고 전체 사이클 타임을 계산하고 전반적인 처리량을 측정하는 데 필요합니다. 확보 방법 Warehouse Order 헤더 테이블 /SCWM/WHO의 상태 필드(STAT)가 'Completed'로 변경된 기록을 추적합니다. 이 테이블의 변경 로그(DBTABLOG)나 전용 타임스탬프 필드를 사용할 수 있습니다. 기록 /SCWM/WHO의 상태가 'C'(Completed)로 설정된 타임스탬프를 확인합니다. 이벤트 유형 inferred | |||
| 상품 출고 전기 | 시스템에서 창고 재고에서 상품을 공식적으로 차감하는 마지막 물류 및 재무 단계입니다. 법적 소유권이 이전되고 배송이 공식적으로 출발했음을 나타냅니다. | ||
| 중요한 이유 출고 흐름의 중요한 종료 지점으로, 청구와 재고 갱신을 시작합니다. 정시 배송과 배송 적재 및 출발 시간 KPI를 측정하는 데도 중요한 항목입니다. 확보 방법 창고 주문과 연결된 Outbound Delivery 문서의 전기 내역에서 추론합니다. /SCDL/DB_PROCH_O 테이블의 문서 흐름이나 상태 필드(예: DGI_STAT)를 확인합니다. 기록 연결된 Outbound Delivery의 상품 출고 상태가 'Completed'로 설정된 타임스탬프를 확인합니다. 이벤트 유형 explicit | |||
| 적치 작업 확인 | 창고 작업자가 적치 Warehouse Task의 완료를 확인합니다. 이는 지정된 보관 빈에 상품을 실제로 배치했다는 뜻입니다. 확인이 완료되면 재고 위치가 실시간으로 업데이트됩니다. | ||
| 중요한 이유 입고 처리의 주요 이정표로, 재고를 피킹에 사용할 수 있음을 확인합니다. 이 단계의 지연은 입고부터 적치까지의 사이클 타임 KPI에 직접 영향을 줍니다. 확보 방법 Warehouse Task 테이블 /SCWM/WT의 확인 타임스탬프(CONFIRMED_AT 필드)를 가져옵니다. 작업 상태(STAT)도 'Confirmed'로 변경됩니다. 기록 Warehouse Order와 연결된 적치 작업의 /SCWM/WT 테이블에서 확인 타임스탬프를 사용합니다. 이벤트 유형 explicit | |||
| 포장 완료 | 배송할 모든 상품을 취급 단위에 포장하고 해당 단위를 닫아 라벨을 부착한 상태를 나타냅니다. 포장된 상품은 스테이징이나 적재와 같은 다음 단계로 넘어갈 준비가 된 상태입니다. | ||
| 중요한 이유 포장 단계의 완료를 나타내는 이정표입니다. 스테이징과 배송을 진행하기 위한 선행 조건이므로, 이 단계의 지연은 전체 리드 타임과 포장 및 스테이징 리드 타임 KPI에 직접 영향을 줍니다. 확보 방법 취급 단위(HU) 상태가 'Closed'로 설정되거나 WO의 마지막 포장 관련 창고 작업이 확인된 시점에 기록할 수 있습니다. /SCWM/HUHDR 테이블에 HU 상태 정보가 있습니다. 기록 주문과 연결된 최종 배송 취급 단위가 닫히거나 완료된 타임스탬프를 확인합니다. 이벤트 유형 inferred | |||
| 피킹 작업 확인 | 창고 작업자가 피킹 Warehouse Task의 완료를 확인합니다. 이는 상품을 보관 위치에서 실제로 가져왔다는 뜻입니다. 일반적으로 RF 스캐너를 사용해 확인합니다. | ||
| 중요한 이유 주문 처리의 주요 이정표로, 주문부터 배송까지의 사이클 타임에 직접 영향을 줍니다. 이 활동을 분석하면 피커 생산성을 측정하고 피킹 병목을 파악할 수 있습니다. 확보 방법 Warehouse Task 테이블 /SCWM/WT의 확인 타임스탬프(CONFIRMED_AT 필드)를 가져옵니다. 작업 상태(STAT)는 'Confirmed'로 업데이트됩니다. 기록 Warehouse Order와 연결된 피킹 작업의 /SCWM/WT 테이블에서 확인 타임스탬프를 사용합니다. 이벤트 유형 explicit | |||
| Warehouse Order 취소 | 모든 작업이 완료되기 전에 Warehouse Order가 취소되어 이후 실행이 중단됩니다. 재고 부족, 고객 주문 변경 또는 기타 예외 상황으로 취소될 수 있습니다. | ||
| 중요한 이유 실패 또는 예외 경로를 나타냅니다. 취소 빈도와 사유를 분석하면 계획, 재고 정확도, 주문 관리의 상위 단계에서 발생한 문제를 파악할 수 있습니다. 확보 방법 Warehouse Order 헤더 테이블 /SCWM/WHO의 상태 필드(STAT)가 'Canceled'로 변경된 기록을 추적합니다. 기록 /SCWM/WHO의 상태가 취소 상태 값으로 설정된 타임스탬프를 확인합니다. 이벤트 유형 inferred | |||
| 스테이징 작업 확인 | 창고 작업자가 포장된 취급 단위를 포장 작업장이나 통합 구역에서 지정된 배송 스테이징 구역으로 옮긴 것을 확인합니다. 이제 상품은 적재할 위치에 놓입니다. | ||
| 중요한 이유 내부 처리에서 출고 물류로 넘어가는 시점입니다. 스테이징이 지연되면 적재 도크가 혼잡해지고 운송업체의 픽업 시간을 놓칠 수 있습니다. 확보 방법 스테이징 이동 프로세스 유형의 Warehouse Task(/SCWM/WT)에서 확인 타임스탬프(CONFIRMED_AT 필드)를 가져옵니다. 기록 취급 단위나 배송 건과 연결된 스테이징 창고 작업의 확인 타임스탬프를 확인합니다. 이벤트 유형 explicit | |||
| 입고 전기 | 외부 공급업체나 생산에서 들어온 상품을 창고 재고로 공식 접수한 시점을 나타냅니다. 재고를 시스템에 반영해 적치와 같은 후속 프로세스에서 사용할 수 있도록 하는 중요한 재무 및 재고 전기입니다. | ||
| 중요한 이유 입고 프로세스의 주요 이정표입니다. 상품 도착부터 전기까지 걸린 시간이 길면 입고 구역의 적체를 의미할 수 있으며, 재고 가용성에도 영향을 줍니다. 확보 방법 창고 주문과 연결된 Inbound Delivery 문서의 전기 내역에서 추론합니다. /SCDL/DB_PROCH_I 테이블의 문서 흐름이나 상태 필드(예: DGRSTAT)를 확인합니다. 기록 연결된 Inbound Delivery의 입고 상태가 'Completed'로 설정된 타임스탬프를 확인합니다. 이벤트 유형 inferred | |||
| 적재 시작 | 스테이징 구역의 상품을 트럭이나 운송 단위에 실제로 싣기 시작한 시점을 나타냅니다. 시스템에서 사용자가 작업을 시작하는 경우가 많습니다. | ||
| 중요한 이유 창고에서 이루어지는 마지막 실제 작업의 시작입니다. 적재 소요 시간을 분석하면 도크 도어 활용도와 운송업체의 회전 시간을 개선할 수 있습니다. 확보 방법 연결된 운송 단위(TU)나 Outbound Delivery Order의 상태가 'Loading Started'로 변경된 시점에서 추론합니다. /SCWM/TU_STATUS 테이블을 확인할 수 있습니다. 기록 TU 또는 Delivery Order 상태가 적재 시작을 나타내도록 갱신된 타임스탬프를 기록합니다. 이벤트 유형 inferred | |||
| 적재 완료 | 배송할 모든 상품을 운송 단위에 실제로 실은 상태를 나타냅니다. 상품 출고를 전기하고 차량을 출발시키기 위한 선행 조건입니다. | ||
| 중요한 이유 최종 배송 전의 주요 이정표입니다. 적재 완료부터 상품 출고 전기까지 지연이 발생하면 문서나 시스템 문제로 운송업체의 출발이 늦어지고 있을 수 있습니다. 확보 방법 연결된 운송 단위(TU)나 Outbound Delivery Order의 상태가 'Loading Completed'로 변경된 시점에서 추론합니다. /SCWM/TU 및 /SCDL/DB_PROCH_O 테이블의 상태가 관련 데이터입니다. 기록 TU 또는 Delivery Order 상태가 적재 완료를 나타내도록 갱신된 타임스탬프를 기록합니다. 이벤트 유형 inferred | |||
| 적치 작업 생성 | 시스템은 입고 구역에서 최종 보관 빈으로 상품을 옮기도록 Warehouse Task(WT)라는 구체적인 지시를 생성합니다. 이 활동은 적치 이동을 실행할 준비가 되었음을 나타냅니다. | ||
| 중요한 이유 작업 생성부터 확인까지 걸린 시간을 추적하면 창고 작업자가 적치 지시를 받아 실행하기까지 얼마나 걸리는지 알 수 있습니다. 이를 통해 인력이나 장비 부족 가능성을 파악할 수 있습니다. 확보 방법 적치 프로세스 유형에 해당하는 Warehouse Task의 /SCWM/WT 테이블에서 생성 타임스탬프(CREATED_AT 필드)를 가져옵니다. 기록 Warehouse Order와 연결된 적치 프로세스 유형의 Warehouse Task를 필터링하고 생성 타임스탬프를 사용합니다. 이벤트 유형 explicit | |||
| 포장 시작 | 피킹한 상품을 모아 배송 컨테이너나 취급 단위에 담는 포장 작업의 시작을 나타냅니다. 보통 포장 작업장에서 이루어지는 첫 단계입니다. | ||
| 중요한 이유 부가가치 서비스 단계의 시작을 나타냅니다. 포장 소요 시간을 측정하면 작업장 배치, 인력, 자재를 최적화할 수 있습니다. 확보 방법 이 이벤트는 다른 데이터에서 추론해야 할 수 있습니다. 포장 작업장에서 상품이나 취급 단위를 처음 스캔한 기록을 바탕으로 확인할 수 있으며, 작업장 로그나 취급 단위 로그에 저장되는 경우가 많습니다. /SCWM/PACKSPEC 테이블과 관련 실행 로그를 데이터 원천으로 사용할 수 있습니다. 기록 배송 건과 관련된 첫 포장 Warehouse Task의 확인 타임스탬프 또는 최종 배송 HU의 생성 시간을 사용합니다. 이벤트 유형 inferred | |||
| 피킹 작업 생성 | 시스템은 출고 배송 주문을 처리하기 위해 보관 빈에서 상품을 피킹하는 Warehouse Task(WT)를 생성합니다. 이는 작업자가 상품을 가져오도록 시스템이 내리는 지시입니다. | ||
| 중요한 이유 출고 물류의 실제 작업이 시작되는 시점입니다. 피킹 작업 생성부터 확인까지 걸린 시간은 피킹 효율과 리소스 가용성을 분석하는 데 중요합니다. 확보 방법 피킹 프로세스 유형에 해당하는 Warehouse Task의 /SCWM/WT 테이블에서 생성 타임스탬프(CREATED_AT 필드)를 가져옵니다. 기록 Warehouse Order와 연결된 피킹 프로세스 유형의 Warehouse Task를 필터링하고 생성 타임스탬프를 사용합니다. 이벤트 유형 explicit | |||
데이터 추출 가이드
단계
- 사전 준비: CDS 뷰 확인 또는 생성: 주요 데이터 소스는 Warehouse Management용 SAP S/4HANA 표준 CDS 뷰입니다. 주문 수준 이벤트에는
I_WarehouseOrder, 작업 수준 이벤트에는I_WarehouseTask뷰를 사용합니다. 관련 물류 이벤트에는I_OutboundDeliveryItem,I_InboundDeliveryItem,I_EWMTransportationUnit등의 뷰도 필요합니다. 시스템에서 해당 뷰가 활성화되어 있는지 확인합니다. - 사용자 지정 CDS 뷰 생성: 여러 소스의 데이터를 하나의 이벤트 로그 형식으로 결합하려면 사용자 지정 CDS 뷰를 만들어야 합니다. Eclipse의 ABAP Development Tools(ADT)에서 새 Data Definition을 생성합니다. 이 뷰에서는
UNION ALL을 사용해 서로 다른 소스의 레코드를 합치며, 각 레코드는 별도의 비즈니스 활동을 나타냅니다. - 이벤트 로그 구조 정의: 사용자 지정 CDS 뷰에서 이벤트 로그의 열이 될 필드를 정의합니다.
WarehouseOrder,ActivityName,EventTime과 그 밖의 필수 및 권장 속성을 포함해야 합니다. 이 필드를 기반이 되는 표준 CDS 뷰의 필드에 매핑합니다. - Warehouse Order 이벤트 모델링: 첫 번째
SELECT문을 union에 추가합니다.I_WarehouseOrder에서 생성 타임스탬프를 사용해 'Warehouse Order Created' 이벤트를 만듭니다. 이어서 주문 상태를 필터링하고 적절한 확인 또는 변경 타임스탬프를 사용해 'Warehouse Order Completed' 및 'Warehouse Order Canceled' 이벤트를 추가합니다. - Warehouse Task 이벤트 모델링:
I_WarehouseTask에서 데이터를 가져오는SELECT문을 추가합니다. 적치 관련 창고 프로세스 범주를 필터링해 'Putaway Task Created' 및 'Putaway Task Confirmed' 이벤트를 생성합니다. 같은 방식으로 각 프로세스 범주를 기준으로 'Picking Task Created', 'Picking Task Confirmed', 'Staging Task Confirmed' 이벤트를 만들고 생성 및 확인 타임스탬프를 사용합니다. - 상품 이동 이벤트 모델링: 배송 관련 뷰를 Warehouse Task와 조인해 상품 이동을 기록합니다. 'Goods Receipt Posted' 이벤트는
ActualGoodsMovementDateTime을 사용해I_InboundDeliveryItem에서 가져옵니다. 'Goods Issue Posted' 이벤트는I_OutboundDeliveryItem의 같은 필드를 사용하고 관련 Warehouse Order 또는 작업과 연결합니다. - 적재 및 포장 이벤트 모델링:
I_EWMTransportationUnit에서 전용 타임스탬프를 사용해 'Loading Started' 및 'Loading Completed' 이벤트를 가져옵니다. 복잡할 수 있는 포장 이벤트는 Handling Unit 뷰를 사용해 대체 방식으로 처리합니다. 생성 시간은 'Packing Started'로, 상태 변경 시간은 'Packing Completed'로 사용할 수 있습니다. 실제 포장 프로세스에 따라 이 단계는 조정이 필요할 수 있습니다. - CDS 뷰 공개를 위한 주석 추가: 사용자 지정 CDS 뷰 정의에
@OData.publish: true주석을 추가합니다. 이 설정을 통해 SAP가 뷰 구조를 기반으로 OData 서비스를 자동 생성합니다. - CDS 뷰 및 OData 서비스 활성화: ADT에서 새 Data Definition을 활성화합니다. 그런 다음 SAP Gateway 허브 시스템에서 트랜잭션
/IWFND/MAINT_SERVICE를 사용해 새로 생성된 OData 서비스를 찾아 활성화합니다. 활성화 후 REST API 엔드포인트를 통해 데이터에 접근할 수 있습니다. - 데이터 추출: 대상 데이터 플랫폼 또는 ETL 도구를 사용해 활성화된 OData 서비스 엔드포인트에 연결합니다. OData URI에 필터를 직접 적용해 데이터 범위를 제한합니다. 예를 들어
EventTime을 기준으로 필터링할 수 있습니다(예:?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - process mining에 맞게 형식 지정: 추출한 데이터를 CSV와 같은 평면 파일로 저장하고, 열 머리글을 ProcessMind의 필수 속성(
WarehouseOrder,ActivityName,EventTime등)에 맞춥니다. 완성된 파일을 process mining 도구에 업로드합니다.
구성
- 사용자 지정 CDS 뷰: 이벤트 데이터를 통합하려면
Z_C_EWM_EVENTLOG_CDS와 같은 전용 CDS 뷰를 만들어야 합니다. 이 뷰가 데이터 추출의 중심 객체입니다. - OData 서비스: 사용자 지정 CDS 뷰에서 생성한 OData 서비스를 활성화해야 합니다. 서비스 이름은 일반적으로 CDS 뷰 이름에
_CDS접미사를 붙인 형태입니다. - 날짜 범위 필터링: OData API를 호출할 때
EventTime필드에 날짜 필터를 반드시 적용해야 합니다. 최초 분석에는 일반적으로 3~6개월의 데이터를 사용합니다. 필터가 없으면 쿼리 시간 초과나 성능 문제가 발생할 수 있습니다. - 엔터티 필터링: 데이터 범위를 더 줄이려면 창고 번호(
창고), 창고 주문 유형(WarehouseOrderType) 또는 특정 자재(MaterialNumber)와 같은 속성에 필터를 적용할 수 있습니다. - 시스템 권한: CDS 뷰를 만드는 사용자에게는 ADT의 SAP 개발자 권한이 필요합니다. OData API를 호출하는 사용자 또는 서비스 계정에는 기본 창고 관리 데이터에 접근할 권한이 있어야 합니다.
샘플 쿼리 sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate 단계
- SAP EWM 데이터베이스 스키마에 대한 직접 읽기 권한이 승인되었는지 확인하고, 창고 주문 헤더, 창고 작업, 창고 주문 상태 이력, 입고 및 출고 전기, 포장, 스테이징, 적재를 나타내는 실제 데이터베이스 객체를 파악합니다. 논리 참조인 /SCWM/WHO와 /SCWM/WT를 시작점으로 삼을 수 있지만, 실제 객체와 필드, 상태 코드, 타임스탬프의 의미, 데이터베이스 스키마는 시스템에서 확인해야 합니다.
- SAP EWM 기술 담당자 또는 데이터 사전에서 검증된 필드 매핑을 받습니다. 창고 주문 ID, 창고 주문 유형, 상태, 우선순위, 창고 작업 ID, 작업 범주 또는 프로세스 유형, 자재, 사용자, 생성 타임스탬프, 확인 타임스탬프, 포장 타임스탬프, 스테이징 타임스탬프, 적재 타임스탬프, 입고 타임스탬프, 출고 타임스탬프, 소스 시스템, 마지막 새로고침 타임스탬프를 매핑합니다. 모든 배포 환경에서 같은 테이블에 동일한 필드가 있거나 상태 코드의 의미가 같다고 가정하지 않습니다.
- 읽기 전용 데이터베이스 계정, 운영 또는 보고 스키마, 추출 시작일과 종료일, 소스 시스템 이름, 회사별 필터 값을 매개변수로 설정해 추출 연결을 구성합니다. 주문 생성 타임스탬프만이 아니라 해당 이벤트 타임스탬프에 날짜 필터를 적용해야 주문 수명 주기 후반에 발생한 이벤트가 제외되지 않습니다.
- 명시적으로 필요한 활동마다 한 행씩 선택해 이벤트 행을 만듭니다. 쿼리는 각 활동에 대해 검증된 소스 필드를 사용해야 하며, ProcessMind가 이벤트를 추론할 것이라고 가정해서는 안 됩니다. 현재 헤더 필드가 아니라 상태 이력이나 애플리케이션 로그에 활동이 기록되는 경우 해당 이력 또는 로그를 사용하고 이벤트 타임스탬프와 실행 사용자를 유지합니다.
- 모든 활동 타임스탬프를 하나의 시간대로 정규화합니다. UTC를 우선 사용하고, 그렇지 않으면 SAP 애플리케이션 서버의 시간대를 문서화합니다. 소스별 상태 및 프로세스 코드를 이벤트 로그에 필요한 정확한 활동 이름으로 변환합니다. Warehouse Order Created, Goods Receipt Posted, Putaway Task Created, Putaway Task Confirmed, Picking Task Created, Picking Task Confirmed, Packing Started, Packing Completed, Staging Task Confirmed, Loading Started, Loading Completed, Goods Issue Posted, Warehouse Order Completed, Warehouse Order Canceled를 사용합니다.
- 모든 출력 행에 WarehouseOrder, ActivityName, EventTime, SourceSystem, LastDataUpdate가 포함되어야 합니다. 신뢰할 수 있는 완료 타임스탬프가 있으면 EventEndTime도 입력합니다. 작업 수준 이벤트는 해당 작업을 창고 주문과 연결합니다. 창고 주문 하나에 관련 작업이 여러 개 있으면 창고 주문을 케이스 식별자로 유지하면서 작업 이벤트마다 행을 하나씩 남깁니다. 대상 가져오기 형식에서 지원하는 경우 작업 ID나 소스 이벤트 ID처럼 안정적인 정렬 기준을 사용합니다.
- 내보내기 전에 결과를 검증합니다. 소스 데이터에 해당 비즈니스 이벤트가 있는 경우 활동 이름 14개가 모두 나타나는지, 타임스탬프가 요청한 기간에 포함되는지, 창고 주문 값이 예상치 않게 비어 있지 않은지, 중복 행이 여러 작업이나 반복된 상태 변경으로 설명되는지 확인합니다. SAP 운영 보고서 또는 별도로 승인된 추출 데이터와 건수를 대조합니다.
- 이벤트마다 한 행이 포함되도록 ProcessMind 호환 구분 파일 또는 데이터베이스 결과로 내보냅니다. 필수 열 이름을 정확히 유지하고 ISO 8601과 같이 모호하지 않은 타임스탬프 형식을 사용합니다. 구분 형식에 필요한 경우 텍스트 값을 따옴표로 묶고 머리글 행을 포함합니다. 파일을 업로드하거나 ProcessMind에서 데이터베이스 연결을 구성한 다음 WarehouseOrder를 케이스 식별자로, ActivityName을 활동으로, EventTime을 시작 타임스탬프로 설정합니다. 사용 가능한 경우 EventEndTime은 종료 타임스탬프로 설정합니다.
구성
- 소스 객체 매핑: 창고 주문, 창고 작업, 상태 이력, 입출고, 포장, 스테이징, 상차에 해당하는 실제 데이터베이스 객체와 필드를 확인합니다. /SCWM/WHO와 /SCWM/WT가 관련 논리 객체일 수 있지만, 구현 전에 배포된 시스템의 데이터베이스 표현을 확인해야 합니다.
- 날짜 범위: 먼저 3~6개월의 관리 가능한 기간으로 시작합니다. 초기 테스트에는 더 짧은 기간을 사용하고 대조 검증 후 범위를 늘립니다. 증분 실행 사이에는 늦게 반영되는 전기와 수정 사항을 가져올 수 있도록 짧은 중복 기간을 둡니다.
- 이벤트 타임스탬프 선택: 생성 활동에는 생성 타임스탬프, 확인 활동에는 확인 타임스탬프, 입고와 출고에는 전기 타임스탬프를 사용합니다. 포장, 스테이징, 상차에는 검증된 실행 타임스탬프를 사용합니다. 모든 이벤트에 창고 주문 생성 시간을 대신 사용하지 마세요.
- 필터: 창고 번호, 회사 코드, 문서 유형, 창고 주문 유형, 활동 영역, 대기열, 플랜트, 소스 시스템 등 검증된 비즈니스 필터만 적용합니다. 회사 코드와 문서 유형 필드는 관련 객체에 있을 수 있으므로 대상 시스템에서 매핑해야 합니다.
- 상태 매핑: 완료 및 취소된 창고 주문을 나타내는 SAP 상태 또는 프로세스 코드를 정확히 설정합니다. 릴리스와 구현 방식에 따라 상태 코드와 저장 위치가 다를 수 있으므로 EWM 기능 담당자와 매핑을 검증합니다.
- SourceSystem: EWM 운영 또는 리포팅 인스턴스를 식별하는 안정적인 값을 설정합니다. 값이 비어 있을 수 있는 비즈니스 필드에서 값을 가져오지 마세요.
- LastDataUpdate: 실행의 모든 행에 추출 시각 또는 소스 새로 고침 시각을 일관되게 입력합니다.
- 증분 추출: 마지막으로 성공적으로 추출한 소스 타임스탬프를 기준으로 저장된 상한값을 사용하고, 늦게 도착하는 레코드를 고려해 중복 기간을 둡니다. 사용 가능한 경우 검증된 소스 식별자로 중복을 제거합니다.
- 성능: 날짜 범위를 초기에 제한하고 필요한 열만 선택하며, 인덱스 필드를 필터링합니다. 조건절에서 인덱스 타임스탬프 열에 함수를 적용하지 말고, 대량 데이터는 일별 또는 주별로 나눠 처리합니다. 허용되는 경우 리포팅 복제본을 사용합니다.
- 조인 전략: 창고 주문과 창고 작업 간의 카디널리티를 확인합니다. 작업, 상태, 자재, Handling Unit 데이터를 조인할 때 의도치 않게 행이 늘어나지 않도록 합니다. 조인 전에 적절한 이벤트 레코드를 집계하거나 선택합니다.
- 시간대: 소스 시간대와 변환 규칙을 설정합니다. 타임스탬프를 일관된 형식으로 저장하고 일광 절약 시간 처리 방식을 문서화합니다.
- 사전 준비: 읽기 전용 데이터베이스 권한, EWM 스키마에 대한 승인된 접근 권한, 검증된 데이터 사전 매핑, 관련 운영 및 이력 객체를 읽을 권한, 승인된 ProcessMind 가져오기 설정이 필요합니다. 필요한 SAP 모듈, 라이선스, 권한은 배포된 EWM 아키텍처에 따라 다르므로 시스템 담당자가 확인해야 합니다.
샘플 쿼리 sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_time,
CAST('[End date and time]' AS TIMESTAMP) AS end_time,
CAST('[Source system name]' AS VARCHAR(255)) AS source_system,
CAST(CURRENT_TIMESTAMP AS TIMESTAMP) AS last_data_update
),
warehouse_orders AS (
SELECT
CAST(wo.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wo.[Warehouse order type field] AS VARCHAR(255)) AS WarehouseOrderType,
CAST(wo.[Warehouse order status field] AS VARCHAR(255)) AS WarehouseOrderStatus,
CAST(wo.[Priority field] AS VARCHAR(255)) AS Priority,
CAST(wo.[Warehouse order creation timestamp field] AS TIMESTAMP) AS WarehouseOrderCreatedTime,
CAST(wo.[Warehouse order completion timestamp field] AS TIMESTAMP) AS WarehouseOrderCompletedTime,
CAST(wo.[Warehouse order cancellation timestamp field] AS TIMESTAMP) AS WarehouseOrderCanceledTime,
CAST(wo.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wo.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse order header table] wo
),
warehouse_tasks AS (
SELECT
CAST(wt.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wt.[Warehouse task ID field] AS VARCHAR(255)) AS WarehouseTask,
CAST(wt.[Task category or process type field] AS VARCHAR(255)) AS TaskType,
CAST(wt.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wt.[Task creation timestamp field] AS TIMESTAMP) AS TaskCreatedTime,
CAST(wt.[Task confirmation timestamp field] AS TIMESTAMP) AS TaskConfirmedTime,
CAST(wt.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse task table] wt
),
events AS (
SELECT wo.WarehouseOrder, 'Warehouse Order Created' AS ActivityName, wo.WarehouseOrderCreatedTime AS EventTime, CAST(NULL AS TIMESTAMP) AS EventEndTime, wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo
UNION ALL
SELECT gr.[Warehouse order ID field], 'Goods Receipt Posted', CAST(gr.[Goods receipt posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gr.[Material number field] AS VARCHAR(255)), CAST(gr.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods receipt posting table] gr LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gr.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Started', CAST(pk.[Packing start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Completed', CAST(pk.[Packing completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT st.[Warehouse order ID field], 'Staging Task Confirmed', CAST(st.[Staging confirmation timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(st.[Material number field] AS VARCHAR(255)), CAST(st.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your staging event table] st LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(st.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Started', CAST(ld.[Loading start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Completed', CAST(ld.[Loading completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT gi.[Warehouse order ID field], 'Goods Issue Posted', CAST(gi.[Goods issue posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gi.[Material number field] AS VARCHAR(255)), CAST(gi.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods issue posting table] gi LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gi.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Completed', wo.WarehouseOrderCompletedTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCompletedTime IS NOT NULL
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Canceled', wo.WarehouseOrderCanceledTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCanceledTime IS NOT NULL
)
SELECT
e.WarehouseOrder,
e.ActivityName,
e.EventTime,
e.EventEndTime,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaterialNumber,
e.[User],
e.WarehouseOrderType,
e.WarehouseOrderStatus,
e.Priority
FROM events e
CROSS JOIN params p
WHERE e.WarehouseOrder IS NOT NULL
AND e.EventTime IS NOT NULL
AND e.EventTime >= p.start_time
AND e.EventTime < p.end_time
ORDER BY e.WarehouseOrder, e.EventTime, e.ActivityName; 시작할 준비가 되셨나요?
지금 창고 운영 최적화를 시작하세요. 이 템플릿을 활용해 효율을 높이고 오더 이행을 앞당기세요.
피킹 오류를 줄이고 지금 창고 관리를 최적화하세요
몇 주 안에 재고 정확도를 99.5%까지 높이고 주문 처리 지연을 없애세요.
신용카드 없이 몇 분 만에 설정할 수 있습니다.