Il Suo template dati per la gestione del magazzino
Il Suo template dati per la gestione del magazzino
- Attributi consigliati per un'analisi completa
- Attività chiave da tracciare nel Suo processo
- Guida per l'estrazione dati da SAP EWM
Attributi di gestione magazzino
| Nome | Descrizione | ||
|---|---|---|---|
| Ordine di magazzino WarehouseOrder | L'identificativo univoco di un ordine di magazzino, che raggruppa un set di task da eseguire. | ||
| Descrizione L'ordine di magazzino funge da Case ID principale per tracciare il processo end-to-end di gestione merci. Rappresenta un pacchetto di lavoro, come il picking per l'uscita merci o lo stoccaggio delle entrate. Nel Process Mining, analizzare per ordine di magazzino consente una visione completa del ciclo di vita del lavoro, aiutando a individuare colli di bottiglia e misurare i cycle time. Perché è importante Identificativo principale che collega le attività, permettendo l'analisi end-to-end per ogni unità di lavoro. Dove trovare Questo identificativo si trova solitamente nella tabella di testata /SCWM/WHO di SAP EWM. Esempi 200000145200000146200000147 | |||
| Nome attività ActivityName | Il nome della specifica attività o evento di magazzino verificatosi, come "Task di picking creato" o "Uscita merci registrata". | ||
| Descrizione Descrive un singolo passaggio o evento del processo. Analizzare la sequenza di queste attività è fondamentale per visualizzare il flusso, identificare deviazioni e individuare ritardi. Perché è importante Definisce le fasi del processo, costituendo la base della mappa di processo e consentendo l'analisi del flusso, delle deviazioni e dei bottleneck. Dove trovare Derivato da cambi di stato, messaggi di evento o log di transazione relativi a ordini e task di magazzino in tabelle come /SCWM/ORDIM_C (Conferme) o interpretando i campi di stato in /SCWM/WHO e /SCWM/ORDIM_O. Esempi Task di picking confermatoTask di messa a dimora creatoRicevimento merce registratoOrdine di magazzino completato | |||
| Ora di Inizio EventTime | Il timestamp che indica l'inizio dell'attività o dell'evento. | ||
| Descrizione Registra data e ora esatte dell'evento. È essenziale per costruire la sequenza cronologica e calcolare cycle time, tempi di attesa e di elaborazione. Perché è importante Questo timestamp è fondamentale per ordinare gli eventi e calcolare le metriche di performance basate sul tempo. Dove trovare Presente solitamente in tabelle di conferma come /SCWM/ORDIM_C o nei log dei cambi di stato. Esempi 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Sistema di Origine SourceSystem | Identifica il sistema sorgente da cui sono stati estratti i dati, ad esempio l'istanza di produzione SAP EWM. | ||
| Descrizione Specifica il sistema di origine dei dati. Fondamentale per la tracciabilità e per confrontare i processi tra diverse istanze o regioni. Perché è importante Garantisce tracciabilità e contesto, specialmente in ambienti con più istanze SAP o sistemi integrati, assicurando che l'origine dei dati sia chiara. Dove trovare Valore statico aggiunto durante l'ETL per identificare l'istanza specifica di SAP S/4HANA o EWM. Esempi SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| Ultimo `Data Update` LastDataUpdate | Il `timestamp` che indica l'ultima volta che i `dati` per questo `record` sono stati aggiornati dal `sistema` sorgente. | ||
| Descrizione Registra l'ultima estrazione dati. Conoscere l'aggiornamento dei dati è essenziale per prendere decisioni informate basate su informazioni attuali. Perché è importante Indica l'aggiornamento dei dati, fondamentale per comprendere quanto sia attuale l'analisi del processo. Dove trovare Campo metadati generato durante l'ETL che riflette il timestamp del caricamento dati. Esempi 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| ID Utente User | L'identificativo dell'operatore di magazzino o dell'utente che ha confermato o eseguito l'attività. | ||
| Descrizione Questo attributo cattura l'ID dell'utente responsabile del task. È fondamentale per la dashboard dell'utilizzo delle risorse, consentendo di analizzare le performance e bilanciare i carichi di lavoro. Perché è importante Attribuisce il lavoro a una persona specifica, consentendo l'analisi delle performance per utente o team e supportando la gestione delle risorse e il bilanciamento del carico di lavoro. Dove trovare Presente solitamente nei dati di conferma del task, ad esempio nella tabella /SCWM/ORDIM_C, campo UNAME. Esempi JSMITHARODRIGUEZOPERATOR_05 | |||
| Numero materiale MaterialNumber | L'identificativo univoco del prodotto o materiale gestito nel task di magazzino. | ||
| Descrizione Specifica il materiale gestito. Permette di segmentare le performance, identificando ad esempio quali prodotti richiedono più tempo per lo stoccaggio o subiscono più errori. Perché è importante Consente di filtrare e segmentare i dati di processo per prodotto, il che è fondamentale per identificare problemi specifici legati alla movimentazione, allo stoccaggio o al controllo qualità. Dove trovare Disponibile solitamente nelle tabelle dei task di magazzino come /SCWM/ORDIM_O, collegate ai dati anagrafici del materiale. Esempi FIN-1001RAW-2050SFIN-300-A | |||
| Ora di Fine EventEndTime | Il `timestamp` che indica quando un'attività o un `event` è stato completato. | ||
| Descrizione Registra data e ora di fine attività. Permette il calcolo preciso del tempo di elaborazione, fondamentale per individuare i task più onerosi. Perché è importante Consente il calcolo preciso della durata delle singole attività, il che è fondamentale per identificare le fasi più lunghe e i task ad alta intensità di risorse. Dove trovare Spesso coincide con il timestamp di inizio per gli eventi discreti. Per i task di lunga durata, potrebbe essere un campo separato in tabelle come /SCWM/ORDIM_C o derivare da un successivo cambio di stato. Esempi 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| Priorità Priority | Il livello di priorità assegnato all'ordine di magazzino, che ne indica l'urgenza (es. Alta, Media, Bassa). | ||
| Descrizione Questo attributo classifica gli ordini in base all'urgenza. La priorità è fondamentale per monitorare l'aderenza ai tempi di evasione degli ordini critici, allineando il magazzino agli obiettivi di business. Perché è importante Consente di dare priorità all'analisi e al monitoraggio per garantire che gli ordini urgenti rispettino i livelli di servizio, con un impatto diretto sulla soddisfazione del cliente. Dove trovare La priorità può essere impostata sul documento di consegna sottostante e trasferita all'ordine di magazzino. È reperibile in tabelle come /SCWM/WHO. Esempi ElevatoMedioBasso | |||
| Stato ordine di magazzino WarehouseOrderStatus | Lo stato attuale o finale dell'ordine di magazzino, come "Completato" o "Annullato". | ||
| Descrizione Indica l'esito finale dell'ordine. Capire se un ordine è stato completato o annullato è cruciale per analizzare i tassi di successo e le cause di mancato completamento. Perché è importante Indica l'esito di un case, consentendo di filtrare gli ordini completati rispetto a quelli annullati, il che è fondamentale per un'analisi accurata del tempo di ciclo e della produttività. Dove trovare Il campo dello stato si trova solitamente nella tabella di testata dell'ordine di magazzino, /SCWM/WHO. Esempi CompletatoIn ElaborazioneAnnullato | |||
| Tempo di Elaborazione ProcessingTime | Il tempo effettivo trascorso lavorando su una specifica attività. | ||
| Descrizione Il tempo di elaborazione misura il "tempo di contatto" effettivo per un'attività, calcolato come differenza tra i timestamp di inizio e fine. È distinto dal cycle time, che include i periodi di attesa tra le attività. Questa metrica è fondamentale per l'analisi delle performance, specialmente per dashboard come "Efficienza Picking & Packing". Aiuta a individuare quali task specifici richiedano più tempo, consentendo ai responsabili di concentrare gli sforzi di miglioramento sulle attività più lente, aumentando così il throughput complessivo. Perché è importante Misura la durata del lavoro attivo di un'attività, aiutando a identificare i task più lunghi e costituendo una base per l'analisi della capacità delle risorse. Dove trovare Metrica calcolata sottraendo l'EventTime dall'EventEndTime per ogni attività. Esempi 3009150 | |||
| Tipo di ordine di magazzino WarehouseOrderType | Classifica l'ordine di magazzino in base al suo scopo, come Stoccaggio, Picking o Rifornimento interno. | ||
| Descrizione Il tipo di ordine di magazzino classifica gli ordini in base alla loro funzione logistica. È fondamentale per segmentare le performance, ad esempio distinguendo tra processi in entrata (stoccaggio) e in uscita (picking) nella dashboard dedicata. Perché è importante Consente di segmentare l'analisi in base alla categoria di processo (es. inbound vs outbound), permettendo confronti e insight più pertinenti. Dove trovare Determinato dal tipo di processo di magazzino, spesso presente nella tabella /SCWM/WHO. Esempi PICKPUTWREPLSTGE | |||
| Attrezzatura utilizzata EquipmentUsed | L'identificativo dell'attrezzatura, come un carrello elevatore, utilizzata per eseguire il task di magazzino. | ||
| Descrizione Specifica l'attrezzatura usata per il task. Fondamentale per la dashboard di utilizzo delle attrezzature, aiuta a gestire la manutenzione e la dimensione della flotta. Perché è importante Consente l'analisi dell'utilizzo e dell'efficienza delle attrezzature, aiutando a ottimizzare la gestione della flotta e a identificare i vincoli di risorse. Dove trovare Può essere memorizzata nei dettagli dell'ordine se la gestione risorse è configurata. Consulti la documentazione di SAP Extended Warehouse Management. Esempi FORKLIFT-07AGV-02CART-15 | |||
| Data compl. richiesta RequestedCompletionDate | La data entro la quale è richiesto il completamento di un ordine di magazzino ad alta priorità. | ||
| Descrizione Definisce lo SLA o la data target di completamento. È essenziale per calcolare il tasso di evasione degli ordini prioritari e identificare quelli a rischio ritardo. Perché è importante Definisce lo SLA per un ordine, fungendo da benchmark per misurare la puntualità dell'evasione, specialmente per gli articoli ad alta priorità. Dove trovare Spesso deriva dalla data pianificata di uscita merci dell'ordine di consegna. Consulti la documentazione di SAP Extended Warehouse Management. Esempi 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| È In Tempo IsOnTime | Un flag booleano che indica se un ordine di magazzino è stato completato entro la data di completamento richiesta. | ||
| Descrizione Questo flag indica l'aderenza agli SLA in modo binario, valutando se il completamento è avvenuto entro la data richiesta. Semplifica il monitoraggio della puntualità. Perché è importante Semplifica l'analisi delle performance SLA fornendo un indicatore binario chiaro dell'evasione puntuale o in ritardo per ogni ordine. Dove trovare Attributo calcolato confrontando il timestamp di completamento con la data richiesta. Esempi truefalse | |||
| Orario di partenza pianificato PlannedDepartureTime | L'orario pianificato per la partenza della spedizione dal magazzino. | ||
| Descrizione Rappresenta l'orario target per la spedizione. È il riferimento per misurare la puntualità e identificare ritardi nel carico o nella coordinazione con i vettori. Perché è importante Fornisce la base per misurare la puntualità delle spedizioni, fondamentale per la pianificazione logistica e il rispetto degli orari dei trasportatori. Dove trovare Solitamente fa parte della documentazione di trasporto o spedizione. Consulti la documentazione di SAP Extended Warehouse Management. Esempi 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Quantità Effettiva ActualQuantity | La quantità effettiva di materiale confermata dall'utente per un task di magazzino. | ||
| Descrizione Indica la quantità gestita fisicamente. Il confronto tra quantità effettiva e pianificata è la base per l'analisi delle discrepanze inventariali e la misura dell'accuratezza operativa. Perché è importante Rappresenta il dato reale di movimentazione. Il confronto con il pianificato misura l'accuratezza operativa. Dove trovare Presente nei dati di conferma dei task di magazzino, ad esempio nella tabella /SCWM/ORDIM_C, spesso in un campo come NDIFF (quantità differenza) o derivato dalle quantità confermate. Esempi 10049250 | |||
| Quantità Pianificata PlannedQuantity | La quantità prevista di un materiale per un determinato task di magazzino. | ||
| Descrizione Rappresenta la quantità target da movimentare. È il benchmark per calcolare l'accuratezza dell'inventario e identificare errori di picking o ricezione. Perché è importante Funge da base per il calcolo dell'accuratezza dell'inventario e l'identificazione delle discrepanze, fondamentale per mantenere i corretti livelli di stock. Dove trovare Presente nei dati dei task di magazzino, ad esempio nella tabella /SCWM/ORDIM_O, spesso in un campo come NISTA (quantità target). Esempi 10050250 | |||
| Task di magazzino WarehouseTask | L'identificativo univoco di un singolo task di magazzino, componente di un ordine di magazzino. | ||
| Descrizione Un task di magazzino è l'istruzione per eseguire un movimento merci specifico, come lo spostamento di un prodotto da un vano di stoccaggio a una stazione di packing. Un ordine di magazzino raggruppa uno o più di questi task. L'analisi a livello di task offre una visione più granulare delle operazioni di magazzino. Aiuta a comprendere le performance delle risorse per movimenti specifici, identificare vani di stoccaggio difficili da raggiungere o analizzare l'efficienza delle singole attività di picking o stoccaggio. Perché è importante Fornisce un livello di dettaglio granulare per l'analisi, consentendo l'esame dei singoli movimenti e passaggi all'interno di un ordine di magazzino più ampio. Dove trovare Presente nelle tabelle dei task di magazzino come /SCWM/ORDIM_O (dati task) e /SCWM/ORDIM_C (dati conferma). Esempi 300000451300000452300000453 | |||
| Tempo di Ciclo End-to-End EndToEndCycleTime | Il tempo totale trascorso dalla creazione dell'ordine di magazzino al suo completamento finale. | ||
| Descrizione Questo KPI misura l'intero ciclo di vita dell'ordine. È l'indicatore chiave per la dashboard del cycle time end-to-end, aiutando a identificare inefficienze sistemiche. Perché è importante KPI primario per misurare l'efficienza complessiva e fornire una visione d'insieme delle performance. Dove trovare Calcolato a livello di case sottraendo il timestamp del primo evento ('Creazione ordine di magazzino') dal timestamp dell'ultimo evento ('Ordine di magazzino completato'). Esempi 8640017280043200 | |||
| Ubicazione di Magazzino StorageLocation | L'ubicazione specifica all'interno del magazzino, come un bin di stoccaggio, da o verso cui vengono spostate le merci. | ||
| Descrizione Identifica l'ubicazione fisica (bin di origine o destinazione). L'analisi per ubicazione rivela insight sulle "zone d'oro" con alti tassi di prelievo o aree problematiche con frequenti errori. Perché è importante Fornisce il contesto geografico all'interno del magazzino, consentendo l'analisi dell'efficienza dei movimenti, dell'accessibilità dei bin e l'ottimizzazione dei percorsi di picking. Dove trovare Presente nelle tabelle dei task come /SCWM/ORDIM_O, con informazioni sui bin di origine (VLPLA) e destinazione (NLPLA). Esempi 01-02-03PACK-STATION-01GI-ZONE-A | |||
| Varianza di Quantità QuantityVariance | La differenza tra la quantità pianificata e quella effettivamente confermata per un task. | ||
| Descrizione Quantifica le discrepanze rilevate. Un valore diverso da zero segnala errori di picking o danni, aiutando a risolvere problemi sistemici nella gestione dell'inventario. Perché è importante Quantifica direttamente le imprecisioni inventariali e operative, facilitando l'individuazione e l'analisi dell'entità delle discrepanze. Dove trovare Calcolato sottraendo la quantità pianificata dalla quantità effettiva per ogni task pertinente. Esempi 0-15 | |||
Attività di gestione magazzino
| Activity | Descrizione | ||
|---|---|---|---|
| Imballaggio completato | Indica che tutti gli articoli sono stati imballati in un'unità di movimentazione chiusa ed etichettata, pronta per il carico. | ||
| Perché è importante Conclude la fase di imballaggio. Eventuali ritardi influenzano direttamente il lead time complessivo di imballaggio e approntamento. Dove trovare Può essere rilevato quando lo stato dell'unità di movimentazione (HU) è impostato su 'Chiuso' o quando viene confermato l'ultimo task di magazzino relativo al packing per l'ordine. La tabella /SCWM/HUHDR contiene le informazioni sullo stato della HU. Acquisisci Identificare il timestamp quando l'unità di movimentazione di spedizione finale associata all'ordine viene chiusa o completata. Tipo di evento inferred | |||
| Ordine di magazzino completato | Lo stato dell'ordine di magazzino è impostato su "Completato" dopo la conferma di tutti i relativi task, chiudendo il pacchetto di lavoro. | ||
| Perché è importante Evento finale di successo, essenziale per calcolare il cycle time end-to-end e misurare il throughput. Dove trovare Rilevato tracciando il cambiamento del campo di stato (STAT) in 'Completed' nella tabella testata degli ordini di magazzino, /SCWM/WHO. È possibile utilizzare il log delle modifiche di questa tabella (DBTABLOG) o un campo timestamp dedicato. Acquisisci Identificare il timestamp quando lo stato in /SCWM/WHO viene impostato su 'C' (Completed). Tipo di evento inferred | |||
| Ordine di magazzino creato | Segna la creazione di un ordine di magazzino (WO), che raggruppa più task per organizzare il lavoro degli operatori in base ad area, coda o prodotto. | ||
| Perché è importante Evento di inizio principale. Analizzare il tempo dalla creazione alla prima azione aiuta a individuare ritardi nell'assegnazione del lavoro. Dove trovare Evento catturato dal timestamp di creazione (campo CREATED_AT) nella tabella di testata /SCWM/WHO. Acquisisci Estrarre il timestamp di creazione dalla tabella /SCWM/WHO per ogni numero di ordine di magazzino (WHO). Tipo di evento explicit | |||
| Task di picking confermato | Un operatore di magazzino conferma il completamento di un task di picking, indicando che la merce è stata prelevata fisicamente dalla sua posizione di stoccaggio. Questa operazione viene solitamente eseguita tramite uno scanner RF. | ||
| Perché è importante Milestone critica che influenza il cycle time order-to-ship. Analizzarla aiuta a misurare la produttività degli operatori. Dove trovare Rilevato dal timestamp di conferma (campo CONFIRMED_AT) nella tabella dei task di magazzino, /SCWM/WT. Lo stato del task (STAT) viene aggiornato in 'Confirmed'. Acquisisci Usi il timestamp di conferma dalla tabella /SCWM/WT per i task di picking. Tipo di evento explicit | |||
| Task di stoccaggio confermato | Un operatore di magazzino conferma che il task di stoccaggio è stato completato, il che significa che la merce è stata fisicamente collocata nel vano di stoccaggio designato. Questa conferma aggiorna la posizione dell'inventario in tempo reale. | ||
| Perché è importante Attività chiave per l'inbound, che conferma la disponibilità dello stock per il picking. Eventuali ritardi influenzano direttamente il KPI del cycle time dalla ricezione allo stoccaggio. Dove trovare Rilevato dal timestamp di conferma (campo CONFIRMED_AT) nella tabella dei task di magazzino, /SCWM/WT. Anche lo stato del task (STAT) cambia in 'Confirmed'. Acquisisci Usi il timestamp di conferma dalla tabella /SCWM/WT per i task di stoccaggio. Tipo di evento explicit | |||
| Uscita merci contabilizzata | Passaggio finale che rimuove le merci dall'inventario, segnando il trasferimento di proprietà e la partenza ufficiale. | ||
| Perché è importante Un punto finale cruciale per il flusso in uscita, che attiva la fatturazione e l'aggiornamento dell'inventario. È un componente chiave per misurare la puntualità delle spedizioni e il KPI relativo ai tempi di carico e invio. Dove trovare Desunto dalla registrazione di un documento di consegna in uscita associato all'ordine di magazzino. Verificare il flusso dei documenti o i campi di stato (es. DGI_STAT) nella tabella /SCDL/DB_PROCH_O. Acquisisci Identificare il timestamp quando lo stato dell'uscita merci (Goods Issue) viene impostato su 'Completed' per la consegna in uscita associata. Tipo di evento explicit | |||
| Carico terminato | Significa che tutte le merci per una spedizione sono state caricate fisicamente sull'unità di trasporto. È il prerequisito per la registrazione dell'uscita merci e la partenza del veicolo. | ||
| Perché è importante Una tappa fondamentale prima della spedizione finale. I ritardi tra il completamento del carico e l'uscita merci possono indicare problemi di documentazione o di sistema che bloccano i trasportatori. Dove trovare Desunto dal cambio di stato della Transportation Unit (TU) associata o dell'ordine di consegna in uscita in 'Loading Completed'. Sono rilevanti gli stati nelle tabelle /SCWM/TU e /SCDL/DB_PROCH_O. Acquisisci Cattura il timestamp quando lo stato della TU (Transportation Unit) o dell'ordine di consegna viene aggiornato per riflettere il completamento del carico. Tipo di evento inferred | |||
| Imballaggio iniziato | Rappresenta l'inizio delle attività di imballaggio, in cui gli articoli prelevati vengono consolidati e inseriti nei contenitori di spedizione. Spesso è il primo passaggio in un centro di imballaggio. | ||
| Perché è importante Segna l'inizio della fase dei servizi a valore aggiunto. Misurare la durata dell'imballaggio (packing) aiuta a ottimizzare il layout del centro di lavoro, il personale e i materiali. Dove trovare Potrebbe dover essere dedotto dalla prima scansione di un articolo alla stazione di imballaggio, usando tabelle come /SCWM/PACKSPEC. Acquisisci Usi il timestamp della prima conferma del task di imballaggio o l'ora di creazione dell'ultima HU. Tipo di evento inferred | |||
| Inizio carico | Segna l'inizio del carico fisico delle merci dall'area di approntamento al mezzo di trasporto. | ||
| Perché è importante L'inizio dell'ultima fase fisica in magazzino. L'analisi della durata del carico aiuta a ottimizzare l'uso delle banchine e i tempi di rotazione dei trasportatori. Dove trovare Desunto dal cambio di stato della Transportation Unit (TU) associata o dell'ordine di consegna in uscita in 'Loading Started'. È possibile controllare la tabella /SCWM/TU_STATUS. Acquisisci Cattura il timestamp quando lo stato della TU (Transportation Unit) o dell'ordine di consegna viene aggiornato per riflettere l'inizio del carico. Tipo di evento inferred | |||
| Ordine di magazzino annullato | L'ordine di magazzino viene annullato prima del completamento di tutti i task, interrompendo l'esecuzione. Può accadere per mancanza di stock o modifiche agli ordini. | ||
| Perché è importante Rappresenta un percorso di errore o eccezione. L'analisi della frequenza e delle ragioni degli annullamenti aiuta a identificare problemi a monte nella pianificazione, nell'accuratezza dell'inventario o nella gestione degli ordini. Dove trovare Rilevato tracciando il cambiamento del campo di stato (STAT) in 'Canceled' nella tabella testata degli ordini di magazzino, /SCWM/WHO. Acquisisci Identificare il timestamp quando lo stato in /SCWM/WHO viene impostato su un valore di annullamento. Tipo di evento inferred | |||
| Ricevimento merce registrato | Segna l'accettazione formale delle merci nell'inventario di magazzino da un fornitore esterno o dalla produzione. Si tratta di una registrazione contabile e inventariale chiave che rende lo stock visibile e disponibile per i processi successivi come lo stoccaggio. | ||
| Perché è importante Milestone critica per l'inbound. Il tempo tra l'arrivo merce e questa registrazione indica eventuali arretrati in ricezione. Dove trovare Desunto dalla registrazione di un documento di consegna in entrata associato all'ordine di magazzino. Verificare il flusso dei documenti o i campi di stato (es. DGRSTAT) nella tabella /SCDL/DB_PROCH_I. Acquisisci Identificare il timestamp quando lo stato dell'entrata merci (Goods Receipt) viene impostato su 'Completed' per la consegna in entrata associata. Tipo di evento inferred | |||
| Task di approntamento confermato | Un operatore di magazzino conferma il movimento di un'unità di movimentazione (HU) imballata da una stazione di packing o da un'area di consolidamento a un'area di approntamento spedizioni designata. La merce è ora pronta per il carico. | ||
| Perché è importante Segna il passaggio alla logistica in uscita. Ritardi nell'approntamento possono causare disorganizzazione alle banchine e mancate partenze. Dove trovare Rilevato dal timestamp di conferma (campo CONFIRMED_AT) di un task di magazzino (/SCWM/WT) con un tipo di processo per i movimenti di approntamento (staging). Acquisisci Identificare il timestamp di conferma per il task di magazzino di staging associato all'unità di movimentazione o alla consegna. Tipo di evento explicit | |||
| Task di messa a dimora creato | Il sistema genera un'istruzione specifica, un task di magazzino (WT), per spostare le merci ricevute in un bin di stoccaggio finale. Questa attività rappresenta la disponibilità del sistema a eseguire lo stoccaggio. | ||
| Perché è importante Tracciare il tempo tra creazione e conferma dei task rivela quanto tempo occorre per eseguire le istruzioni di stoccaggio, evidenziando carenze di personale o attrezzature. Dove trovare Rilevato dal timestamp di creazione (campo CREATED_AT) del relativo task di magazzino nella tabella /SCWM/WT, dove il tipo di processo indica lo stoccaggio (putaway). Acquisisci Filtrare per i task di magazzino con un tipo di processo di stoccaggio collegato all'ordine di magazzino e utilizzare il loro timestamp di creazione. Tipo di evento explicit | |||
| Task di Prelievo Creato | Il sistema genera un task di magazzino (WT) per prelevare merci da un bin per evadere un ordine di consegna in uscita. Rappresenta l'istruzione per l'operatore di recuperare un prodotto. | ||
| Perché è importante L'inizio del processo fisico in uscita. Il lasso di tempo tra la creazione e la conferma dei task di picking è cruciale per analizzare l'efficienza e la disponibilità delle risorse. Dove trovare Rilevato dal timestamp di creazione (campo CREATED_AT) del relativo task di magazzino nella tabella /SCWM/WT, dove il tipo di processo indica il picking. Acquisisci Filtrare per i task di magazzino con un tipo di processo di picking collegato all'ordine di magazzino e utilizzare il loro timestamp di creazione. Tipo di evento explicit | |||
Guide all'Estrazione
Fasi
- Prerequisito: Identificare o creare viste CDS: Le fonti dati primarie sono le viste CDS standard di SAP S/4HANA per Warehouse Management. Le viste chiave sono
I_WarehouseOrderper gli eventi a livello di ordine eI_WarehouseTaskper gli eventi a livello di task. Altre viste comeI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnitsono necessarie per gli eventi logistici correlati. Si assicuri che queste viste siano attive nel sistema. - Creare una vista CDS personalizzata: Per combinare i dati da più fonti in un unico formato di event log, deve creare una vista CDS personalizzata. Utilizzi gli ABAP Development Tools (ADT) in Eclipse per creare una nuova Data Definition. Questa vista utilizzerà
UNION ALLper unire i record di diverse fonti, ciascuna rappresentante una distinta attività di business. - Definire la struttura dell'event log: Nella vista CDS personalizzata, definisca i campi che formeranno le colonne dell'event log. Questi devono includere
WarehouseOrder,ActivityName,EventTimee altri attributi obbligatori e consigliati. Mappi questi campi dalle viste CDS standard sottostanti. - Modellare gli eventi degli ordini di magazzino: Aggiunga le prime istruzioni
SELECTalla union. Selezioni daI_WarehouseOrderper generare l'evento 'Warehouse Order Created' utilizzando il timestamp di creazione. Aggiunga le successive istruzioniSELECTper gli eventi 'Warehouse Order Completed' e 'Warehouse Order Canceled' filtrando sullo stato dell'ordine e utilizzando i timestamp di conferma o modifica appropriati. - Modellare gli eventi dei task di magazzino: Aggiunga istruzioni
SELECTdaI_WarehouseTask. Generi gli eventi 'Putaway Task Created' e 'Putaway Task Confirmed' filtrando per categorie di processo di magazzino relative allo stoccaggio. Allo stesso modo, crei gli eventi 'Picking Task Created', 'Picking Task Confirmed' e 'Staging Task Confirmed' basati sulle rispettive categorie di processo e utilizzi i timestamp di creazione e conferma. - Modellare gli eventi dei movimenti merci: Colleghi le viste relative alle consegne ai task di magazzino per catturare i movimenti merci. Per 'Goods Receipt Posted', selezioni da
I_InboundDeliveryItemutilizzandoActualGoodsMovementDateTime. Per 'Goods Issue Posted', utilizzi lo stesso campo daI_OutboundDeliveryItem, ricollegandolo all'ordine o al task di magazzino pertinente. - Modellare gli eventi di carico e imballaggio: Selezioni da
I_EWMTransportationUnitper catturare gli eventi 'Loading Started' e 'Loading Completed' utilizzando i relativi timestamp dedicati. Per l'imballaggio (packing), che può essere complesso, utilizzi un proxy selezionando da una vista Handling Unit, dove l'ora di creazione può rappresentare 'Packing Started' e l'ora di cambio stato può rappresentare 'Packing Completed'. Questa fase potrebbe richiedere adattamenti in base al processo di imballaggio specifico. - Aggiungere annotazioni per esporre la vista CDS: Aggiunga l'annotazione
@OData.publish: truealla definizione della vista CDS personalizzata. Questo indica a SAP di generare automaticamente un servizio OData basato sulla struttura della vista. - Attivare la vista CDS e il servizio OData: Attivi la nuova Data Definition in ADT. Quindi, acceda al sistema SAP Gateway hub e utilizzi la transazione
/IWFND/MAINT_SERVICEper trovare e attivare il servizio OData appena generato. Questo rende i dati accessibili tramite un endpoint API REST. - Estrarre i dati: Utilizzi la piattaforma dati di destinazione o uno strumento ETL per connettersi all'endpoint del servizio OData attivato. Applichi i filtri direttamente nell'URI OData, ad esempio filtrando su
EventTimeper limitare l'ambito dei dati (es.?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formattare per il Process Mining: Si assicuri che i dati estratti siano salvati in un formato file flat, come CSV, con le intestazioni delle colonne corrispondenti agli attributi richiesti per ProcessMind (
WarehouseOrder,ActivityName,EventTime, ecc.). Carichi il file finale nello strumento di Process Mining.
Configurazione
- Custom CDS View: È necessario creare una vista CDS dedicata, ad esempio
Z_C_EWM_EVENTLOG_CDS, per unificare i dati degli eventi. Questo è l'oggetto centrale per l'estrazione. - Servizio OData: Il servizio OData generato dalla vista CDS personalizzata deve essere attivato. Il nome del servizio coincide solitamente con il nome della vista CDS seguito dal suffisso
_CDS. - Filtro intervallo temporale: È fondamentale applicare un filtro sulla data nel campo
EventTimequando si richiama l'API OData. Un intervallo tipico per un'analisi iniziale va dai 3 ai 6 mesi di dati. Senza filtro, la query potrebbe andare in timeout o causare problemi di performance. - Filtro entità: Per limitare ulteriormente l'ambito dei dati, consideri l'applicazione di filtri su attributi come il numero di magazzino (
Warehouse), il tipo di ordine di magazzino (WarehouseOrderType) o materiali specifici (MaterialNumber). - Autorizzazioni di sistema: L'utente che crea la vista CDS richiede l'accesso SAP developer in ADT. L'utente o l'account di servizio che richiama l'API OData deve disporre delle autorizzazioni per accedere ai dati sottostanti della gestione del magazzino.
a Query di Esempio 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 Fasi
- Prerequisito: Identificare o creare viste CDS: Le fonti dati primarie sono le viste CDS standard di SAP S/4HANA per Warehouse Management. Le viste chiave sono
I_WarehouseOrderper gli eventi a livello di ordine eI_WarehouseTaskper gli eventi a livello di task. Altre viste comeI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnitsono necessarie per gli eventi logistici correlati. Si assicuri che queste viste siano attive nel sistema. - Creare una vista CDS personalizzata: Per combinare i dati da più fonti in un unico formato di event log, deve creare una vista CDS personalizzata. Utilizzi gli ABAP Development Tools (ADT) in Eclipse per creare una nuova Data Definition. Questa vista utilizzerà
UNION ALLper unire i record di diverse fonti, ciascuna rappresentante una distinta attività di business. - Definire la struttura dell'event log: Nella vista CDS personalizzata, definisca i campi che formeranno le colonne dell'event log. Questi devono includere
WarehouseOrder,ActivityName,EventTimee altri attributi obbligatori e consigliati. Mappi questi campi dalle viste CDS standard sottostanti. - Modellare gli eventi degli ordini di magazzino: Aggiunga le prime istruzioni
SELECTalla union. Selezioni daI_WarehouseOrderper generare l'evento 'Warehouse Order Created' utilizzando il timestamp di creazione. Aggiunga le successive istruzioniSELECTper gli eventi 'Warehouse Order Completed' e 'Warehouse Order Canceled' filtrando sullo stato dell'ordine e utilizzando i timestamp di conferma o modifica appropriati. - Modellare gli eventi dei task di magazzino: Aggiunga istruzioni
SELECTdaI_WarehouseTask. Generi gli eventi 'Putaway Task Created' e 'Putaway Task Confirmed' filtrando per categorie di processo di magazzino relative allo stoccaggio. Allo stesso modo, crei gli eventi 'Picking Task Created', 'Picking Task Confirmed' e 'Staging Task Confirmed' basati sulle rispettive categorie di processo e utilizzi i timestamp di creazione e conferma. - Modellare gli eventi dei movimenti merci: Colleghi le viste relative alle consegne ai task di magazzino per catturare i movimenti merci. Per 'Goods Receipt Posted', selezioni da
I_InboundDeliveryItemutilizzandoActualGoodsMovementDateTime. Per 'Goods Issue Posted', utilizzi lo stesso campo daI_OutboundDeliveryItem, ricollegandolo all'ordine o al task di magazzino pertinente. - Modellare gli eventi di carico e imballaggio: Selezioni da
I_EWMTransportationUnitper catturare gli eventi 'Loading Started' e 'Loading Completed' utilizzando i relativi timestamp dedicati. Per l'imballaggio (packing), che può essere complesso, utilizzi un proxy selezionando da una vista Handling Unit, dove l'ora di creazione può rappresentare 'Packing Started' e l'ora di cambio stato può rappresentare 'Packing Completed'. Questa fase potrebbe richiedere adattamenti in base al processo di imballaggio specifico. - Aggiungere annotazioni per esporre la vista CDS: Aggiunga l'annotazione
@OData.publish: truealla definizione della vista CDS personalizzata. Questo indica a SAP di generare automaticamente un servizio OData basato sulla struttura della vista. - Attivare la vista CDS e il servizio OData: Attivi la nuova Data Definition in ADT. Quindi, acceda al sistema SAP Gateway hub e utilizzi la transazione
/IWFND/MAINT_SERVICEper trovare e attivare il servizio OData appena generato. Questo rende i dati accessibili tramite un endpoint API REST. - Estrarre i dati: Utilizzi la piattaforma dati di destinazione o uno strumento ETL per connettersi all'endpoint del servizio OData attivato. Applichi i filtri direttamente nell'URI OData, ad esempio filtrando su
EventTimeper limitare l'ambito dei dati (es.?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formattare per il Process Mining: Si assicuri che i dati estratti siano salvati in un formato file flat, come CSV, con le intestazioni delle colonne corrispondenti agli attributi richiesti per ProcessMind (
WarehouseOrder,ActivityName,EventTime, ecc.). Carichi il file finale nello strumento di Process Mining.
Configurazione
- Custom CDS View: È necessario creare una vista CDS dedicata, ad esempio
Z_C_EWM_EVENTLOG_CDS, per unificare i dati degli eventi. Questo è l'oggetto centrale per l'estrazione. - Servizio OData: Il servizio OData generato dalla vista CDS personalizzata deve essere attivato. Il nome del servizio coincide solitamente con il nome della vista CDS seguito dal suffisso
_CDS. - Filtro intervallo temporale: È fondamentale applicare un filtro sulla data nel campo
EventTimequando si richiama l'API OData. Un intervallo tipico per un'analisi iniziale va dai 3 ai 6 mesi di dati. Senza filtro, la query potrebbe andare in timeout o causare problemi di performance. - Filtro entità: Per limitare ulteriormente l'ambito dei dati, consideri l'applicazione di filtri su attributi come il numero di magazzino (
Warehouse), il tipo di ordine di magazzino (WarehouseOrderType) o materiali specifici (MaterialNumber). - Autorizzazioni di sistema: L'utente che crea la vista CDS richiede l'accesso SAP developer in ADT. L'utente o l'account di servizio che richiama l'API OData deve disporre delle autorizzazioni per accedere ai dati sottostanti della gestione del magazzino.
a Query di Esempio 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