Il template dei dati per la pianificazione della produzione
Il template dei dati per la pianificazione della produzione
- Attributi consigliati per l’analisi della pianificazione della produzione
- Attività principali da monitorare nella pianificazione della produzione
- Indicazioni dettagliate per estrarre i dati da SAP S/4HANA
Attributi della pianificazione della produzione
| Nome | Descrizione | ||
|---|---|---|---|
| Attività Activity | Nome dell’evento o dell’attività specifica che si è verificata in un determinato momento del processo di pianificazione della produzione. | ||
| Descrizione Questo attributo registra le singole fasi e i traguardi del ciclo di vita dell’ordine di produzione. Alcuni esempi sono «Ordine di produzione creato», «Disponibilità dei materiali verificata», «Produzione avviata» e «Ordine chiuso contabilmente». Ogni attività corrisponde a un’azione specifica o a una modifica di stato registrata nel sistema. L’analisi della sequenza e della frequenza di queste attività è alla base del Process Mining. Consente di visualizzare il flusso del processo, individuare le deviazioni dalla procedura standard e identificare le attività che causano ritardi o richiedono frequenti rilavorazioni, come «Piano di produzione modificato». Perché è importante Definisce le fasi del processo e permette di individuare e visualizzare il flusso di lavoro effettivo della produzione e le sue varianti. Dove reperirli Ricavato dalle modifiche di stato registrate in tabelle come JEST e JCDS, dai codici di transazione utilizzati (ad esempio CO01 per la creazione) o da specifiche registrazioni di conferma in AFRU. Esempi Ordine di produzione creatoOrdine di produzione rilasciatoProduzione avviataConferma finale inseritaEntrata merci registrata | |||
| Ora di inizio StartTime | Indicazione di data e ora dell’inizio di una specifica attività o di un evento. | ||
| Descrizione Questo attributo fornisce la data e l’ora di ogni evento registrato nel processo di produzione. Costituisce la base temporale per tutte le analisi del processo basate sul tempo. L’ora di inizio è fondamentale per calcolare la durata tra le attività, misurare il tempo di ciclo complessivo di un ordine di produzione e comprendere la tempistica degli eventi. Consente di analizzare i colli di bottiglia, i tempi di attesa e il rispetto delle scadenze confrontando le date e le ore effettive con quelle pianificate. Perché è importante Fornisce il contesto cronologico di tutti gli eventi e permette di analizzare le prestazioni del processo, le durate e i colli di bottiglia. Dove reperirli Queste informazioni si trovano generalmente nelle tabelle dei documenti di modifica (CDHDR/CDPOS) per le modifiche di stato, nelle tabelle delle conferme (AFRU) per le fasi di esecuzione e nelle tabelle di testata (AFKO) per le date di creazione. Esempi 2023-10-26T09:00:00Z2023-10-26T14:30:00Z2023-10-27T08:15:00Z | |||
| Ordine di produzione ProductionOrder | Identificativo univoco di un ordine di produzione, utilizzato come identificativo principale del caso nel processo di pianificazione della produzione. | ||
| Descrizione Il numero dell’ordine di produzione è una chiave univoca generata da SAP S/4HANA per gestire e monitorare tutte le attività relative alla produzione di una determinata quantità di prodotto. Collega tutti gli eventi correlati, dalla pianificazione e dal rilascio fino all’esecuzione e alla liquidazione finale. Nel Process Mining, questo attributo è essenziale per raggruppare tutti gli eventi correlati in un’unica istanza di processo end-to-end. L’analisi per ordine di produzione consente di misurare indicatori chiave di prestazione, come il tempo di ciclo e il rispetto delle scadenze, e di individuare i colli di bottiglia che interessano specifici cicli di produzione. Perché è importante È l’attributo fondamentale che collega tutte le fasi del processo e consente un’analisi completa del ciclo di vita della produzione a livello di caso, dall’inizio alla fine. Dove reperirli È il numero dell’ordine di produzione, generalmente presente in tabelle SAP come AFKO (campo AUFNR) e AFPO. Esempi 100056710008341001299 | |||
| Sistema di origine SourceSystem | Sistema da cui sono stati estratti i dati di pianificazione della produzione. | ||
| Descrizione Questo attributo identifica la provenienza dei dati, un’informazione essenziale negli ambienti con più sistemi integrati. Per questo processo, si tratta in genere della specifica istanza SAP S/4HANA. In un contesto più ampio di analisi dei dati, conoscere il sistema di origine aiuta a garantirne l’integrità e a mantenere il contesto corretto quando si uniscono dati provenienti da fonti diverse. È un elemento fondamentale dei metadati per la governance e la tracciabilità dei dati. Perché è importante Fornisce metadati essenziali per la governance dei dati, chiarendo l’origine e il contesto dei dati di processo. Dove reperirli In genere è un valore statico aggiunto durante l’estrazione dei dati per identificare il client SAP S/4HANA e il relativo ID di sistema (SID). Esempi S4P_100S4H_PRD_200S4Q_300 | |||
| Ultimo aggiornamento dei dati LastDataUpdate | Indicazione di data e ora dell’ultimo aggiornamento o dell’ultima estrazione dei dati dal sistema di origine. | ||
| Descrizione Questo attributo registra la data e l’ora dell’estrazione più recente dei dati. È un metadato fondamentale, perché informa gli utenti sull’aggiornamento dei dati che stanno analizzando. Conoscere l’ora dell’ultimo aggiornamento è essenziale per interpretare correttamente l’analisi. Aiuta a capire se si stanno consultando informazioni in tempo reale o una fotografia dei dati riferita a un momento specifico, aspetto che incide sulla rilevanza dei risultati e delle decisioni basate sui dati. Perché è importante Permette agli utenti di sapere quanto sono aggiornati i dati, un’informazione essenziale per prendere decisioni aziendali accurate e pertinenti. Dove reperirli Questa indicazione di data e ora viene generata e aggiunta durante il processo di estrazione, trasformazione e caricamento dei dati (ETL). Esempi 2024-05-21T02:00:00Z2024-05-22T02:00:00Z2024-05-23T02:00:00Z | |||
| Centro di lavoro WorkCenter | Macchina, gruppo di macchine o area di assemblaggio responsabile di un’operazione. | ||
| Descrizione Un centro di lavoro è un’unità operativa specifica all’interno di uno stabilimento, in cui viene eseguita una fase di produzione. Può essere una singola macchina, una linea di produzione o un gruppo di dipendenti. Analizzare i dati di processo per centro di lavoro è fondamentale per individuare i colli di bottiglia legati alla capacità e ottimizzare l’allocazione delle risorse. Aiuta a capire quali centri di lavoro sono sovraccarichi o sottoutilizzati e dove si verificano più spesso ritardi durante la fase di esecuzione della produzione. Queste informazioni sono essenziali per la Dashboard «Individuazione dei colli di bottiglia nella capacità». Perché è importante Aiuta a individuare le macchine o le linee di produzione che costituiscono colli di bottiglia, così da intervenire in modo mirato sulla capacità e sull’utilizzo delle risorse. Dove reperirli Si trova nei dati delle operazioni dell’ordine di produzione, nella tabella AFVC (campo ARBPL). Esempi WC-ASSEMBLY-01WC-MILLING-05WC-PACKING | |||
| Data di fine pianificata PlannedEndDate | Data prevista per il completamento dell’ordine di produzione secondo il piano iniziale. | ||
| Descrizione La data di fine pianificata è la data entro cui dovrebbero concludersi tutte le attività di produzione relative a un ordine. Viene definita durante la fase di programmazione della produzione. Questo attributo è essenziale per misurare il rispetto delle scadenze. Confrontando la data di fine pianificata con l’indicazione di data e ora del completamento effettivo, le organizzazioni possono calcolare il KPI del tasso di rispetto del programma di produzione e individuare gli ordini in ritardo. Questa analisi è fondamentale per migliorare la precisione della pianificazione e la soddisfazione dei clienti. Perché è importante Costituisce la base di riferimento per misurare il rispetto delle scadenze e valutare la precisione della pianificazione e l’efficienza dell’esecuzione. Dove reperirli Si trova nella tabella di testata dell’ordine di produzione AFKO (campo GLTRP). Esempi 2023-11-152023-12-012024-01-20 | |||
| Numero materiale MaterialNumber | Identificativo univoco del prodotto realizzato nell’ordine di produzione. | ||
| Descrizione Il numero materiale identifica l’articolo che l’ordine di produzione deve realizzare. Collega il processo di produzione ai dati anagrafici del materiale, inclusi la distinta base (BOM) e i dati del ciclo di lavorazione. L’analisi del processo per numero materiale aiuta a individuare i prodotti più soggetti a ritardi, rilavorazioni o carenze di materiali. In questo modo è possibile ottimizzare il processo per ciascun prodotto, ad esempio modificando i parametri di pianificazione o migliorando la catena di approvvigionamento di determinati componenti. Perché è importante Consente di filtrare e analizzare i dati in base al prodotto realizzato, mettendo in luce inefficienze o colli di bottiglia specifici. Dove reperirli Si trova nella tabella delle posizioni dell’ordine di produzione AFPO (campo MATNR). Esempi RM-1001FG-2050SA-3100-B | |||
| Stabilimento Plant | Impianto o sede in cui viene eseguito l’ordine di produzione. | ||
| Descrizione Lo stabilimento è un’unità organizzativa di SAP che rappresenta un sito o un impianto di produzione. A ogni ordine di produzione viene assegnato uno stabilimento specifico, in cui si svolgono le attività produttive. Questo attributo è essenziale per confrontare le diverse sedi di produzione. Suddividere i dati di processo per stabilimento consente alle organizzazioni di confrontare le prestazioni, individuare problemi specifici di una sede o buone pratiche e comprendere le differenze regionali in termini di efficienza, capacità o rispetto degli standard. Perché è importante Consente di confrontare le prestazioni dei diversi siti produttivi, individuare e condividere le buone pratiche e affrontare i problemi specifici di ciascuna sede. Dove reperirli Si trova nella tabella di testata dell’ordine di produzione AFKO (campo DWERK). Esempi 100017102000 | |||
| Stato dell’ordine OrderStatus | Stato di elaborazione corrente dell’ordine di produzione, ad esempio creato, rilasciato o completato tecnicamente. | ||
| Descrizione Lo stato dell’ordine indica la fase complessiva del ciclo di vita dell’ordine di produzione. Riassume i diversi stati di sistema e utente assegnati all’ordine. Tra gli stati più comuni figurano CRTD (creato), REL (rilasciato), CNF (confermato), TECO (completato tecnicamente) e CLSD (chiuso). Analizzare lo stato corrente degli ordini aiuta a comprendere il lavoro in corso. Nel Process Mining, il monitoraggio nel tempo delle transizioni tra questi stati genera il registro delle attività e permette di osservare nel dettaglio il flusso del processo e il tempo trascorso in ciascuna fase. Perché è importante Fornisce una visione d’insieme della fase del ciclo di vita dell’ordine ed è fondamentale per ricostruire la sequenza delle attività nel Process Mining. Dove reperirli Ricavato dallo stato di sistema memorizzato nella tabella JEST, collegata tramite il numero oggetto in AFKO (campo OBJNR). Esempi CRTDRELTECOCLSD | |||
| Data di inizio pianificata PlannedStartDate | Data prevista per l’inizio dell’ordine di produzione secondo il piano iniziale. | ||
| Descrizione La data di inizio pianificata è la data prevista per l’avvio delle attività di produzione di un ordine. È uno dei principali risultati del processo di programmazione. Questo attributo costituisce la base di riferimento iniziale per analizzare il rispetto delle scadenze. Confrontare la data di inizio pianificata con l’ora di inizio effettiva aiuta a comprendere i ritardi nelle fasi iniziali, ad esempio quelli dovuti alla preparazione dei materiali o al rilascio dell’ordine, che possono ripercuotersi sull’intero programma di produzione. Perché è importante Fornisce la base di riferimento per misurare il rispetto dell’ora di inizio ed è fondamentale per individuare i ritardi nelle fasi precedenti alla produzione, come il rilascio dell’ordine e la disponibilità dei materiali. Dove reperirli Si trova nella tabella di testata dell’ordine di produzione AFKO (campo GSTRP). Esempi 2023-11-102023-11-252024-01-15 | |||
| È nei tempi IsOnTime | Indicatore che segnala se l’ordine di produzione è stato completato entro la data di fine pianificata. | ||
| Descrizione Questo attributo booleano calcolato misura direttamente il rispetto delle scadenze confrontando la data di completamento effettiva con quella pianificata. Fornisce un esito chiaro, sì o no, sulla puntualità di ciascun ordine di produzione. Questo attributo è alla base del KPI del tasso di rispetto del programma di produzione. Semplifica l’analisi consentendo di distinguere facilmente gli ordini completati nei tempi da quelli in ritardo e di individuare le caratteristiche o i percorsi di processo più spesso associati ai ritardi. Perché è importante Fornisce una misura chiara e semplice del rispetto delle scadenze per ciascun ordine e facilita l’analisi delle cause profonde dei ritardi. Dove reperirli Campo calcolato. Impostato su true se l’indicazione di data e ora dell’attività «Ordine completato tecnicamente» è minore o uguale al valore dell’attributo «Data di fine pianificata». Esempi truefalse | |||
| È una rilavorazione IsRework | Indicatore che segnala se l’ordine di produzione ha comportato rilavorazioni o modifiche sostanziali al piano dopo l’avvio. | ||
| Descrizione Questo attributo booleano viene ricavato per individuare gli ordini di produzione che hanno richiesto interventi correttivi o modifiche al piano dopo l’avvio della produzione. Può essere attivato da un’attività esplicita di rilavorazione o da un evento «Piano di produzione modificato» successivo a «Produzione avviata». Questo indicatore è fondamentale per calcolare il KPI del tasso di rilavorazione della produzione e per la Dashboard «Rilavorazioni e revisioni della produzione». Consente di filtrare e analizzare facilmente i casi problematici, aiutando a individuare le cause profonde dei problemi di qualità o delle deviazioni del processo che comportano costose rilavorazioni. Perché è importante Isola i casi con rilavorazioni e consente di analizzare in modo mirato i problemi di qualità, le deviazioni del processo e i costi associati, così da ridurli. Dove reperirli Campo calcolato. Impostato su true se, all’interno dello stesso caso, l’attività «Piano di produzione modificato» si verifica dopo «Produzione avviata» oppure se viene utilizzato uno specifico tipo di ordine di rilavorazione. Esempi truefalse | |||
| Ora di fine EndTime | Indicazione di data e ora del completamento di una specifica attività o di un evento. | ||
| Descrizione Questo attributo fornisce la data e l’ora di completamento di ogni evento registrato. Insieme all’ora di inizio, permette di determinare la durata delle attività. L’ora di fine è fondamentale per calcolare con precisione il tempo di elaborazione delle singole attività, un dato essenziale per analizzare la capacità e l’utilizzo delle risorse. Aiuta a distinguere il tempo di lavoro effettivo dai tempi di inattività o di attesa, consentendo di individuare i colli di bottiglia con maggiore precisione. Perché è importante Consente di calcolare con precisione la durata delle attività, un dato essenziale per analizzare l’efficienza delle risorse e individuare i colli di bottiglia del processo. Dove reperirli Per le fasi di esecuzione, si trova nelle tabelle delle conferme (AFRU). Per gli altri eventi, può coincidere con l’ora di inizio se l’evento è istantaneo. Esempi 2023-10-26T09:45:00Z2023-10-26T15:00:00Z2023-10-27T10:30:00Z | |||
| Priorità di produzione ProductionPriority | Codice o valore assegnato a un ordine di produzione per indicarne l’urgenza o l’importanza. | ||
| Descrizione I responsabili della pianificazione utilizzano la priorità di produzione per definire la sequenza e la priorità degli ordini, soprattutto quando le risorse sono limitate. In linea di principio, un ordine con priorità più alta dovrebbe essere elaborato prima di uno con priorità più bassa. L’analisi di questo attributo aiuta a verificare se le priorità assegnate vengono rispettate in produzione. La Dashboard «Coerenza delle priorità di produzione» confronta la sequenza di elaborazione con le priorità assegnate per individuare eventuali incongruenze, favorendo una maggiore disciplina nella programmazione e un migliore allineamento tra pianificazione ed esecuzione. Perché è importante Aiuta a verificare se la programmazione della produzione rispetta le priorità aziendali e se gli ordini critici vengono accelerati come previsto. Dove reperirli Spesso si tratta di un campo personalizzato o di un valore ricavato da altri parametri dell’ordine. La posizione specifica dipende dalla configurazione. Esempi AltaMediaBassa15 | |||
| Quantità confermata TotalConfirmedQuantity | Quantità totale di materiale di cui è stata confermata la produzione per l’ordine. | ||
| Descrizione Questo attributo rappresenta la quantità cumulativa di prodotti finiti o semilavorati registrata tramite le conferme di produzione. Indica l’avanzamento dell’ordine rispetto alla quantità prevista. Confrontare la quantità confermata con quella pianificata aiuta a monitorare l’avanzamento della produzione e a individuare problemi di resa o discrepanze. È una misura fondamentale della produzione realizzata e viene utilizzata in diversi calcoli delle prestazioni, tra cui il tasso di scarto e l’efficienza. Perché è importante Monitora la produzione effettiva dell’ordine ed è essenziale per seguirne l’avanzamento, calcolare la resa e individuare eventuali discrepanze. Dove reperirli Aggregata dalle registrazioni delle conferme in AFRU (campo LMNGA per la quantità prodotta). Esempi 9801000501200 | |||
| Stato di disponibilità dei materiali MaterialAvailabilityStatus | Indica se sono disponibili tutti i materiali necessari per l’ordine di produzione. | ||
| Descrizione Questo stato riflette l’esito della verifica della disponibilità dei materiali per un ordine di produzione. Può indicare che tutti i materiali sono disponibili, che ne mancano alcuni o che la verifica non è stata eseguita. Lo stato «carenza» segnala un possibile ritardo. Questo attributo è fondamentale per la Dashboard «Analisi dell’impatto delle carenze di materiali». Aiuta a quantificare i ritardi causati dall’indisponibilità dei materiali, mettendo in relazione lo stato di carenza con il tempo che intercorre tra il rilascio dell’ordine e l’inizio della produzione. Migliorare questo indicatore è essenziale per rendere più fluido il flusso di produzione. Perché è importante Spiega direttamente i ritardi tra il rilascio dell’ordine e l’inizio della produzione e aiuta a quantificare l’impatto dei problemi nella catena di approvvigionamento sulla produzione. Dove reperirli È uno stato, spesso ricavato dallo stato complessivo dei componenti. Può essere individuato nello stato di sistema (JEST), con valori come «MSPT» (carenza di materiali). Esempi DisponibileCarenzaNon verificato | |||
| Tipo di ordine OrderType | Classificazione dell’ordine di produzione che ne definisce lo scopo e ne determina le modalità di elaborazione. | ||
| Descrizione Il tipo di ordine è un elemento chiave della configurazione di SAP PP e determina il modo in cui il sistema gestisce un ordine di produzione. Definisce gli intervalli di numerazione, la selezione dei dati anagrafici, i parametri di calcolo dei costi e le regole di liquidazione. Alcuni esempi sono gli ordini di produzione standard, gli ordini di rilavorazione e gli ordini per prototipi. Analizzare il processo per tipo di ordine consente di confrontare le prestazioni e il flusso delle diverse tipologie di produzione. Può rivelare, ad esempio, se gli ordini di rilavorazione richiedono molto più tempo o se alcuni tipi di ordine sono più soggetti a modifiche della pianificazione, fornendo indicazioni utili per interventi mirati sul processo. Perché è importante Consente di segmentare l’analisi in base allo scopo aziendale dell’ordine e di confrontare la produzione standard, le rilavorazioni e gli altri processi. Dove reperirli Si trova nella tabella di testata dell’ordine di produzione AFKO (campo AUART). Esempi PP01PP03ZP01 | |||
| Utente User | ID di sistema dell’utente che ha creato, modificato o confermato un evento dell’ordine di produzione. | ||
| Descrizione Questo attributo registra l’ID utente SAP associato a una specifica transazione o modifica di stato, ad esempio il rilascio di un ordine o l’inserimento di una conferma. Consente di tracciare le azioni eseguite nel sistema. L’analisi delle attività per utente aiuta a comprendere la distribuzione del carico di lavoro, individuare esigenze di formazione e verificare il rispetto delle procedure. Può, ad esempio, evidenziare se determinati utenti intervengono spesso sulle modifiche del piano o se alcuni ritardi sono associati a specifici team. Perché è importante Consente di attribuire le responsabilità e analizzare il carico di lavoro, i comportamenti dei singoli utenti e le possibili esigenze di formazione. Dove reperirli Si trova generalmente nelle testate dei documenti di modifica (CDHDR, campo UNAME) o nelle registrazioni delle conferme (AFRU, campo PERNR per il numero del personale). Esempi CB9980000021JSMITHPLANNER01 | |||
Attività della pianificazione della produzione
| Attività | Descrizione | ||
|---|---|---|---|
| Conferma finale inserita | Questa attività registra la conferma dell’ultima operazione nel ciclo di lavorazione dell’ordine di produzione. Indica che tutte le fasi di produzione pianificate sono state completate in reparto. | ||
| Perché è importante La conferma finale è una tappa fondamentale che indica la conclusione del lavoro di produzione effettivo. Spesso viene utilizzata come punto finale più preciso per misurare il tempo di ciclo in reparto, prima della registrazione dell’entrata merci del prodotto finito. Dove reperirli Si deduce dai dati di conferma nella tabella AFRU. Corrisponde alla registrazione di conferma dell’ultima sequenza di operazioni (AFVC-VPLNR) con l’indicatore di conferma finale (AFRUD-AUERU) impostato. Acquisizione Individuare in AFRU la conferma dell’ultima operazione con l’indicatore di conferma finale impostato. Tipo di evento inferred | |||
| Entrata merci registrata | Questo evento registra l’entrata del prodotto finito dalla linea di produzione in magazzino. Aumenta formalmente il livello delle scorte del materiale prodotto. | ||
| Perché è importante È una tappa fondamentale che rappresenta il completamento della produzione. Spesso viene considerata la fine del ciclo di produzione per misurare il rispetto delle date di consegna e i tempi di attraversamento complessivi. Dove reperirli È una registrazione contabile esplicita nelle tabelle dei documenti materiale MSEG (livello posizione) e MKPF (livello intestazione), in genere con tipo movimento 101. I documenti sono collegati all’ordine di produzione. Acquisizione Individuare in MSEG il documento materiale collegato all’ordine con tipo movimento 101. Tipo di evento explicit | |||
| Ordine completato tecnicamente | È una fase amministrativa di chiusura che impedisce ulteriori modifiche logistiche all’ordine, come movimenti merci o conferme. Dal punto di vista logistico, l’ordine è considerato completato. | ||
| Perché è importante TECO è il punto finale definitivo del processo di produzione ed è fondamentale per calcolare il tempo di ciclo complessivo dell’ordine. Segnala che tutte le attività logistiche sono terminate e che l’ordine è pronto per la liquidazione contabile. Dove reperirli L’evento viene attivato da un utente che imposta lo stato TECO (Technically Completed). La modifica di stato viene registrata nella tabella JCDS con la relativa data e ora. Acquisizione Data e ora della modifica di stato a 'TECO' nella tabella JCDS. Tipo di evento inferred | |||
| Ordine di produzione creato | È la creazione iniziale dell’ordine di produzione nel sistema, che costituisce la richiesta formale di produrre una quantità specifica di un prodotto. L’evento viene registrato esplicitamente quando un utente salva un nuovo ordine, impostandone lo stato iniziale su CRTD (Created). | ||
| Perché è importante Segna l’inizio del ciclo di vita dell’ordine di produzione. Analizzare il tempo che intercorre tra la creazione e il rilascio aiuta a individuare ritardi amministrativi o di pianificazione prima che la produzione venga programmata formalmente. Dove reperirli L’evento è registrato nella tabella AUFK (dati anagrafici dell’ordine) con la data di creazione (ERDAT). Lo stato di creazione (CRTD) è registrato nelle tabelle JEST e JCDS, collegate tramite il numero oggetto dell’ordine (OBJNR). Acquisizione Data e ora ricavate da AUFK-ERDAT o dal registro delle modifiche di stato a 'CRTD' in JCDS. Tipo di evento explicit | |||
| Ordine di produzione rilasciato | È una tappa fondamentale in cui l’ordine di produzione viene approvato e reso disponibile per l’esecuzione in reparto. Il rilascio consente di avviare il prelievo dei materiali, le conferme e le altre attività di esecuzione. | ||
| Perché è importante Questo evento segna l’avvio ufficiale del processo di produzione eseguibile ed è un riferimento importante per misurare i tempi di attraversamento. Il tempo che intercorre tra la creazione e il rilascio è un KPI fondamentale dell’efficienza preproduttiva. Dove reperirli Il rilascio viene avviato esplicitamente da un utente o da un processo di sistema e imposta lo stato REL. La modifica di stato viene registrata con data e ora nella tabella JCDS. Spesso la data di rilascio è memorizzata anche in AFKO-FTRMI. Acquisizione Data e ora della modifica di stato a 'REL' nella tabella JCDS. Tipo di evento inferred | |||
| Piano di produzione modificato | Rappresenta una modifica significativa apportata all’ordine di produzione dopo il rilascio, ad esempio una variazione delle quantità, delle date o della distinta base. L’evento viene rilevato analizzando i documenti delle modifiche. | ||
| Perché è importante Modifiche frequenti possono indicare instabilità nella pianificazione o una domanda variabile. Questa attività costituisce la base del KPI sul tasso di revisione del piano di produzione e aiuta a individuare le fonti di variabilità del processo. Dove reperirli Si deduce dai registri delle modifiche nelle tabelle CDHDR (intestazione del documento di modifica) e CDPOS (voci del documento di modifica) per l’oggetto dell’ordine di produzione (AUFK o AFPO). Le modifiche apportate dopo la data di rilascio sono considerate revisioni. Acquisizione Individuare le modifiche ai campi principali (ad esempio quantità e date) in CDHDR/CDPOS successive al rilascio. Tipo di evento inferred | |||
| Produzione avviata | Indica l’inizio delle attività di produzione fisica per l’ordine. In genere si deduce dalla prima conferma di reparto o dal primo prelievo di materiali registrato per l’ordine. | ||
| Perché è importante Questa attività segna il passaggio dalla pianificazione all’esecuzione. È essenziale per monitorare il rispetto del programma, confrontando la data di avvio effettiva con quella pianificata. Dove reperirli È un evento dedotto, in genere ricavato dalla data e ora più antiche di un movimento merci registrato nella tabella MSEG (tipo movimento 261) o di una conferma oraria nella tabella AFRU, associate all’ordine. Acquisizione Data e ora più antiche per l’ordine, ricavate da AFRU (conferme) o MSEG (movimenti merci). Tipo di evento inferred | |||
| Conferma di produzione inserita | Rappresenta la registrazione dell’avanzamento di una specifica operazione dell’ordine di produzione. Comprende l’inserimento delle quantità prodotte, degli scarti e del tempo impiegato presso un centro di lavoro. | ||
| Perché è importante Le conferme offrono visibilità in tempo reale sull’avanzamento in reparto e sono essenziali per monitorare lo stato della produzione. Analizzarne frequenza e tempistiche aiuta a seguire il flusso e a individuare i ritardi tra le operazioni. Dove reperirli Ogni conferma viene registrata esplicitamente nella tabella AFRU (conferme di completamento dell’ordine), con data e ora (BUDAT, UZEIT) e i dettagli dell’operazione. Acquisizione Registrata come documento nella tabella AFRU. Tipo di evento explicit | |||
| Disponibilità dei materiali verificata | Rappresenta l’azione del sistema o dell’utente che verifica se tutti i componenti richiesti per l’ordine di produzione sono disponibili nelle quantità necessarie e nei tempi previsti. In genere si tratta di un controllo automatico al momento della creazione o del rilascio dell’ordine, oppure di una verifica manuale che aggiorna lo stato dell’ordine. | ||
| Perché è importante Individuare tempestivamente le carenze di materiali è fondamentale per pianificare in modo proattivo. Tracciare questa attività aiuta a capire in che misura la disponibilità dei materiali incide sulla possibilità di rilasciare gli ordini e avviare la produzione nei tempi previsti. Dove reperirli L’evento si deduce dallo stato dell’ordine. Uno stato come MACM (Material committed) o una modifica della data di disponibilità dei materiali (AFKO-MSERF) indica che è stata eseguita una verifica. Anche l’assenza dello stato di carenza di materiali (MSPT) può indicare che i materiali sono disponibili. Acquisizione Si deduce dalle modifiche di stato relative all’impegno dei materiali o dall’esecuzione della transazione COMAC. Tipo di evento inferred | |||
| Fabbisogni di capacità pianificati | Questa attività consiste nel pianificare le operazioni dell’ordine di produzione e verificare la disponibilità di capacità nei centri di lavoro richiesti. Il sistema valuta il carico di capacità dei centri di lavoro e, se configurato, lo livella per determinare le date di produzione. | ||
| Perché è importante Questa fase è fondamentale per garantire un programma di produzione realizzabile. Analizzarne la durata e i risultati aiuta a individuare i colli di bottiglia legati alla capacità e a migliorare l’accuratezza della pianificazione delle risorse. Dove reperirli In genere si deduce dallo stato di sistema che indica che l’ordine è stato pianificato, ad esempio SETC (Scheduling carried out). Anche la compilazione delle date di inizio e fine pianificate (AUFK-GSTRP, AUFK-GLTRP) segnala il completamento di questa attività. Acquisizione Si deduce dalla compilazione delle date pianificate in AUFK/AFKO o da uno stato relativo alla pianificazione in JEST. Tipo di evento inferred | |||
| Ordine chiuso contabilmente | È la fase conclusiva in cui l’ordine viene liquidato e non sono più possibili registrazioni contabili. Segna la fine del ciclo di vita dell’ordine dal punto di vista del controllo di gestione e della contabilità. | ||
| Perché è importante Anche se spesso non rientra nell’analisi strettamente produttiva, questa attività offre una visione completa dall’inizio alla fine. Può aiutare ad analizzare il tempo che intercorre tra il completamento logistico (TECO) e la chiusura contabile. Dove reperirli L’evento viene attivato da un utente che imposta lo stato CLSD (Closed). La modifica di stato viene registrata nella tabella JCDS con la relativa data e ora. Acquisizione Data e ora della modifica di stato a 'CLSD' nella tabella JCDS. Tipo di evento inferred | |||
| Ordine di produzione annullato | Rappresenta l’annullamento di un ordine di produzione prima del suo completamento. È uno stato finale alternativo che indica che il processo non è andato a buon fine. | ||
| Perché è importante Analizzare gli ordini annullati può far emergere problemi nella pianificazione della domanda, nei dati anagrafici o nel processo di vendita. Un tasso elevato di annullamenti può indicare problemi sistemici da affrontare. Dove reperirli Si deduce dall’impostazione dello stato di sistema CACL (Cancellation) nella tabella JCDS. Anche un indicatore di cancellazione (AUFK-LOEKZ) può segnalare l’annullamento. Acquisizione Data e ora della modifica di stato a 'CACL' in JCDS o dell’impostazione dell’indicatore di cancellazione in AUFK. Tipo di evento inferred | |||
| Si è verificata un’interruzione imprevista | Questo evento calcolato rappresenta un periodo di inattività significativo durante l’esecuzione della produzione. Non corrisponde a un evento esplicito del sistema, ma viene ricavato individuando intervalli di tempo prolungati tra conferme di produzione consecutive. | ||
| Perché è importante Aiuta a monitorare le interruzioni impreviste, come guasti ai macchinari o problemi di qualità. Individuare interruzioni frequenti o prolungate è fondamentale per migliorare la stabilità e la produttività del reparto. Dove reperirli Si calcola analizzando le date e gli orari delle attività consecutive 'Conferma di produzione inserita' nella tabella AFRU. Un intervallo superiore a una soglia predefinita viene segnalato come interruzione imprevista. Acquisizione Calcolare la differenza di tempo tra le date e gli orari di conferme consecutive (AFRU-BUDAT/UZEIT). Tipo di evento calculated | |||
| Si è verificata una carenza di materiali | Questo evento indica che il processo di produzione è stato rallentato o interrotto perché uno o più componenti necessari non erano disponibili. Il sistema imposta uno stato specifico sull’ordine per segnalare la situazione. | ||
| Perché è importante Monitorare le carenze di materiali è fondamentale per l’analisi del loro impatto. Consente di quantificare i ritardi causati da problemi nella catena di approvvigionamento e di migliorare la pianificazione dei materiali. Dove reperirli Si deduce dall’attivazione dello stato 'MSPT' (Material shortage) per l’ordine di produzione. La data e l’ora della modifica di stato sono disponibili nella tabella JCDS. Acquisizione Data e ora della modifica di stato a 'MSPT' nella tabella JCDS. Tipo di evento inferred | |||
Guide all’estrazione
Passaggi
- Verifica dei prerequisiti: Verifichi di disporre di un utente SAP S/4HANA con le autorizzazioni necessarie per accedere alle viste Core Data Services (CDS) richieste. Le viste necessarie sono
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatuseI_ChangeDocument. È inoltre necessario accedere a un ambiente di esecuzione SQL collegato al database SAP HANA, ad esempio SAP HANA Studio, DBeaver o uno strumento ETL esterno. - Identificazione dei dettagli del sistema: Annoti l’identificativo del sistema di origine da utilizzare per l’attributo
SourceSystem. Si tratta di un nome logico definito per identificare la provenienza dei dati, ad esempioS4H_PROD. - Impostazione dei parametri di estrazione: Prima di eseguire la query, definisca i parametri principali, tra cui le date di inizio e fine del periodo di estrazione e gli eventuali filtri specifici, come
PlantoProductionOrderType, per delimitare l’ambito dei dati. - Preparazione della query SQL: Copi la query SQL completa fornita nella sezione
querynel client SQL o nello strumento di estrazione dati scelto. - Configurazione dei segnaposto: Sostituisca nella query i valori segnaposto con i parametri specifici, inclusi
_StartDate,_EndDatee l’identificativo del sistema di origine. Adatti la soglia per l’eventoUnplanned Halt Occurred(ad esempio,'24:00:00') al contesto aziendale. - Esecuzione della query di estrazione: Esegua lo script SQL configurato sul database del sistema SAP S/4HANA. Per grandi volumi di dati relativi a periodi estesi, valuti di eseguire l’estrazione in intervalli più brevi, ad esempio mese per mese, per evitare problemi di prestazioni.
- Revisione iniziale dei dati: Al termine dell’esecuzione della query, effettui un rapido controllo dei risultati. Verifichi il numero di righe, la presenza di tutte le colonne e che la colonna
Attivitàcontenga diversi eventi previsti. - Convalida dei dati: Segua i passaggi descritti nella sezione
validationStepsper una convalida più approfondita. Confronti alcuni ordini di produzione con i relativi dettagli nel sistema SAP tramite la transazioneCO03, per verificare l’accuratezza dell’Event Log estratto. - Esportazione in CSV: Esporti il risultato finale in un file CSV. Verifichi che la codifica del file sia UTF-8 per evitare problemi con i caratteri.
- Preparazione al caricamento: Verifichi che le intestazioni delle colonne CSV corrispondano ai nomi degli attributi richiesti:
ProductionOrder,Attività,StartTime,SourceSystemeLastDataUpdate. Prima di caricare il file, si assicuri che la colonnaStartTimeutilizzi un formato timestamp standard, ad esempio ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Configurazione
- Viste CDS principali: L’estrazione si basa principalmente su un insieme di viste CDS standard che presentano in modo strutturato e orientato al business i dati delle tabelle SAP sottostanti. Le viste principali includono:
I_ProductionOrder: dati di intestazione ed eventi di creazione.I_ProdOrdConfirmation: tutte le conferme delle operazioni.I_MaterialDocumentItem: movimenti di merci, come prelievi e carichi.I_ObjectStatus: modifiche di stato dell’ordine di produzione.I_ChangeDocumente viste associate: modifiche ai campi principali dell’ordine.
- Filtro per intervallo di date: È fondamentale applicare un filtro per intervallo di date per gestire il volume dei dati. La query fornita utilizza la
CreationDatedell’ordine di produzione. Per un’analisi iniziale, in genere si considera un periodo di 3-6 mesi. - Filtri aziendali principali: Per circoscrivere ulteriormente il set di dati, applichi filtri basati su attributi organizzativi o anagrafici rilevanti. Tra i filtri più comuni:
Plant: per analizzare uno specifico stabilimento.ProductionOrderType: per concentrarsi sulla produzione standard, sulle rilavorazioni o su altri tipi di ordine.CompanyCode: per limitare i dati a una specifica entità giuridica.
- Soglia per le interruzioni non pianificate: La query include una logica per ricavare gli eventi
Unplanned Halt Occurred. Per definire quando un intervallo tra operazioni è significativo, è necessario impostare una soglia temporale. Il valore va configurato in base ai tempi di ciclo tipici della produzione e alle regole aziendali. - Prerequisiti di autorizzazione: L’utente SAP che esegue la query deve disporre delle autorizzazioni di visualizzazione per tutte le viste CDS e le tabelle sottostanti. Le autorizzazioni mancanti producono un risultato vuoto o incompleto.
Query di esempio sql
WITH BaseOrders AS (
SELECT
ProductionOrder,
Material AS MaterialNumber,
ProductionPlant AS Plant,
CreationDate,
CreationTime,
BasicEndDate AS PlannedEndDate,
TechnicalCompletionDate,
LastChangeDateTime
FROM I_ProductionOrder
-- P_CreationDateFrom and P_CreationDateTo are placeholders for your date range
WHERE CreationDate BETWEEN '[_StartDate]' AND '[_EndDate]'
-- Add other filters as needed, for example:
-- AND ProductionPlant IN ('[Your_Plant_1]', '[Your_Plant_2]')
-- AND ProductionOrderType = '[Your_Order_Type]'
)
SELECT
bo.ProductionOrder,
'Production Order Created' AS Activity,
TO_TIMESTAMP(bo.CreationDate || ' ' || LPAD(bo.CreationTime, 6, '0'), 'YYYYMMDD HH24MISS') AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
'CRTD' AS OrderStatus
FROM BaseOrders bo
UNION ALL
-- System status changes like Released, Technically Completed, Closed, Cancelled, Material Shortage
SELECT
os.ObjectInternalID AS ProductionOrder,
CASE os.SystemStatus
WHEN 'I0002' THEN 'Production Order Released'
WHEN 'I0043' THEN 'Material Availability Checked' -- Status: MACM (Material committed)
WHEN 'I0045' THEN 'Order Technically Completed'
WHEN 'I0046' THEN 'Order Financially Closed'
WHEN 'I0047' THEN 'Production Order Cancelled'
WHEN 'I0010' THEN 'Material Shortage Occurred' -- Status: MSPT (Material shortage)
END AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus IN ('I0002', 'I0043', 'I0045', 'I0046', 'I0047', 'I0010') AND os.StatusIsInactive = ''
UNION ALL
-- Production Started, inferred from the first goods issue or first confirmation
SELECT
s.ProductionOrder,
'Production Started' AS Activity,
s.StartEventTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
s.MaterialNumber,
s.Plant,
NULL AS WorkCenter,
s.PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
bo.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime)) AS StartEventTime,
ROW_NUMBER() OVER(PARTITION BY bo.ProductionOrder ORDER BY MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime))) as rn
FROM BaseOrders bo
LEFT JOIN I_MaterialDocumentItem gm ON bo.ProductionOrder = gm.ProductionOrder AND gm.GoodsMovementType IN ('261', '262') -- Goods Issue
LEFT JOIN I_ProdOrdConfirmation cf ON bo.ProductionOrder = cf.ProductionOrder
WHERE gm.ProductionOrder IS NOT NULL OR cf.ProductionOrder IS NOT NULL
GROUP BY bo.ProductionOrder, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate
) s
WHERE s.rn = 1
UNION ALL
-- Production Confirmation Entered (for each confirmation)
SELECT
cf.ProductionOrder,
'Production Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
UNION ALL
-- Final Confirmation Entered
SELECT
cf.ProductionOrder,
'Final Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
WHERE cf.IsFinalConfirmation = 'X'
UNION ALL
-- Unplanned Halt Occurred (derived from gaps between confirmations)
SELECT
ProductionOrder,
'Unplanned Halt Occurred' AS Activity,
PreviousConfirmationTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
MaterialNumber,
Plant,
WorkCenter,
PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
cf.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
cf.WorkCenter,
cf.ConfirmationDateTime,
LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime) AS PreviousConfirmationTime,
(SECONDS_BETWEEN(LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime), cf.ConfirmationDateTime) / 3600.0) as HoursDiff
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
) AS gaps
WHERE gaps.HoursDiff > 24 -- Configurable threshold in hours, e.g. 24 hours
UNION ALL
-- Goods Receipt Posted
SELECT
gm.ProductionOrder,
'Goods Receipt Posted' AS Activity,
gm.PostingTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_MaterialDocumentItem gm
JOIN BaseOrders bo ON gm.ProductionOrder = bo.ProductionOrder
WHERE gm.GoodsMovementType = '101'
UNION ALL
-- Capacity Requirements Planned (using Release event as a proxy)
SELECT
os.ObjectInternalID AS ProductionOrder,
'Capacity Requirements Planned' AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus = 'I0002' AND os.StatusIsInactive = '' -- Status 'REL' (Released)
UNION ALL
-- Production Plan Adjusted
SELECT
ch.ObjectValue AS ProductionOrder,
'Production Plan Adjusted' AS Activity,
ch.CreationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL as WorkCenter,
bo.PlannedEndDate,
NULL as OrderStatus
FROM I_ChangeDocument AS ch
JOIN BaseOrders bo ON ch.ObjectValue = bo.ProductionOrder
WHERE ch.ChangeDocumentObject = 'PRODORDER'
-- Monitoring changes in key fields like Total Quantity (GAMNG) or Basic Finish Date (GLTRP)
AND ch.FieldName IN ('GAMNG', 'GLTRP')
GROUP BY ch.ObjectValue, ch.CreationDateTime, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate Passaggi
- Verifichi che sia disponibile l’accesso diretto in lettura allo schema SAP HANA contenente i dati degli ordini di produzione e individui il proprietario dello schema, la gestione del client, le convenzioni per i timestamp e il modello di autorizzazione. Utilizzi SAP HANA Database Explorer o un client SQL approvato. Prima di finalizzare la query, convalidi la release SAP S/4HANA pertinente e l’ambito di pianificazione della produzione attivato.
- Configuri la stringa di connessione, le credenziali, il nome dello schema, il valore del client, le date di inizio e fine dell’estrazione e i filtri specifici per l’azienda. La query seguente utilizza AUFK, AFPO, JEST e JCDS e fa riferimento anche a AFKO, AFVC, AFRU, RESB, MSEG, CDHDR e CDPOS. Prima dell’esecuzione, verifichi la disponibilità di questi oggetti e le definizioni dei relativi campi nel sistema, poiché possono variare in base alle estensioni, alle viste di compatibilità e alla release.
- Esegua la query in SAP HANA Database Explorer o nello strumento di esecuzione SQL approvato. La query crea una riga per ogni attività estratta esplicitamente e combina le righe delle attività con UNION ALL. Non si basa su ProcessMind per dedurre gli eventi.
- Riveda i dati di origine e, se necessario, adatti le espressioni contrassegnate come specifiche del sistema. In particolare, verifichi i codici di stato utilizzati per la disponibilità dei materiali, la pianificazione della capacità, il completamento tecnico, la chiusura contabile e l’annullamento. Verifichi inoltre l’oggetto e i nomi dei campi dei documenti di modifica usati per individuare gli adeguamenti del piano di produzione.
- Convalidi la conversione dei timestamp e il filtro per client. I sistemi SAP possono memorizzare date e orari in campi separati; alcune installazioni utilizzano UTC, altre l’ora locale dello stabilimento o del sistema. Si assicuri che i valori risultanti di StartTime utilizzino un unico fuso orario coerente e che le date SAP non valide o iniziali siano escluse.
- Esporti il risultato in un file semplice supportato da ProcessMind, preferibilmente CSV o testo delimitato UTF-8. Mantenga esattamente i nomi delle colonne di output ProductionOrder, Attività, StartTime, SourceSystem, LastDataUpdate, MaterialNumber, Plant, WorkCenter, PlannedEndDate e OrderStatus.
- Ordini le righe esportate per ProductionOrder e StartTime, definendo un ordinamento secondario deterministico per i timestamp uguali, se la procedura di caricamento lo consente. Mantenga una riga per evento, comprese le conferme e le modifiche di stato ripetute, quando corrispondono a record di origine distinti.
- Carichi il file in ProcessMind e mappi ProductionOrder come identificativo del caso, Attività come attività e StartTime come timestamp dell’evento. In base alla configurazione di importazione di ProcessMind, mappi le colonne rimanenti come attributi dell’evento o del caso. Verifichi che tutte le 14 etichette delle attività siano mantenute esattamente come prodotte dalla query.
Configurazione
- Intervallo di date: inizi con un periodo mobile di tre-sei mesi. Per i test iniziali utilizzi un periodo più breve e lo estenda solo dopo aver convalidato il numero di righe e le prestazioni della query.
- Parametri di estrazione: sostituisca [Your schema name], [Your client], [Extraction start date], [Extraction end date] e [Your source system name] con i valori del proprio ambiente. Applichi i filtri specifici dell’azienda solo dopo aver verificato i campi organizzativi e i relativi valori.
- Configurazione degli stati: verifichi gli esatti codici di stato SAP e gli identificativi degli oggetti di stato utilizzati nel sistema per CRTD, rilascio, disponibilità dei materiali, pianificazione della capacità, completamento tecnico, chiusura contabile e annullamento. I profili di stato e le personalizzazioni possono modificare i codici disponibili.
- Documenti di modifica: verifichi l’oggetto dei documenti di modifica degli ordini di produzione, i nomi delle tabelle e dei campi e i formati dei valori utilizzati per quantità, date, distinte base e cicli di lavorazione. La query considera i record corrispondenti in CDHDR e CDPOS come evidenza di un adeguamento del piano.
- Gestione dei timestamp: uniformi tutti i timestamp di origine a un unico fuso orario. Verifichi se i campi di data e ora sono memorizzati separatamente, se i timestamp sono locali o UTC e come vengono rappresentate le date iniziali.
- Prestazioni: limiti l’estrazione in base alla data di creazione dell’ordine o a un’altra data indicizzata dell’ordine di produzione, applichi un filtro per client, selezioni solo le colonne necessarie ed esegua l’operazione in una fascia oraria adatta alla reportistica. Per grandi volumi, estragga i dati per mese o per intervallo di ordini di produzione e salvi i risultati in modo incrementale.
- Oggetti del database: verifichi che AUFK, AFPO, JEST, JCDS, AFKO, AFVC, AFRU, RESB, MSEG, CDHDR e CDPOS siano disponibili e leggibili nello schema selezionato. Se una vista o un campo differisce nella release in uso, lo sostituisca con l’oggetto corrispondente rilasciato o approvato.
- Autorizzazioni: l’accesso richiesto comprende l’autorizzazione alla lettura dello schema e degli oggetti SAP HANA selezionati, oltre al permesso di eseguire query SQL. In base alle procedure di governance, potrebbero essere necessarie anche autorizzazioni applicative SAP.
- Ambito funzionale: per il periodo selezionato devono essere conservati i dati di pianificazione ed esecuzione della produzione, i movimenti di magazzino, la cronologia degli stati e i documenti di modifica. I record archiviati o eliminati non verranno restituiti.
- Mappatura in ProcessMind: configuri ProductionOrder come identificativo del caso, Attività come attività e StartTime come timestamp dell’evento. Non presuma che ProcessMind ricavi le attività mancanti dagli attributi.
Query di esempio sql
WITH
params AS (
SELECT
'[Your client]' AS mandt,
TO_DATE('[Extraction start date]', 'YYYY-MM-DD') AS date_from,
TO_DATE('[Extraction end date]', 'YYYY-MM-DD') AS date_to,
'[Your source system name]' AS source_system,
CURRENT_UTCTIMESTAMP AS last_data_update
FROM DUMMY
),
orders AS (
SELECT
a.mandt,
LTRIM(a.aufnr, '0') AS production_order,
a.aufnr AS production_order_raw,
a.erdat AS order_created_date,
a.erfzeit AS order_created_time,
a.auart AS order_type,
a.werks AS plant,
a.objnr AS object_number,
a.ktext AS order_text,
p.matnr AS material_number,
p.psmng AS planned_quantity,
p.wemng AS delivered_quantity,
k.gstrp AS planned_start_date,
k.gltrp AS planned_end_date,
k.ftrmi AS release_date,
k.ftrmp AS release_time,
k.gamng AS total_order_quantity,
k.plnbez AS header_material_number,
k.plnty AS task_list_type,
k.plnnr AS task_list_group,
k.plnal AS task_list_group_counter
FROM [Your schema name].AUFK a
LEFT JOIN [Your schema name].AFPO p
ON p.mandt = a.mandt
AND p.aufnr = a.aufnr
LEFT JOIN [Your schema name].AFKO k
ON k.mandt = a.mandt
AND k.aufnr = a.aufnr
CROSS JOIN params x
WHERE a.mandt = x.mandt
AND a.erdat >= x.date_from
AND a.erdat < ADD_DAYS(x.date_to, 1)
),
status_history AS (
SELECT
o.*,
j.stat,
j.inact,
j.chgnr,
j.udate AS status_date,
j.utime AS status_time,
c.usnam AS status_user,
c.chind AS status_change_indicator
FROM orders o
INNER JOIN [Your schema name].JEST j
ON j.mandt = o.mandt
AND j.objnr = o.object_number
LEFT JOIN [Your schema name].JCDS c
ON c.mandt = j.mandt
AND c.objnr = j.objnr
AND c.stat = j.stat
AND c.chgnr = j.chgnr
WHERE COALESCE(j.inact, '') <> 'X'
),
operations AS (
SELECT
o.production_order,
o.mandt,
v.vornr,
v.arbid,
v.steus,
v.ltxa1,
v.aufpl,
v.aplzl,
cr.name1 AS work_center
FROM orders o
LEFT JOIN [Your schema name].AFVC v
ON v.mandt = o.mandt
AND v.aufpl = (SELECT MAX(k2.aufpl) FROM [Your schema name].AFKO k2 WHERE k2.mandt = o.mandt AND k2.aufnr = o.production_order_raw)
LEFT JOIN [Your schema name].CRHD cr
ON cr.mandt = v.mandt
AND cr.objty = 'A'
AND cr.objid = v.arbid
),
confirmations AS (
SELECT
o.production_order,
o.mandt,
r.rmzhl,
r.vornr,
r.budat AS confirmation_date,
r.ersda AS entry_date,
r.erzet AS entry_time,
r.ism01,
r.ism02,
r.ism03,
r.ism04,
r.ism05,
r.ism06,
r.xmnga,
r.stzhl,
r.stzhl AS reversal_counter,
r.lmnga AS confirmed_quantity,
r.xmnge AS scrap_quantity,
r.aufpl,
r.aplzl,
op.work_center
FROM orders o
INNER JOIN [Your schema name].AFRU r
ON r.mandt = o.mandt
AND r.aufnr = o.production_order_raw
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.mandt = r.mandt
AND op.vornr = r.vornr
),
first_confirmation AS (
SELECT production_order, MIN(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM confirmations
GROUP BY production_order
),
last_confirmation AS (
SELECT production_order, MAX(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS final_time
FROM confirmations
GROUP BY production_order
),
first_goods_issue AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('261', '262')
GROUP BY o.production_order
),
first_receipt AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS receipt_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('101', '102')
GROUP BY o.production_order
),
plan_changes AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(h.udate, 'YYYYMMDD') || LPAD(TO_VARCHAR(h.utime), 6, '0'), 'YYYYMMDDHH24MISS')) AS adjustment_time
FROM orders o
INNER JOIN [Your schema name].CDHDR h
ON h.mandant = o.mandt
AND h.objectid = o.production_order_raw
INNER JOIN [Your schema name].CDPOS p
ON p.mandant = h.mandant
AND p.objectclas = h.objectclas
AND p.objectid = h.objectid
AND p.changenr = h.changenr
WHERE h.objectclas IN ('ORDER', 'PP_ORDER')
AND p.tabname IN ('AFKO', 'AFPO', 'AFVC', 'RESB')
AND p.fname IN ('GAMNG', 'PSMNG', 'GSTRP', 'GLTRP', 'MATNR', 'BDMNG', 'VORNR')
GROUP BY o.production_order
),
status_times AS (
SELECT
production_order,
MIN(CASE WHEN stat IN ('I0001', 'CRTD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS created_status_time,
MIN(CASE WHEN stat IN ('I0002', 'REL') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS released_time,
MIN(CASE WHEN stat IN ('I0003', 'MATC', 'MANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS material_available_time,
MIN(CASE WHEN stat IN ('I0004', 'CAPC', 'CAPA') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS capacity_planned_time,
MIN(CASE WHEN stat IN ('I0045', 'TECO') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS technically_completed_time,
MIN(CASE WHEN stat IN ('I0046', 'CLSD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS financially_closed_time,
MIN(CASE WHEN stat IN ('I0076', 'DLFL', 'CANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS cancelled_time
FROM status_history
GROUP BY production_order
),
material_shortages AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(j.status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(j.status_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS shortage_time
FROM status_history j
INNER JOIN orders o
ON o.production_order = j.production_order
WHERE j.stat IN ('I0042', 'MANC', 'MSHT')
GROUP BY o.production_order
),
capacity_times AS (
SELECT
production_order,
MIN(COALESCE(released_time, created_status_time)) AS capacity_time
FROM status_times
GROUP BY production_order
),
base_attributes AS (
SELECT
o.production_order,
o.material_number,
o.plant,
COALESCE(op.work_center, '') AS work_center,
o.planned_end_date,
COALESCE(st.stat, '') AS current_status
FROM orders o
LEFT JOIN status_history st
ON st.production_order = o.production_order
AND st.inact = ''
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.vornr = (SELECT MIN(op2.vornr) FROM operations op2 WHERE op2.production_order = o.production_order)
),
events AS (
SELECT o.production_order, 'Production Order Created' AS activity, COALESCE(st.created_status_time, TO_TIMESTAMP(TO_VARCHAR(o.order_created_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(o.order_created_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time FROM orders o LEFT JOIN status_times st ON st.production_order = o.production_order
UNION ALL
SELECT production_order, 'Material Availability Checked', material_available_time FROM status_times WHERE material_available_time IS NOT NULL
UNION ALL
SELECT production_order, 'Capacity Requirements Planned', capacity_time FROM capacity_times WHERE capacity_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Released', released_time FROM status_times WHERE released_time IS NOT NULL
UNION ALL
SELECT o.production_order, 'Production Started', LEAST(COALESCE(fc.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS')), COALESCE(fg.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS'))) FROM orders o LEFT JOIN first_confirmation fc ON fc.production_order = o.production_order LEFT JOIN first_goods_issue fg ON fg.production_order = o.production_order WHERE fc.start_time IS NOT NULL OR fg.start_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Confirmation Entered', TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') FROM confirmations
UNION ALL
SELECT production_order, 'Material Shortage Occurred', shortage_time FROM material_shortages WHERE shortage_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Plan Adjusted', adjustment_time FROM plan_changes WHERE adjustment_time IS NOT NULL
UNION ALL
SELECT c.production_order, 'Unplanned Halt Occurred', ADD_SECONDS(c.confirmation_time, 1) FROM (SELECT production_order, TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') AS confirmation_time, LEAD(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) OVER (PARTITION BY production_order ORDER BY entry_date, entry_time, rmzhl) AS next_confirmation_time FROM confirmations) c WHERE c.next_confirmation_time IS NOT NULL AND SECONDS_BETWEEN(c.confirmation_time, c.next_confirmation_time) >= 86400
UNION ALL
SELECT production_order, 'Final Confirmation Entered', final_time FROM last_confirmation WHERE final_time IS NOT NULL
UNION ALL
SELECT production_order, 'Goods Receipt Posted', receipt_time FROM first_receipt WHERE receipt_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Technically Completed', technically_completed_time FROM status_times WHERE technically_completed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Financially Closed', financially_closed_time FROM status_times WHERE financially_closed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Cancelled', cancelled_time FROM status_times WHERE cancelled_time IS NOT NULL
)
SELECT
e.production_order AS "ProductionOrder",
e.activity AS "Activity",
e.start_time AS "StartTime",
p.source_system AS "SourceSystem",
p.last_data_update AS "LastDataUpdate",
b.material_number AS "MaterialNumber",
b.plant AS "Plant",
NULLIF(b.work_center, '') AS "WorkCenter",
b.planned_end_date AS "PlannedEndDate",
b.current_status AS "OrderStatus"
FROM events e
INNER JOIN base_attributes b
ON b.production_order = e.production_order
CROSS JOIN params p
WHERE e.start_time IS NOT NULL
ORDER BY e.production_order, e.start_time, e.activity; È pronto a iniziare?
Inizi a migliorare l’efficienza della pianificazione della produzione. Prepari i dati con questo template e individui opportunità concrete di ottimizzazione.
Inizi oggi a ottimizzare la pianificazione della produzione
Individui ed elimini i colli di bottiglia, riducendo del 30% il tempo di ciclo della produzione.
Non è richiesta alcuna carta di credito