Il template dei dati per la gestione del magazzino
Il template dei dati per la gestione del magazzino
- Attributi consigliati per un’analisi completa
- Attività chiave da monitorare nel processo
- Indicazioni per estrarre i dati da SAP EWM
Attributi della gestione del magazzino
| Nome | Descrizione | ||
|---|---|---|---|
| Warehouse Order WarehouseOrder | Identificativo univoco di un ordine di magazzino, che raggruppa un insieme di attività di magazzino da assegnare a una risorsa. | ||
| Descrizione Il Warehouse Order è l’identificativo principale del caso per tracciare l’intero processo di movimentazione delle merci in magazzino. Rappresenta un pacchetto di lavoro, ad esempio il prelievo di articoli per una consegna in uscita o la messa a dimora delle merci ricevute. Ogni Warehouse Order comprende una o più attività di magazzino. Nel Process Mining, analizzare i dati per Warehouse Order offre una visione completa dell’intero ciclo di vita di uno specifico pacchetto di lavoro. Aiuta a individuare i colli di bottiglia, misurare i tempi di ciclo complessivi dalla creazione al completamento e comprendere l’intero flusso di attività associato a una singola istruzione logistica. Perché è importante È l’identificativo fondamentale che collega tutte le attività di magazzino correlate e consente di analizzare il processo end-to-end e misurare il tempo di ciclo di una singola unità di lavoro. Dove reperirli Questo identificativo si trova in genere nella tabella di intestazione dei Warehouse Order di SAP EWM, ad esempio /SCWM/WHO. Esempi 200000145200000146200000147 | |||
| Nome dell’attività ActivityName | Nome della specifica attività o dell’evento di gestione del magazzino, ad esempio «Attività di prelievo creata» o «Uscita merci registrata». | ||
| Descrizione Questo attributo descrive una singola fase o un singolo evento del processo di gestione del magazzino. Queste attività costituiscono gli elementi fondamentali della mappa del processo e rappresentano operazioni quali creazione, conferma, imballaggio, carico e movimentazione delle merci. Analizzare la sequenza e la frequenza di queste attività è fondamentale nel Process Mining. Consente di visualizzare il flusso del processo, individuare i percorsi più comuni e quelli rari, rilevare le deviazioni dalla procedura standard e identificare le fasi specifiche che causano ritardi o rilavorazioni. Perché è importante Definisce le fasi del processo, costituisce la base della mappa del processo e consente di analizzare il flusso, le deviazioni e i colli di bottiglia. Dove reperirli Ricavato dai cambiamenti di stato, dai messaggi degli eventi o dai log delle transazioni relativi agli ordini e alle attività di magazzino nelle tabelle come /SCWM/ORDIM_C (conferme), oppure interpretando i campi di stato in /SCWM/WHO e /SCWM/ORDIM_O. Esempi Attività di prelievo confermataAttività di messa a dimora creataEntrata merci registrataWarehouse Order completato | |||
| Ora di inizio EventTime | Timestamp che indica quando è iniziata l’attività o si è verificato l’evento. | ||
| Descrizione Questo attributo registra la data e l’ora esatte in cui si è svolta una specifica attività di magazzino. È il principale riferimento temporale per ordinare gli eventi e calcolare gli intervalli tra loro. Nel Process Mining, l’ora di inizio è essenziale per ricostruire la sequenza cronologica degli eventi di ogni caso. Serve a calcolare i tempi di ciclo, di attesa e di elaborazione, fondamentali per analizzare le prestazioni, individuare i colli di bottiglia e monitorare gli SLA. Perché è importante Questo timestamp è fondamentale per ordinare cronologicamente gli eventi e calcolare tutte le metriche temporali, come i tempi di ciclo e le durate. Dove reperirli Si trova in genere nelle tabelle degli eventi o delle conferme, come /SCWM/ORDIM_C (ad esempio nel campo CONF_TIMESTAMP), oppure nei log delle modifiche di stato associati agli ordini e alle attività di magazzino. Esempi 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Sistema di origine SourceSystem | Identifica il sistema da cui sono stati estratti i dati, ad esempio l’istanza di produzione di SAP EWM. | ||
| Descrizione Questo attributo specifica il sistema di registrazione da cui provengono i dati di gestione del magazzino. In un ambiente aziendale con più sistemi, indicare l’origine dei dati è fondamentale per garantirne la tracciabilità e fornire il giusto contesto. Nell’analisi, permette di distinguere i processi che coinvolgono più sistemi o di confrontare quelli provenienti da istanze diverse, ad esempio sistemi separati per aree geografiche differenti. Garantisce inoltre che la provenienza dei dati sia chiara e verificabile. Perché è importante Fornisce tracciabilità e contesto, soprattutto negli ambienti con più istanze SAP o sistemi integrati, e garantisce che la provenienza dei dati sia chiara. Dove reperirli In genere è un valore statico aggiunto durante il processo di estrazione, trasformazione e caricamento dei dati (ETL), che identifica la specifica istanza di SAP S/4HANA o EWM. Esempi SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| Ultimo aggiornamento dei dati LastDataUpdate | Timestamp che indica l’ultimo aggiornamento dei dati di questo record dal sistema di origine. | ||
| Descrizione Questo attributo registra l’ultima estrazione dei dati dal sistema di origine e fornisce un contesto essenziale sulla loro attualità. In ogni analisi o Dashboard, sapere quanto sono recenti i dati è fondamentale per prendere decisioni informate. Il timestamp aiuta a capire se si stanno consultando informazioni aggiornate in tempo reale o una fotografia dei dati riferita a un momento specifico, chiarendo così quanto siano aggiornati. Perché è importante Indica quanto sono aggiornati i dati, un’informazione fondamentale per capire quanto sia attuale l’analisi del processo. Dove reperirli È un campo di metadati generato e aggiunto in genere durante il processo di estrazione dei dati (ETL). Riporta il timestamp del caricamento dei dati. Esempi 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| ID utente User | Identificativo dell’operatore di magazzino o dell’utente che ha confermato o eseguito l’attività. | ||
| Descrizione Questo attributo registra l’ID utente della persona responsabile dell’esecuzione di un’attività di magazzino. Può trattarsi dell’addetto che ha confermato un prelievo, dell’addetto all’imballaggio presso una postazione o dell’operatore del carrello elevatore che ha confermato una messa a dimora. Questi dati sono fondamentali per la Dashboard «Utilizzo delle risorse e delle attrezzature». Consentono di analizzare le prestazioni individuali o del team, individuare le esigenze di formazione e distribuire il carico di lavoro in modo più equilibrato tra il personale di magazzino. Perché è importante Associa le attività a una persona specifica, consentendo di analizzare le prestazioni per utente o team e supportando la gestione delle risorse e il bilanciamento dei carichi di lavoro. Dove reperirli Si trova in genere nei dati di conferma di un’attività di magazzino, ad esempio nel campo UNAME della tabella /SCWM/ORDIM_C. Esempi JSMITHARODRIGUEZOPERATOR_05 | |||
| Numero materiale MaterialNumber | Identificativo univoco del prodotto o materiale movimentato nell’attività di magazzino. | ||
| Descrizione Questo attributo specifica il materiale che viene spostato, prelevato, imballato o ricevuto. È una dimensione fondamentale per segmentare e analizzare le prestazioni del magazzino in base alle caratteristiche dei prodotti. Analizzare i dati per numero materiale aiuta a rispondere a domande come: quali prodotti richiedono più tempo per la messa a dimora? Quali sono più spesso coinvolti in errori di prelievo? Quali richiedono controlli di qualità? È un dato essenziale per le Dashboard «Prestazioni del ricevimento merci e della messa a dimora» e «Tempo di attraversamento del controllo qualità». Perché è importante Consente di filtrare e segmentare i dati di processo per prodotto, un aspetto fondamentale per individuare problemi specifici nella movimentazione, nello stoccaggio o nel controllo qualità. Dove reperirli Queste informazioni sono in genere disponibili nelle tabelle delle attività di magazzino, come /SCWM/ORDIM_O, collegate ai dati anagrafici dei materiali. Esempi FIN-1001RAW-2050SFIN-300-A | |||
| Ora di fine EventEndTime | Timestamp che indica quando un’attività o un evento è stato completato. | ||
| Descrizione Questo attributo registra la data e l’ora in cui è terminata una specifica attività di magazzino. Spesso coincide con l’ora di inizio per gli eventi puntuali, ma può essere diversa per le attività di durata misurabile, come l’imballaggio o il carico. Un’ora di fine distinta consente di calcolare con precisione il tempo di elaborazione delle singole attività. È fondamentale per le Dashboard delle prestazioni che analizzano la durata di fasi specifiche, come «Efficienza di prelievo e imballaggio», e aiutano a individuare le attività che richiedono più tempo. Perché è importante Consente di calcolare con precisione la durata delle singole attività, un dato essenziale per individuare le fasi che richiedono più tempo e le attività che assorbono più risorse. Dove reperirli Spesso coincide con il timestamp di inizio per gli eventi puntuali. Per le attività di lunga durata, può essere un campo distinto in tabelle come /SCWM/ORDIM_C oppure può essere ricavata da un successivo cambiamento di stato. Esempi 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| Priorità Priority | Livello di priorità assegnato all’ordine di magazzino, che ne indica l’urgenza (per esempio alta, media o bassa). | ||
| Descrizione Questo attributo classifica gli ordini di magazzino in base alla loro importanza per l’attività aziendale o alla loro urgenza. Gli ordini ad alta priorità, per esempio, possono riguardare spedizioni urgenti o forniture essenziali per la produzione e richiedere una gestione accelerata. La priorità è una dimensione fondamentale per la Dashboard e il KPI «Aderenza all’evasione degli ordini prioritari». Consente di filtrare e segmentare le prestazioni, verificando che gli ordini più urgenti vengano elaborati entro i tempi previsti e che le attività di magazzino siano in linea con gli obiettivi aziendali. Perché è importante Consente di dare priorità all’analisi e al monitoraggio, verificando che gli ordini più urgenti rispettino i livelli di servizio e contribuendo direttamente alla soddisfazione dei clienti. Dove reperirli La priorità può essere impostata nel documento di consegna sottostante e trasferita all’ordine di magazzino. Può trovarsi in tabelle come /SCWM/WHO. Esempi AltaMediaBassa | |||
| Stato del Warehouse Order WarehouseOrderStatus | Stato attuale o finale del Warehouse Order, ad esempio «Completato» o «Annullato». | ||
| Descrizione Questo attributo indica l’esito finale di un ordine di magazzino. Sapere se l’ordine è stato completato correttamente o annullato è fondamentale per analizzare i tassi di completamento e individuare le cause degli ordini non completati. È un filtro importante per molte analisi. Per esempio, per calcolare il tempo di ciclo end-to-end del magazzino, in genere si considerano solo gli ordini completati. Consente inoltre di individuare e approfondire la frequenza e le cause degli ordini annullati. Perché è importante Indica l’esito di un caso e consente di filtrare gli ordini completati e quelli annullati, un passaggio fondamentale per analizzare con precisione i tempi di ciclo e la produttività. Dove reperirli Il campo dello stato si trova in genere nella tabella di intestazione degli ordini di magazzino, /SCWM/WHO. Esempi CompletatoIn corsoAnnullato | |||
| Tipo di Warehouse Order WarehouseOrderType | Classifica il Warehouse Order in base alla sua funzione, ad esempio messa a dimora, prelievo o rifornimento interno. | ||
| Descrizione Il tipo di Warehouse Order classifica gli ordini in base alla funzione logistica svolta. Questa distinzione è fondamentale perché i diversi tipi di ordine seguono percorsi di processo differenti e hanno aspettative di prestazione diverse. Nell’analisi, questo attributo è una dimensione primaria per filtrare e confrontare i dati. Ad esempio, la Dashboard «Volume e produttività dei Warehouse Order» lo utilizza per segmentare le prestazioni dei processi in entrata (messa a dimora) e in uscita (prelievo), offrendo una visione più significativa delle operazioni di magazzino. Perché è importante Consente di segmentare l’analisi per categoria di processo, ad esempio in entrata o in uscita, e di ottenere confronti e informazioni più pertinenti. Dove reperirli È determinato dal tipo di processo di magazzino, che si trova spesso nella tabella di intestazione dei Warehouse Order /SCWM/WHO. Esempi PICKPUTWREPLSTGE | |||
| Attrezzatura utilizzata EquipmentUsed | Identificativo dell’attrezzatura, per esempio un carrello elevatore o un transpallet, utilizzata per svolgere l’attività di magazzino. | ||
| Descrizione Questo attributo specifica l’attrezzatura per la movimentazione dei materiali assegnata o utilizzata per un’attività di magazzino. Può trattarsi di un carrello elevatore specifico, di un veicolo a guida automatica (AGV) o di un particolare tipo di carrello. Questi dati sono alla base della Dashboard «Utilizzo di risorse e attrezzature» e del KPI «Tasso di utilizzo delle attrezzature». Monitorando quali attrezzature vengono impiegate per ciascuna attività e per quanto tempo, i responsabili possono analizzare i modelli di utilizzo, pianificare la manutenzione e prendere decisioni informate sulle dimensioni e sulla composizione del parco mezzi. Perché è importante Consente di analizzare l’utilizzo e l’efficienza delle attrezzature, ottimizzare la gestione del parco mezzi e individuare eventuali vincoli di risorse. Dove reperirli Se in SAP EWM è configurata la gestione delle risorse, queste informazioni possono essere archiviate nei dettagli dell’ordine o dell’attività di magazzino. Consultare la documentazione di SAP Extended Warehouse Management. Esempi CARRELLO-ELEVATORE-07AGV-02CARRELLO-15 | |||
| Data di completamento richiesta RequestedCompletionDate | Data entro cui si richiede il completamento di un ordine di magazzino ad alta priorità. | ||
| Descrizione Questo attributo definisce l’accordo sul livello di servizio (SLA) o la data obiettivo di completamento di un ordine di magazzino. È la scadenza con cui confrontare il tempo effettivo di completamento per stabilire se l’ordine è stato evaso nei tempi previsti. Questa data è essenziale per calcolare il KPI «Tasso di evasione degli ordini prioritari». Confrontando la data e l’ora effettive di completamento con la data richiesta, l’analisi misura il rispetto dei livelli di servizio e mette in evidenza gli ordini a rischio di ritardo o già in ritardo. Perché è importante Definisce lo SLA dell’ordine e fornisce il valore di riferimento per misurare l’evasione puntuale, soprattutto per gli articoli ad alta priorità. Dove reperirli Questa data deriva spesso dalla data pianificata di uscita merci o dalla data di consegna dell’ordine di consegna in uscita che ha generato l’ordine di magazzino. Consultare la documentazione di SAP Extended Warehouse Management. Esempi 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Ora di partenza pianificata PlannedDepartureTime | Ora prevista per la partenza della spedizione dal magazzino. | ||
| Descrizione Questo attributo indica l’ora prevista per la spedizione, una volta completate le attività di prelievo, imballaggio e carico. Fornisce il valore di riferimento per misurare la puntualità della fase finale del processo in uscita. Questo dato temporale è fondamentale per la Dashboard «Puntualità della spedizione». Confrontando l’ora effettiva di partenza con quella pianificata, l’analisi può individuare ritardi nelle operazioni di carico, nel coordinamento con il vettore o nella documentazione, offrendo indicazioni sull’efficienza della pianificazione logistica e dei trasporti. Perché è importante Fornisce il valore di riferimento per misurare la puntualità delle spedizioni, fondamentale per la pianificazione logistica e il rispetto degli orari concordati con i vettori. Dove reperirli Queste informazioni fanno solitamente parte del documento di trasporto o di spedizione collegato agli ordini di magazzino. Consultare la documentazione di SAP Extended Warehouse Management. Esempi 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Puntuale IsOnTime | Indicatore booleano che segnala se un ordine di magazzino è stato completato entro la data richiesta. | ||
| Descrizione Questo indicatore fornisce un esito semplice e binario sul rispetto dello SLA. Verifica se l’evento finale di completamento dell’ordine di magazzino si è verificato entro la data di completamento richiesta, inclusa. Questo attributo è essenziale per la Dashboard «Aderenza all’evasione degli ordini prioritari». Semplifica la creazione di KPI e visualizzazioni, consentendo di contare e filtrare facilmente gli ordini puntuali e quelli in ritardo. In questo modo è possibile valutare rapidamente le prestazioni rispetto agli obiettivi di servizio, senza ricorrere a calcoli complessi sulle date nel livello di analisi. Perché è importante Semplifica l’analisi delle prestazioni SLA fornendo per ogni ordine un’indicazione chiara e binaria dell’evasione puntuale o in ritardo. Dove reperirli È un attributo calcolato. La logica confronta il timestamp dell’attività «Ordine di magazzino completato» con l’attributo RequestedCompletionDate. Esempi truefalse | |||
| Quantità effettiva ActualQuantity | Quantità di materiale effettivamente confermata dall’utente per un’attività di magazzino. | ||
| Descrizione Questo attributo indica la quantità movimentata fisicamente e confermata dall’operatore di magazzino. Può trattarsi della quantità prelevata da una ubicazione, messa a dimora o conteggiata durante il ricevimento della merce. Confrontare la quantità effettiva con quella pianificata è fondamentale per l’analisi delle discrepanze di inventario. Una differenza tra i due valori evidenzia direttamente un’eccezione di processo da approfondire. È una misura diretta dell’accuratezza operativa e un dato essenziale per i KPI «Tasso di accuratezza dell’inventario» e «Tasso di errori di prelievo». Perché è importante Indica ciò che è stato effettivamente movimentato. Il confronto con la quantità pianificata misura direttamente l’accuratezza operativa e permette di individuare gli errori. Dove reperirli Si trova nei dati di conferma delle attività di magazzino, per esempio nella tabella /SCWM/ORDIM_C, spesso in un campo come NDIFF (quantità differenza) o ricavato dalle quantità confermate. Esempi 10049250 | |||
| Quantità pianificata PlannedQuantity | Quantità prevista di un materiale per una determinata attività di magazzino. | ||
| Descrizione Questo attributo rappresenta la quantità prevista di un materiale da movimentare, prelevare o ricevere in base alle istruzioni dell’attività di magazzino. È il valore di riferimento con cui confrontare la quantità effettivamente movimentata. La quantità pianificata è essenziale per la Dashboard «Analisi delle discrepanze di inventario» e per il KPI «Tasso di accuratezza dell’inventario». Confrontandola con la quantità effettiva, il sistema può individuare discrepanze riconducibili a errori di prelievo o ricevimento oppure a problemi di inserimento dei dati, contribuendo a migliorare l’accuratezza dell’inventario. Perché è importante Fornisce il valore di riferimento per calcolare l’accuratezza dell’inventario e individuare le discrepanze, un aspetto fondamentale per mantenere livelli di scorte corretti. Dove reperirli Si trova nei dati delle attività di magazzino, per esempio nella tabella /SCWM/ORDIM_O, spesso in un campo come NISTA (quantità obiettivo). Esempi 10050250 | |||
| Scostamento della quantità QuantityVariance | Differenza tra la quantità pianificata e quella effettivamente confermata per un’attività. | ||
| Descrizione Questa metrica calcolata quantifica la discrepanza rilevata durante un’attività di magazzino. Un valore diverso da zero indica che la situazione fisica non corrisponde ai dati registrati nel sistema e segnala un possibile problema, come un errore di prelievo o di ricevimento oppure un articolo danneggiato. Questo attributo supporta direttamente la Dashboard «Analisi delle discrepanze di inventario», mettendo in evidenza l’entità degli errori. Analizzare la frequenza e l’ampiezza degli scostamenti aiuta a individuare problemi sistemici nella gestione dell’inventario e nell’esecuzione delle attività, orientando gli interventi per migliorare l’accuratezza. Perché è importante Quantifica direttamente le imprecisioni nell’inventario e nelle attività operative, rendendo semplice individuare e analizzare l’entità delle discrepanze. Dove reperirli Si calcola sottraendo PlannedQuantity da ActualQuantity per ogni attività pertinente. Esempi 0-15 | |||
| Tempo di ciclo end-to-end EndToEndCycleTime | Tempo totale trascorso dalla creazione dell’ordine di magazzino al suo completamento. | ||
| Descrizione Questo KPI misura l’intera durata del ciclo di vita di un ordine di magazzino. È un indicatore di alto livello fondamentale per valutare l’efficienza e la velocità complessive delle attività di magazzino. Questa metrica è alla base della Dashboard «Tempo di ciclo end-to-end del magazzino». Monitorare il KPI nel tempo e segmentarlo per dimensioni come il tipo di ordine o il materiale aiuta a individuare inefficienze sistemiche e a misurare l’impatto delle iniziative di miglioramento sull’intera attività. Perché è importante È un KPI primario per misurare l’efficienza complessiva del processo di magazzino e offre una visione d’insieme delle prestazioni operative. Dove reperirli Si calcola a livello di caso sottraendo il timestamp del primo evento («Ordine di magazzino creato») da quello dell’ultimo evento («Ordine di magazzino completato»). Esempi 8640017280043200 | |||
| Ubicazione di magazzino StorageLocation | Ubicazione specifica all’interno del magazzino, per esempio una cella, da cui o verso cui viene movimentata la merce. | ||
| Descrizione Questo attributo identifica l’ubicazione fisica interessata da un’attività di magazzino, per esempio la cella di origine per un prelievo o quella di destinazione per una messa a dimora. Può indicare un’area generale oppure le coordinate precise di uno scaffale. L’analisi per ubicazione può far emergere informazioni utili, come le aree con un’elevata frequenza di prelievo o quelle in cui si verificano spesso ritardi o errori. Può inoltre essere utilizzata nell’analisi dell’aderenza ai percorsi di prelievo per comprendere gli spostamenti degli operatori nel magazzino. Perché è importante Fornisce il contesto geografico all’interno del magazzino e consente di analizzare l’efficienza degli spostamenti, l’accessibilità delle celle e l’ottimizzazione dei percorsi di prelievo. Dove reperirli Si trova in genere nelle tabelle delle attività di magazzino, come /SCWM/ORDIM_O, che contengono le informazioni sulle celle di origine (VLPLA) e di destinazione (NLPLA). Esempi 01-02-03STAZIONE-IMBALLAGGIO-01ZONA-USCITA-MERCI-A | |||
| Warehouse Task WarehouseTask | Identificativo univoco di una singola attività di magazzino, che costituisce una componente di un Warehouse Order. | ||
| Descrizione Una Warehouse Task è un’istruzione per eseguire uno specifico movimento di merci, ad esempio spostare un prodotto da una posizione di stoccaggio a una postazione di imballaggio. Un Warehouse Order raggruppa una o più di queste attività. Analizzare i dati a livello di attività offre una visione più dettagliata delle operazioni di magazzino. Aiuta a comprendere le prestazioni delle risorse per specifici spostamenti, individuare le posizioni di stoccaggio difficili da raggiungere o analizzare l’efficienza delle singole attività di prelievo o messa a dimora. Perché è importante Offre un livello di dettaglio più granulare per l’analisi e consente di esaminare i singoli spostamenti e le singole fasi all’interno di un Warehouse Order più ampio. Dove reperirli Si trova nelle tabelle delle attività di magazzino, come /SCWM/ORDIM_O (dati delle attività) e /SCWM/ORDIM_C (dati delle conferme). Esempi 300000451300000452300000453 | |||
Attività di gestione del magazzino
| Attività | Descrizione | ||
|---|---|---|---|
| Attività di messa a dimora confermata | Un operatore di magazzino conferma il completamento della Warehouse Task di messa a dimora, indicando che le merci sono state collocate fisicamente nella posizione di stoccaggio prevista. La conferma aggiorna in tempo reale la posizione delle scorte. | ||
| Perché è importante È una tappa fondamentale del processo in entrata, perché conferma che le scorte sono disponibili per il prelievo. I ritardi in questa fase incidono direttamente sul KPI del tempo di ciclo dal ricevimento merci alla messa a dimora. Dove reperirli Rilevato dal timestamp di conferma (campo CONFIRMED_AT) nella tabella delle Warehouse Task, /SCWM/WT. Anche lo stato dell’attività (STAT) passa a «Confermato». Acquisizione Utilizzare il timestamp di conferma della tabella /SCWM/WT per le attività di messa a dimora associate al Warehouse Order. Tipo di evento explicit | |||
| Attività di prelievo confermata | Un operatore di magazzino conferma il completamento della Warehouse Task di prelievo, indicando che le merci sono state prelevate fisicamente dalla posizione di stoccaggio. In genere, la conferma avviene tramite uno scanner RF. | ||
| Perché è importante È una tappa fondamentale dell’evasione degli ordini e incide direttamente sul tempo di ciclo dall’ordine alla spedizione. Analizzare questa attività aiuta a misurare la produttività degli addetti al prelievo e a individuare i colli di bottiglia. Dove reperirli Rilevato dal timestamp di conferma (campo CONFIRMED_AT) nella tabella delle Warehouse Task, /SCWM/WT. Lo stato dell’attività (STAT) viene aggiornato a «Confermato». Acquisizione Utilizzare il timestamp di conferma della tabella /SCWM/WT per le attività di prelievo associate al Warehouse Order. Tipo di evento explicit | |||
| Imballaggio completato | Questa attività indica che tutti gli articoli di una spedizione sono stati imballati in un’unità di movimentazione, che ora è chiusa ed etichettata. Le merci imballate sono pronte per la fase successiva, ad esempio il trasferimento nell’area di spedizione o il carico. | ||
| Perché è importante Questa tappa conclude la fase di imballaggio. È un prerequisito per il trasferimento nell’area di spedizione e per la spedizione; eventuali ritardi incidono direttamente sul tempo di attraversamento complessivo e sul KPI del tempo di attraversamento di imballaggio e trasferimento nell’area di spedizione. Dove reperirli È possibile rilevare l’evento quando lo stato dell’unità di movimentazione (HU) passa a «Chiuso» oppure quando viene confermata l’ultima attività di magazzino relativa all’imballaggio per il WO. La tabella /SCWM/HUHDR contiene le informazioni sullo stato delle HU. Acquisizione Individuare il timestamp in cui l’ultima unità di movimentazione per la spedizione associata all’ordine viene chiusa o completata. Tipo di evento inferred | |||
| Uscita merci registrata | È l’ultima fase logistica e contabile nel sistema, che rimuove formalmente le merci dalle scorte di magazzino. Indica il trasferimento della proprietà legale e la partenza ufficiale della spedizione. | ||
| Perché è importante È una tappa conclusiva fondamentale del flusso in uscita, che avvia la fatturazione e aggiorna le scorte. È un elemento chiave per misurare la puntualità delle spedizioni e il KPI del tempo di carico e spedizione. Dove reperirli Si deduce dalla registrazione di un documento di consegna in uscita associato al Warehouse Order. Verificare il flusso documentale o i campi di stato, ad esempio DGI_STAT, nella tabella /SCDL/DB_PROCH_O. Acquisizione Individuare il timestamp in cui lo stato dell’uscita merci viene impostato su «Completato» per la consegna in uscita associata. Tipo di evento explicit | |||
| Warehouse Order completato | Lo stato del Warehouse Order passa a «Completato» dopo la conferma di tutte le attività di magazzino associate. Dal punto di vista dell’esecuzione, questo chiude il pacchetto di lavoro. | ||
| Perché è importante È l’evento finale di esito positivo principale del processo. È essenziale per calcolare il tempo di ciclo end-to-end del magazzino e misurare la produttività complessiva. Dove reperirli Rilevato monitorando il cambiamento del campo di stato (STAT) in «Completato» nella tabella di intestazione dei Warehouse Order, /SCWM/WHO. È possibile utilizzare il log delle modifiche della tabella (DBTABLOG) o un campo timestamp dedicato. Acquisizione Individuare il timestamp in cui lo stato in /SCWM/WHO passa a «C» (Completato). Tipo di evento inferred | |||
| Warehouse Order creato | Questa attività indica la creazione di un Warehouse Order (WO), un pacchetto di lavoro composto da più attività di magazzino. Il sistema genera un WO per raggruppare e organizzare il lavoro degli addetti al magazzino in base a criteri quali l’area di attività, la coda o il prodotto. | ||
| Perché è importante È l’evento di inizio principale del processo di esecuzione in magazzino. Analizzare il tempo che intercorre tra la creazione e la prima azione aiuta a individuare i ritardi nell’assegnazione del lavoro e delle risorse. Dove reperirli L’evento viene rilevato dal timestamp di creazione (campo CREATED_AT) nella tabella di intestazione dei Warehouse Order, /SCWM/WHO. Acquisizione Estrarre il timestamp di creazione dalla tabella /SCWM/WHO per ogni numero di Warehouse Order (WHO). Tipo di evento explicit | |||
| Attività di messa a dimora creata | Il sistema genera un’istruzione specifica, una Warehouse Task (WT), per spostare le merci ricevute dall’area di ricevimento alla posizione di stoccaggio finale. Questa attività indica che il sistema è pronto a eseguire lo spostamento per la messa a dimora. | ||
| Perché è importante Monitorare il tempo tra la creazione e la conferma dell’attività permette di capire quanto occorre agli operatori di magazzino per prendere in carico ed eseguire le istruzioni di messa a dimora, evidenziando eventuali carenze di personale o attrezzature. Dove reperirli Rilevato dal timestamp di creazione (campo CREATED_AT) della Warehouse Task pertinente nella tabella /SCWM/WT, il cui tipo di processo indica la messa a dimora. Acquisizione Filtrare le Warehouse Task associate al Warehouse Order con un tipo di processo di messa a dimora e utilizzare il relativo timestamp di creazione. Tipo di evento explicit | |||
| Attività di prelievo creata | Il sistema genera una Warehouse Task (WT) per prelevare le merci da una posizione di stoccaggio ed evadere un ordine di consegna in uscita. Si tratta dell’istruzione impartita dal sistema all’operatore per recuperare un prodotto. | ||
| Perché è importante È l’inizio del processo fisico in uscita. Il tempo che intercorre tra la creazione e la conferma delle attività di prelievo è fondamentale per analizzare l’efficienza del prelievo e la disponibilità delle risorse. Dove reperirli Rilevato dal timestamp di creazione (campo CREATED_AT) della Warehouse Task pertinente nella tabella /SCWM/WT, il cui tipo di processo indica il prelievo. Acquisizione Filtrare le Warehouse Task associate al Warehouse Order con un tipo di processo di prelievo e utilizzare il relativo timestamp di creazione. Tipo di evento explicit | |||
| Attività di trasferimento nell’area di spedizione confermata | Un operatore di magazzino conferma lo spostamento di un’unità di movimentazione imballata dalla postazione di imballaggio o dall’area di consolidamento all’area di attesa della spedizione prevista. Le merci sono ora pronte per il carico. | ||
| Perché è importante Segna il passaggio dalle operazioni interne alla logistica in uscita. I ritardi nel trasferimento nell’area di spedizione possono disorganizzare le baie di carico e far perdere gli orari di ritiro del vettore. Dove reperirli Rilevato dal timestamp di conferma (campo CONFIRMED_AT) di una Warehouse Task (/SCWM/WT) con un tipo di processo relativo agli spostamenti verso l’area di spedizione. Acquisizione Individuare il timestamp di conferma dell’attività di trasferimento nell’area di spedizione associata all’unità di movimentazione o alla consegna. Tipo di evento explicit | |||
| Carico completato | Indica che tutte le merci della spedizione sono state caricate fisicamente sull’unità di trasporto. È un prerequisito per registrare l’uscita merci e avviare il veicolo. | ||
| Perché è importante È una tappa fondamentale prima della spedizione finale. I ritardi tra il completamento del carico e la registrazione dell’uscita merci possono indicare problemi documentali o di sistema che trattengono i vettori. Dove reperirli Si deduce dal cambiamento di stato dell’unità di trasporto (TU) o dell’ordine di consegna in uscita associato, che passa a «Carico completato». Sono rilevanti gli stati nelle tabelle /SCWM/TU e /SCDL/DB_PROCH_O. Acquisizione Rilevare il timestamp in cui lo stato della TU o dell’ordine di consegna viene aggiornato per indicare il completamento del carico. Tipo di evento inferred | |||
| Carico iniziato | Questa attività segna l’inizio del carico fisico delle merci dall’area di attesa a un camion o a un’unità di trasporto. Spesso viene avviata da un’azione dell’utente nel sistema. | ||
| Perché è importante È l’inizio dell’ultima fase fisica in magazzino. Analizzare la durata del carico aiuta a ottimizzare l’utilizzo delle baie e i tempi di permanenza dei vettori. Dove reperirli Si deduce dal cambiamento di stato dell’unità di trasporto (TU) o dell’ordine di consegna in uscita associato, che passa a «Carico iniziato». È possibile verificare la tabella /SCWM/TU_STATUS. Acquisizione Rilevare il timestamp in cui lo stato della TU o dell’ordine di consegna viene aggiornato per indicare l’inizio del carico. Tipo di evento inferred | |||
| Entrata merci registrata | Indica l’accettazione formale in magazzino delle merci provenienti da un fornitore esterno o dalla produzione. È una registrazione contabile e di magazzino fondamentale, che rende le scorte visibili e disponibili per le fasi successive, come la messa a dimora. | ||
| Perché è importante È una tappa fondamentale del processo in entrata. Il tempo che intercorre tra l’arrivo delle merci e la registrazione può segnalare arretrati nell’area di ricevimento, con ripercussioni sulla disponibilità delle scorte. Dove reperirli Si deduce dalla registrazione di un documento di consegna in entrata associato al Warehouse Order. Verificare il flusso documentale o i campi di stato, ad esempio DGRSTAT, nella tabella /SCDL/DB_PROCH_I. Acquisizione Individuare il timestamp in cui lo stato dell’entrata merci viene impostato su «Completato» per la consegna in entrata associata. Tipo di evento inferred | |||
| Imballaggio iniziato | Indica l’inizio delle attività di imballaggio, durante le quali gli articoli prelevati vengono raggruppati e collocati in contenitori di spedizione o unità di movimentazione. Spesso è la prima fase svolta presso una postazione di imballaggio. | ||
| Perché è importante Segna l’inizio della fase dei servizi a valore aggiunto. Misurare la durata dell’imballaggio aiuta a ottimizzare la disposizione delle postazioni di lavoro, il personale e i materiali. Dove reperirli Potrebbe essere necessario dedurre questo evento. È possibile ricavarlo dalla prima scansione di un articolo o di un’unità di movimentazione presso una postazione di imballaggio, spesso registrata nei log delle postazioni di lavoro o delle unità di movimentazione. Le tabelle come /SCWM/PACKSPEC e i relativi log di esecuzione possono fornire i dati necessari. Acquisizione Utilizzare il timestamp della prima conferma di una Warehouse Task relativa all’imballaggio per la consegna oppure l’ora di creazione dell’unità di movimentazione (HU) finale per la spedizione. Tipo di evento inferred | |||
| Warehouse Order annullato | Il Warehouse Order viene annullato prima che tutte le attività siano completate, impedendo di proseguire con l’esecuzione. Può accadere per indisponibilità delle scorte, modifiche agli ordini dei clienti o altre eccezioni. | ||
| Perché è importante Rappresenta un percorso di errore o un’eccezione. Analizzare la frequenza e le cause degli annullamenti aiuta a individuare problemi nelle fasi precedenti, nella pianificazione, nell’accuratezza delle scorte o nella gestione degli ordini. Dove reperirli Rilevato monitorando il cambiamento del campo di stato (STAT) in «Annullato» nella tabella di intestazione dei Warehouse Order, /SCWM/WHO. Acquisizione Individuare il timestamp in cui lo stato in /SCWM/WHO assume un valore che indica l’annullamento. Tipo di evento inferred | |||
Guide all’estrazione
Passaggi
- Prerequisito: individuare o creare le viste CDS: le principali origini dei dati sono le viste CDS standard di SAP S/4HANA per la gestione del magazzino. Le viste chiave sono
I_WarehouseOrder, per gli eventi a livello di ordine, eI_WarehouseTask, per quelli a livello di task. Per gli eventi logistici correlati servono anche altre viste, comeI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnit. Verifichi che queste viste siano attive nel sistema. - Creare una vista CDS personalizzata: per combinare i dati provenienti da più origini in un unico formato di Event Log, è necessario creare una vista CDS personalizzata. In Eclipse, utilizzi ABAP Development Tools (ADT) per creare una nuova definizione dei dati. La vista personalizzata userà
UNION ALLper unire i record delle diverse origini, ciascuno corrispondente a un’attività aziendale distinta. - Definire la struttura dell’Event Log: nella vista CDS personalizzata, definisca i campi che costituiranno le colonne dell’Event Log. Sono necessari
WarehouseOrder,ActivityName,EventTimee gli altri attributi obbligatori e consigliati. Mappi questi campi sulle viste CDS standard sottostanti. - Modellare gli eventi degli ordini di magazzino: aggiunga alla UNION le prime istruzioni
SELECT. Selezioni i dati daI_WarehouseOrderper generare l’evento 'Warehouse Order Created' usando la data e l’ora di creazione. Aggiunga poi altre istruzioniSELECTper gli eventi 'Warehouse Order Completed' e 'Warehouse Order Canceled', filtrando in base allo stato dell’ordine e utilizzando le date e le ore di conferma o modifica appropriate. - Modellare gli eventi dei task di magazzino: aggiunga istruzioni
SELECTdaI_WarehouseTask. Generi gli eventi 'Putaway Task Created' e 'Putaway Task Confirmed' filtrando le categorie di processo del magazzino relative allo stoccaggio. Analogamente, crei gli eventi 'Picking Task Created', 'Picking Task Confirmed' e 'Staging Task Confirmed' in base alle rispettive categorie di processo, utilizzando le date e le ore di creazione e conferma. - Modellare gli eventi di movimentazione delle merci: unisca le viste relative alle consegne ai task di magazzino per acquisire le movimentazioni delle merci. Per 'Goods Receipt Posted', selezioni i dati da
I_InboundDeliveryItemusandoActualGoodsMovementDateTime. Per 'Goods Issue Posted', utilizzi lo stesso campo diI_OutboundDeliveryItem, collegandolo all’ordine o al task di magazzino pertinente. - Modellare gli eventi di carico e imballaggio: selezioni i dati da
I_EWMTransportationUnitper acquisire gli eventi 'Loading Started' e 'Loading Completed' usando le relative date e ore. Per l’imballaggio, che può essere complesso, utilizzi un dato sostitutivo selezionando una vista Handling Unit: l’ora di creazione può rappresentare 'Packing Started' e l’ora di modifica dello stato può rappresentare 'Packing Completed'. Potrebbe essere necessario adattare questo passaggio al processo di imballaggio specifico. - Aggiungere annotazioni per esporre la vista CDS: aggiunga l’annotazione
@OData.publish: truealla definizione della vista CDS personalizzata. In questo modo SAP genera automaticamente un servizio OData basato sulla struttura della vista. - Attivare la vista CDS e il servizio OData: attivi la nuova definizione dei dati in ADT. Acceda quindi al sistema SAP Gateway hub e utilizzi la transazione
/IWFND/MAINT_SERVICEper individuare e attivare il servizio OData appena generato. I dati saranno così accessibili tramite un endpoint API REST. - Estrarre i dati: utilizzi la piattaforma dati di destinazione o lo strumento ETL per collegarsi all’endpoint del servizio OData attivato. Applichi i filtri direttamente nell’URI OData, ad esempio filtrando
EventTimeper limitare l’intervallo dei dati (?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Preparare i dati per il Process Mining: salvi i dati estratti in un file semplice, ad esempio CSV, con intestazioni di colonna corrispondenti agli attributi richiesti da ProcessMind (
WarehouseOrder,ActivityName,EventTimee così via). Carichi il file finale nello strumento di Process Mining.
Configurazione
- Vista CDS personalizzata: è necessario creare una vista CDS dedicata, ad esempio
Z_C_EWM_EVENTLOG_CDS, per unificare i dati degli eventi. È l’oggetto centrale per l’estrazione. - Servizio OData: il servizio OData generato dalla vista CDS personalizzata deve essere attivato. Il nome del servizio corrisponde in genere al nome della vista CDS con il suffisso
_CDS. - Filtro per intervallo di date: quando richiama l’API OData, è fondamentale applicare un filtro per data al campo
EventTime. Per un’analisi iniziale, è consigliabile un intervallo di 3-6 mesi. Senza filtro, la query potrebbe scadere o causare problemi di prestazioni. - Filtri sulle entità: per restringere ulteriormente l’intervallo dei dati, valuti l’applicazione di filtri su attributi come il numero di magazzino (
Magazzino), il tipo di ordine di magazzino (WarehouseOrderType) o materiali specifici (MaterialNumber). - Autorizzazioni di sistema: l’utente che crea la vista CDS deve disporre dell’accesso sviluppatore SAP in ADT. L’utente o l’account di servizio che richiama l’API OData deve essere autorizzato ad 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 Passaggi
- Verifichi che l’accesso diretto in lettura allo schema del database SAP EWM sia autorizzato e individui gli oggetti fisici del database che rappresentano le intestazioni degli ordini di magazzino, i task di magazzino, la cronologia degli stati degli ordini, le registrazioni di entrata e uscita merci, l’imballaggio, la messa in baia e il carico. I riferimenti logici /SCWM/WHO e /SCWM/WT sono spesso un punto di partenza, ma verifichi nel sistema gli oggetti effettivi, i campi, i codici di stato, il significato delle date e delle ore e lo schema del database.
- Richieda al responsabile tecnico SAP EWM o consulti il dizionario dei dati per ottenere la mappatura verificata dei campi. Mappi ID dell’ordine di magazzino, tipo di ordine, stato, priorità, ID del task di magazzino, categoria del task o tipo di processo, materiale, utente, data e ora di creazione, data e ora di conferma, date e ore di imballaggio, messa in baia e carico, data e ora di entrata e uscita merci, sistema di origine e data e ora dell’ultimo aggiornamento. Non presuma che un campo si trovi nella stessa tabella o che un codice di stato abbia lo stesso significato in tutte le installazioni.
- Configuri la connessione di estrazione con un account di database di sola lettura, lo schema di produzione o di reporting e valori parametrizzati per la data di inizio e di fine dell’estrazione, il nome del sistema di origine e gli eventuali filtri specifici dell’azienda. Applichi il filtro per data alla data e ora dell’evento pertinente, non solo a quella di creazione dell’ordine di magazzino, così da non escludere gli eventi che si verificano nelle fasi successive del ciclo di vita dell’ordine.
- Generi le righe degli eventi selezionando una riga per ciascuna attività richiesta in modo esplicito. La query deve utilizzare i campi di origine verificati per ogni attività e non deve affidarsi a ProcessMind per dedurre gli eventi. Se un’attività è rappresentata nella cronologia degli stati o in un Event Log applicativo anziché in un campo dell’intestazione corrente, utilizzi tale cronologia o Event Log e conservi la data e l’ora dell’evento e l’utente che lo ha eseguito.
- Normalizzi tutte le date e le ore degli eventi in un unico fuso orario, preferibilmente UTC, oppure documenti il fuso orario del server applicativo SAP. Converta i codici di stato e di processo specifici dell’origine nei nomi esatti delle attività richiesti dall’Event Log: 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 e Warehouse Order Canceled.
- Verifichi che ogni riga di output contenga
WarehouseOrder,ActivityName,EventTime,SourceSystemeLastDataUpdate. CompiliEventEndTimequando è disponibile una data e un’ora di completamento attendibili. Per gli eventi a livello di task, associ il task al relativo ordine di magazzino. Se un ordine contiene più task pertinenti, mantenga una riga per ogni evento del task, conservando l’ordine di magazzino come identificativo del caso. Se il formato di importazione di destinazione lo consente, utilizzi un criterio stabile per risolvere le parità, ad esempio l’ID del task o dell’evento di origine. - Convalidi il risultato prima dell’esportazione. Verifichi che siano presenti tutti i 14 nomi di attività quando i dati di origine contengono i corrispondenti eventi aziendali, che le date e le ore rientrino nell’intervallo richiesto, che gli ordini di magazzino non siano vuoti senza motivo e che eventuali righe duplicate siano riconducibili a più task o a ripetute modifiche di stato. Confronti i conteggi con i report operativi SAP o con un’estrazione approvata e indipendente.
- Esporti il risultato in un file delimitato compatibile con ProcessMind o come risultato di una query sul database, con un evento per riga. Mantenga esattamente i nomi di colonna richiesti, utilizzi un formato di data e ora non ambiguo come ISO 8601, racchiuda tra virgolette i valori testuali quando lo richiede il formato delimitato e includa una riga di intestazione. Carichi il file o configuri la connessione al database in ProcessMind; imposti
WarehouseOrdercome identificativo del caso,ActivityNamecome attività,EventTimecome data e ora di inizio e, se disponibile,EventEndTimecome data e ora di fine.
Configurazione
- Mappatura degli oggetti di origine: verifichi gli oggetti fisici del database e i campi relativi a ordini e task di magazzino, cronologia degli stati, movimentazioni delle merci, imballaggio, messa in baia e carico. /SCWM/WHO e /SCWM/WT possono essere riferimenti logici pertinenti, ma prima dell’implementazione è necessario confermare la rappresentazione effettiva nel database installato.
- Intervallo di date: inizi con un periodo controllato di tre-sei mesi. Per i test iniziali utilizzi un intervallo più breve, estendendolo dopo la riconciliazione. Tra un’esecuzione incrementale e l’altra includa una breve sovrapposizione per acquisire registrazioni tardive e correzioni.
- Scelta della data e ora dell’evento: utilizzi le date e le ore di creazione per le attività create, quelle di conferma per le attività confermate, quelle di registrazione per le entrate e le uscite merci e le date e ore di esecuzione verificate per imballaggio, messa in baia e carico. Non utilizzi la data e l’ora di creazione dell’ordine di magazzino per tutti gli eventi.
- Filtri: applichi solo filtri aziendali verificati, ad esempio per numero di magazzino, codice azienda, tipo di documento, tipo di ordine di magazzino, area attività, coda, stabilimento o sistema di origine. I campi relativi al codice azienda e al tipo di documento possono trovarsi in oggetti correlati e devono essere mappati nel sistema di destinazione.
- Mappatura degli stati: configuri gli esatti codici di stato o di processo SAP che identificano gli ordini di magazzino completati e annullati. Convalidi la mappatura con il responsabile funzionale EWM, poiché i codici di stato e la loro memorizzazione possono variare in base alla versione e all’implementazione.
- SourceSystem: imposti un valore stabile che identifichi l’istanza EWM di produzione o di reporting. Non lo ricavi da un campo aziendale che può essere nullo.
- LastDataUpdate: compili il campo con la data e l’ora dell’estrazione o dell’aggiornamento dell’origine, applicando lo stesso criterio a ogni riga dell’esecuzione.
- Estrazione incrementale: utilizzi un riferimento persistente basato sulla data e ora più recente estratta correttamente dall’origine, con una finestra di sovrapposizione per i record arrivati in ritardo. Elimini i duplicati utilizzando gli identificativi di origine verificati, se disponibili.
- Prestazioni: limiti subito l’intervallo di date, selezioni solo le colonne necessarie, filtri i campi indicizzati, eviti di applicare funzioni alle colonne di data e ora indicizzate nei predicati ed elabori gli intervalli ampi in lotti giornalieri o settimanali. Se consentito, utilizzi una replica per il reporting.
- Strategia di unione: verifichi la cardinalità tra ordini e task di magazzino. Eviti moltiplicazioni accidentali quando unisce dati di task, stati, materiali e unità di movimentazione. Prima dell’unione, aggreghi o selezioni il record dell’evento appropriato.
- Fusi orari: configuri il fuso orario dell’origine e la regola di conversione. Memorizzi le date e le ore in modo coerente e documenti la gestione dell’ora legale.
- Prerequisiti: autorizzazione di sola lettura sul database, accesso approvato allo schema EWM, mappature verificate nel dizionario dei dati, autorizzazione alla lettura degli oggetti operativi e storici pertinenti e configurazione di importazione ProcessMind approvata. I moduli SAP, le licenze e le autorizzazioni necessari dipendono dall’architettura EWM installata e devono essere verificati dal responsabile del sistema.
a Query di esempio 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; È pronto a iniziare?
Inizi oggi il percorso verso una gestione del magazzino ottimizzata. Utilizzi questo template per migliorare l’efficienza e accelerare l’evasione degli ordini.
Elimini gli errori di prelievo e ottimizzi oggi la gestione del magazzino
Raggiunga una precisione del 99,5% nell’inventario ed elimini i ritardi nell’evasione degli ordini in poche settimane.
Non è richiesta alcuna carta di credito e la configurazione richiede pochi minuti.