Il Suo Template dei dati per la pianificazione della produzione
Il Suo Template dei dati per la pianificazione della produzione
- Attributi consigliati per l'analisi della pianificazione della produzione
- Attività chiave della pianificazione della produzione da monitorare
- Istruzioni dettagliate per l'estrazione dei dati da SAP S/4HANA
Attributi della pianificazione della produzione
| Nome | Descrizione | ||
|---|---|---|---|
| Attività Activity | Il nome dell’evento o dell’attività specifica che si è verificata in un determinato momento all’interno del processo di pianificazione della produzione. | ||
| Descrizione Questo Attributo registra le diverse fasi e i principali traguardi del ciclo di vita dell’ordine di produzione. Tra gli esempi rientrano «Ordine di produzione creato», «Disponibilità del materiale verificata», «Produzione avviata» e «Ordine chiuso finanziariamente». Ogni attività rappresenta un’azione specifica o una modifica di stato documentata nel sistema. L’analisi della sequenza e della frequenza di queste attività costituisce il nucleo 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 consente di individuare e visualizzare il Workflow di produzione effettivo e le sue varianti. Dove reperirlo Derivato dalle modifiche di stato nelle tabelle JEST e JCDS, dai codici transazione utilizzati, ad esempio CO01 per la creazione, oppure da specifici record di conferma in AFRU. Esempi Ordine di produzione creatoOrdine di produzione rilasciatoProduzione avviataConferma finale inseritaEntrata merci registrata | |||
| Ora di inizio StartTime | Il timestamp che indica quando è iniziata una specifica attività o un determinato evento. | ||
| Descrizione Questo Attributo fornisce la data e l’ora di ogni evento registrato nel processo produttivo. Costituisce la base temporale per tutte le analisi di 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 della pianificazione confrontando i timestamp effettivi con le date previste. Perché è importante Fornisce il contesto cronologico di tutti gli eventi e rende possibile analizzare le prestazioni del processo, le durate e i colli di bottiglia. Dove reperirlo 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 dei processi per numero di ordine di produzione consente di misurare KPI fondamentali, come il tempo di ciclo e il rispetto della pianificazione, nonché di identificare i colli di bottiglia che incidono su specifici cicli produttivi. Perché è importante È l’Attributo fondamentale che collega tutte le fasi del processo e consente un’analisi completa, a livello di caso, del ciclo di vita della produzione dall’inizio alla fine. Dove reperirlo È il numero dell’ordine di produzione, generalmente presente in tabelle SAP come AFKO (campo AUFNR) e AFPO. Esempi 100056710008341001299 | |||
| Sistema di origine SourceSystem | Il sistema dal quale sono stati estratti i dati di pianificazione della produzione. | ||
| Descrizione Questo Attributo identifica l’origine dei dati, un’informazione essenziale negli ambienti con più sistemi integrati. Per questo processo, si tratta generalmente della specifica istanza SAP S/4HANA. In un contesto più ampio di analisi dei dati, conoscere il sistema di origine contribuisce a garantire l’integrità dei dati e a fornire 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, assicurando che l’origine e il contesto dei dati di processo siano chiari. Dove reperirlo Si tratta generalmente di 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 | Il timestamp che indica quando i dati sono stati aggiornati o estratti l’ultima volta dal sistema di origine. | ||
| Descrizione Questo Attributo registra la data e l’ora dell’estrazione dei dati più recente. È un elemento fondamentale dei metadati, perché informa gli utenti sull’aggiornamento dei dati analizzati. Conoscere l’ora dell’ultimo aggiornamento è essenziale per interpretare correttamente l’analisi. Consente di capire se si stanno visualizzando informazioni in tempo reale oppure un’istantanea riferita a un determinato momento, aspetto che incide sulla rilevanza dei risultati e delle decisioni basate sui dati. Perché è importante Assicura che gli utenti siano consapevoli dell’attualità dei dati, un aspetto fondamentale per prendere decisioni aziendali accurate e pertinenti. Dove reperirlo Questo timestamp viene generato e aggiunto 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 | La macchina specifica, il gruppo di macchine o l’area di assemblaggio responsabile di un’operazione. | ||
| Descrizione Un centro di lavoro rappresenta un’unità operativa specifica all’interno di uno stabilimento, nella quale viene eseguita una fase di produzione. Può trattarsi di una singola macchina, di una linea produttiva o di un gruppo di dipendenti. L’analisi dei dati di processo per centro di lavoro è fondamentale per identificare i colli di bottiglia della capacità e ottimizzare l’allocazione delle risorse. Aiuta a capire quali centri di lavoro sono sovraccarichi, quali sono sottoutilizzati e dove si verificano più frequentemente i ritardi durante la fase di esecuzione della produzione. È un’analisi essenziale per la Dashboard Capacity Bottleneck Identification. Perché è importante Aiuta a individuare le macchine o le linee produttive che costituiscono colli di bottiglia, consentendo interventi mirati per migliorare la capacità e l’utilizzo delle risorse. Dove reperirlo Presente nei dati delle operazioni di un ordine di produzione, nella tabella AFVC (campo ARBPL). Esempi WC-ASSEMBLY-01WC-MILLING-05WC-PACKING | |||
| Data di fine pianificata PlannedEndDate | La data di completamento prevista per l’ordine di produzione secondo il piano iniziale. | ||
| Descrizione La data di fine pianificata è la data obiettivo entro la quale si prevede di completare tutte le attività produttive di un ordine. Viene determinata durante la fase di programmazione della pianificazione della produzione. Questo Attributo è essenziale per misurare il rispetto della pianificazione. Confrontando la data di fine pianificata con il timestamp effettivo di completamento, le organizzazioni possono calcolare il KPI Production Schedule Adherence Rate e identificare gli ordini in ritardo. Questa analisi è fondamentale per migliorare l’accuratezza della pianificazione e la soddisfazione dei clienti. Perché è importante Costituisce il riferimento per misurare il rispetto della pianificazione e aiuta a valutare l’accuratezza della pianificazione e l’efficienza dell’esecuzione. Dove reperirlo Presente nella tabella di testata dell’ordine di produzione AFKO (campo GLTRP). Esempi 2023-11-152023-12-012024-01-20 | |||
| Numero materiale MaterialNumber | L’identificativo univoco del prodotto fabbricato nell’ordine di produzione. | ||
| Descrizione Il numero materiale specifica l’articolo che l’ordine di produzione deve realizzare. Collega il processo produttivo ai dati anagrafici del materiale, inclusi la distinta base (BOM) e le informazioni sul ciclo di lavorazione. L’analisi del processo per numero materiale aiuta a individuare se determinati prodotti sono più soggetti a ritardi, rilavorazioni o carenze di materiale. Ciò consente di ottimizzare il processo in base al prodotto, ad esempio adeguando i parametri di pianificazione o migliorando la catena di approvvigionamento per componenti specifici. Perché è importante Consente di filtrare e analizzare i dati in base al prodotto realizzato, evidenziando inefficienze o colli di bottiglia specifici del prodotto. Dove reperirlo Presente nella tabella delle posizioni dell’ordine di produzione AFPO (campo MATNR). Esempi RM-1001FG-2050SA-3100-B | |||
| Stabilimento Plant | Lo stabilimento o il sito produttivo in cui viene eseguito l’ordine di produzione. | ||
| Descrizione Lo stabilimento è un’unità organizzativa di SAP che rappresenta un sito o una struttura produttiva. Ogni ordine di produzione viene assegnato a uno stabilimento specifico, nel quale si svolgeranno le attività di produzione. Questo Attributo è fondamentale per confrontare le prestazioni di diversi siti produttivi. Segmentando i dati di processo per stabilimento, le organizzazioni possono confrontare le prestazioni, individuare problemi o best practice specifici di un sito e comprendere le differenze regionali in termini di efficienza, capacità o rispetto degli standard. Perché è importante Consente di confrontare le prestazioni di diversi siti produttivi, aiutando a individuare e condividere le best practice o ad affrontare problemi specifici di una determinata sede. Dove reperirlo Presente nella tabella di testata dell’ordine di produzione AFKO (campo DWERK). Esempi 100017102000 | |||
| Stato dell’ordine OrderStatus | Lo stato di elaborazione corrente dell’ordine di produzione, ad esempio Creato, Rilasciato o Tecnicamente completato. | ||
| Descrizione Lo stato dell’ordine indica la fase complessiva del ciclo di vita dell’ordine di produzione. È un riepilogo dei diversi stati di sistema e utente applicati all’ordine. Gli stati più comuni includono CRTD (Creato), REL (Rilasciato), CNF (Confermato), TECO (Tecnicamente completato) e CLSD (Chiuso). L’analisi dello stato corrente degli ordini è utile per comprendere il quadro del lavoro in corso. Nel Process Mining, il monitoraggio nel tempo delle transizioni tra questi stati genera il registro delle attività e consente di visualizzare in dettaglio il flusso del processo e la durata di ciascuna fase. Perché è importante Fornisce una visione di alto livello della fase del ciclo di vita dell’ordine ed è fondamentale per ricavare la sequenza delle attività necessaria al Process Mining. Dove reperirlo Derivato dallo stato di sistema memorizzato nella tabella JEST, collegata tramite il numero oggetto presente in AFKO (campo OBJNR). Esempi CRTDRELTECOCLSD | |||
| Data di inizio pianificata PlannedStartDate | La data di inizio prevista per l’ordine di produzione secondo il piano iniziale. | ||
| Descrizione La data di inizio pianificata è la data obiettivo entro la quale si prevede di avviare le attività produttive di un ordine. È uno dei principali risultati del processo di programmazione. Questo Attributo fornisce il riferimento iniziale per l’analisi del rispetto della pianificazione. Il confronto tra la data di inizio pianificata e l’ora di inizio effettiva aiuta a comprendere i ritardi nelle fasi iniziali, come quelli dovuti alla preparazione dei materiali o al rilascio dell’ordine, che possono ripercuotersi sull’intera tempistica di produzione. Perché è importante Fornisce il riferimento per misurare il rispetto dell’orario di inizio, un elemento fondamentale per identificare i ritardi nelle fasi di pre-produzione, come il rilascio dell’ordine e la disponibilità dei materiali. Dove reperirlo Presente nella tabella di testata dell’ordine di produzione AFKO (campo GSTRP). Esempi 2023-11-102023-11-252024-01-15 | |||
| È puntuale IsOnTime | Un indicatore che segnala se l’ordine di produzione è stato completato entro o prima della data di fine pianificata. | ||
| Descrizione Questo Attributo booleano calcolato misura direttamente il rispetto della pianificazione confrontando la data effettiva di completamento con la data di fine pianificata. Fornisce un risultato chiaro e binario sulla puntualità di ciascun ordine. Questo Attributo costituisce la base per il KPI Production Schedule Adherence Rate. Semplifica l’analisi consentendo di segmentare facilmente gli ordini puntuali e quelli in ritardo e di individuare le caratteristiche o i percorsi di processo più frequentemente associati ai ritardi. Perché è importante Fornisce una misura chiara e semplice del rispetto della pianificazione per ogni ordine e facilita l’analisi delle cause profonde dei ritardi. Dove reperirlo Campo calcolato. Impostato su true se il timestamp dell’attività «Ordine tecnicamente completato» è minore o uguale all’Attributo «Data di fine pianificata». Esempi truefalse | |||
| È una rilavorazione IsRework | Un indicatore che segnala se un ordine di produzione ha comportato una rilavorazione o modifiche significative del piano dopo l’avvio. | ||
| Descrizione Questo Attributo booleano viene derivato per identificare gli ordini di produzione sottoposti ad azioni correttive o modifiche del piano dopo l’avvio della produzione. Può essere attivato da un’attività esplicita di rilavorazione oppure da un evento «Piano di produzione modificato» verificatosi dopo «Produzione avviata». Questo indicatore è fondamentale per calcolare il KPI Production Rework Rate e per la Dashboard Production Rework and Revisions. Consente di filtrare e analizzare facilmente i casi problematici, aiutando a individuare le cause profonde dei problemi di qualità o delle deviazioni di processo che comportano costose rilavorazioni. Perché è importante Isola i casi con rilavorazione e consente un’analisi mirata per comprendere e ridurre i problemi di qualità, le deviazioni di processo e i costi associati. Dove reperirlo Campo calcolato. Impostato su true se un’attività «Piano di produzione modificato» si verifica dopo un’attività «Produzione avviata» nello stesso caso, oppure se viene utilizzato uno specifico tipo di ordine di rilavorazione. Esempi truefalse | |||
| Ora di fine EndTime | Il timestamp che indica quando una specifica attività o un determinato evento è stato completato. | ||
| Descrizione Questo Attributo fornisce la data e l’ora di completamento di ogni evento registrato. Insieme all’ora di inizio, consente 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 dal tempo di inattività o di attesa, permettendo di identificare con maggiore accuratezza i colli di bottiglia. Perché è importante Consente di calcolare con precisione la durata delle attività, un elemento essenziale per analizzare l’efficienza delle risorse e identificare i colli di bottiglia del processo. Dove reperirlo Presente nelle tabelle delle conferme (AFRU) per le fasi di esecuzione. 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 | Un codice o valore assegnato a un ordine di produzione per indicarne l’urgenza o l’importanza. | ||
| Descrizione La priorità di produzione viene utilizzata da pianificatori e programmatori per ordinare e dare priorità agli ordini, soprattutto quando le risorse sono limitate. Idealmente, un ordine con priorità più alta dovrebbe essere elaborato prima di uno con priorità inferiore. L’analisi di questo Attributo aiuta a valutare se le priorità assegnate vengono rispettate in produzione. La Dashboard Production Prioritization Consistency confronta la sequenza di elaborazione con la priorità assegnata per individuare le incoerenze, contribuendo a migliorare la disciplina di programmazione e l’allineamento tra pianificazione ed esecuzione. Perché è importante Aiuta a determinare se la programmazione della produzione segue le priorità aziendali, assicurando che gli ordini critici vengano accelerati come previsto. Dove reperirlo Spesso si tratta di un campo personalizzato o di un valore basato su altri parametri dell’ordine. La posizione specifica dipende dalla configurazione. Esempi AltaMediaBassa15 | |||
| Quantità confermata TotalConfirmedQuantity | La quantità totale di materiale confermata come prodotta per l’ordine. | ||
| Descrizione Questo Attributo rappresenta la quantità cumulativa di prodotti finiti o semilavorati registrata tramite le conferme di produzione. Tiene traccia dell’avanzamento dell’ordine verso l’obiettivo di completamento. Il confronto tra la quantità confermata e quella pianificata aiuta a monitorare l’avanzamento della produzione e a individuare problemi o discrepanze di rendimento. È una misura fondamentale dell’output e viene utilizzata in diversi calcoli delle prestazioni, inclusi i tassi di scarto e di efficienza. Perché è importante Tiene traccia dell’output effettivo dell’ordine di produzione, un elemento essenziale per monitorare l’avanzamento, calcolare il rendimento e individuare le discrepanze. Dove reperirlo Aggregato dai record delle conferme in AFRU (campo LMNGA per la quantità di rendimento). Esempi 9801000501200 | |||
| Stato della disponibilità dei materiali MaterialAvailabilityStatus | Indica se tutti i materiali necessari per l’ordine di produzione sono disponibili. | ||
| Descrizione Questo stato riflette il risultato della verifica della disponibilità dei materiali eseguita per un ordine di produzione. Può indicare che tutti i materiali sono disponibili, che alcuni mancano oppure che la verifica non è stata eseguita. Uno stato di «carenza» è un indicatore importante di possibili ritardi. Questo Attributo è fondamentale per la Dashboard Material Shortage Impact Analysis. Aiuta a quantificare i ritardi causati dall’indisponibilità dei materiali, correlando lo stato di carenza al tempo trascorso tra il rilascio dell’ordine e l’avvio della produzione. Il miglioramento di questo indicatore è essenziale per rendere più fluido il flusso produttivo. Perché è importante Spiega direttamente i ritardi tra il rilascio dell’ordine e l’avvio della produzione e aiuta a quantificare l’impatto dei problemi della catena di approvvigionamento sulla produzione. Dove reperirlo Si tratta di uno stato, spesso derivato dallo stato complessivo dei componenti materiali. Può essere presente nello stato di sistema (JEST), con stati come «MSPT» (Carenza di materiale). Esempi DisponibileCarenzaNon verificato | |||
| Tipo di ordine OrderType | Una classificazione dell’ordine di produzione che ne definisce lo scopo e ne controlla l’elaborazione. | ||
| Descrizione Il tipo di ordine è un elemento di configurazione fondamentale in SAP PP, che determina il modo in cui l’ordine di produzione viene gestito dal sistema. Controlla gli intervalli di numerazione, la selezione dei dati anagrafici, i parametri di calcolo dei costi e le regole di liquidazione. Tra gli esempi rientrano gli ordini di produzione standard, gli ordini di rilavorazione e gli ordini per prototipi. L’analisi del processo per tipo di ordine consente di confrontare le prestazioni e il flusso di diversi tipi di processo produttivo. Può evidenziare, ad esempio, se gli ordini di rilavorazione richiedono molto più tempo o se determinati tipi di ordine sono più soggetti a modifiche della pianificazione, fornendo indicazioni utili per interventi di miglioramento mirati. Perché è importante Consente di segmentare l’analisi in base allo scopo aziendale dell’ordine e di confrontare la produzione standard, la rilavorazione e altri processi. Dove reperirlo Presente nella tabella di testata dell’ordine di produzione AFKO (campo AUART). Esempi PP01PP03ZP01 | |||
| Utente User | L’ID di sistema dell’utente che ha creato, modificato o confermato un evento dell’ordine di produzione. | ||
| Descrizione Questo Attributo acquisisce l’ID utente SAP associato a una specifica transazione o modifica di stato, come il rilascio di un ordine o l’inserimento di una conferma. Fornisce la tracciabilità delle azioni eseguite nel sistema. L’analisi delle attività per utente aiuta a comprendere la distribuzione del carico di lavoro, individuare esigenze formative e garantire la conformità alle procedure. Può, ad esempio, evidenziare se determinati utenti intervengono frequentemente nelle modifiche del piano o se i ritardi sono associati a specifici team. Perché è importante Fornisce responsabilità e tracciabilità e consente di analizzare il carico di lavoro, i comportamenti specifici degli utenti e le possibili opportunità di formazione. Dove reperirlo Presente generalmente nelle testate dei documenti di modifica (CDHDR, campo UNAME) o nei record delle conferme (AFRU, campo PERNR per il numero del personale). Esempi CB9980000021JSMITHPLANNER01 | |||
Attività di pianificazione della produzione
| Attività | Descrizione | ||
|---|---|---|---|
| Conferma finale inserita | Questa attività segna la conferma dell'ultima operazione nel ciclo di lavorazione dell'ordine di produzione. Indica che tutte le fasi produttive pianificate sono state completate nell'area produttiva. | ||
| Perché è importante La conferma finale è una tappa fondamentale che indica la conclusione del lavoro produttivo fisico. Viene spesso utilizzata come punto finale più preciso per misurare il tempo di ciclo nell'area produttiva, prima del ricevimento finale delle merci. Dove reperirlo Viene dedotta dai dati delle conferme nella tabella AFRU. Viene identificata come la registrazione di conferma relativa all'ultima sequenza operativa (AFVC-VPLNR) con l'indicatore 'conferma finale' (AFRUD-AUERU) impostato. Acquisizione Individuare l'ultima conferma dell'operazione in AFRU con il flag di conferma finale impostato. Tipo di evento inferred | |||
| Entrata merci registrata | Questo evento registra il ricevimento del prodotto finito dalla linea di produzione nel magazzino. Aumenta formalmente il livello delle scorte del materiale prodotto. | ||
| Perché è importante Si tratta di una tappa fondamentale che rappresenta il completamento della produzione. Viene spesso considerata la fine del ciclo produttivo per misurare la puntualità delle consegne e il tempo di attraversamento complessivo. Dove reperirlo Si tratta di una registrazione contabile esplicita, memorizzata nelle tabelle dei documenti materiali MSEG (livello posizione) e MKPF (livello testata), in genere con tipo di movimento 101. Questi documenti sono collegati all'ordine di produzione. Acquisizione Individuare in MSEG il documento materiale collegato all'ordine con tipo di movimento 101. Tipo di evento explicit | |||
| Ordine completato tecnicamente | Si tratta di 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 rappresenta il punto finale definitivo del processo produttivo ed è fondamentale per calcolare il tempo di ciclo complessivo dell'ordine di produzione. Indica che tutte le attività logistiche sono terminate e che l'ordine è pronto per il regolamento contabile. Dove reperirlo Viene attivato da un utente che imposta lo stato TECO (Completato tecnicamente). L'evento viene acquisito come modifica di stato nella tabella JCDS, con il relativo timestamp. Acquisizione Timestamp della modifica di stato a 'TECO' nella tabella JCDS. Tipo di evento inferred | |||
| Ordine di produzione creato | Si tratta della creazione iniziale dell'ordine di produzione nel sistema, che costituisce la richiesta formale di produrre una quantità specificata di un prodotto. Questo evento viene acquisito esplicitamente quando un utente salva un nuovo ordine, impostandone lo stato iniziale su CRTD (Creato). | ||
| 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 reperirlo Questo evento viene registrato nella tabella AUFK (dati anagrafici dell'ordine) con la data di creazione (ERDAT). Lo stato di creazione (CRTD) viene registrato nelle tabelle JEST e JCDS, collegate tramite il numero oggetto dell'ordine (OBJNR). Acquisizione Timestamp proveniente da AUFK-ERDAT o dal log della modifica di stato a 'CRTD' in JCDS. Tipo di evento explicit | |||
| Ordine di produzione rilasciato | Si tratta di una tappa fondamentale, nella quale l'ordine di produzione viene approvato e reso disponibile per l'esecuzione nell'area produttiva. Il rilascio consente di avviare i prelievi dei materiali, le conferme e le altre fasi di esecuzione. | ||
| Perché è importante Questo evento segna l'inizio ufficiale del processo produttivo eseguibile ed è un punto critico per la misurazione dei tempi di attraversamento. Il tempo tra la creazione e il rilascio è un KPI fondamentale dell'efficienza preproduttiva. Dove reperirlo Il rilascio viene attivato esplicitamente da un utente o da un job di sistema e determina l'impostazione dello stato REL. La modifica di stato viene registrata con un timestamp nella tabella JCDS. La data di rilascio è spesso memorizzata anche in AFKO-FTRMI. Acquisizione Timestamp 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 suo rilascio, ad esempio una variazione della quantità, delle date o della distinta base. L'evento viene acquisito analizzando i documenti delle modifiche. | ||
| Perché è importante Modifiche frequenti possono indicare instabilità della pianificazione o una domanda volatile. Questa attività costituisce la base per il KPI Production Plan Revision Rate e aiuta a individuare le fonti della variabilità del processo. Dove reperirlo Viene dedotto dai log delle modifiche registrati nelle tabelle CDHDR (testata del documento di modifica) e CDPOS (posizioni del documento di modifica) per l'oggetto dell'ordine di produzione (AUFK o AFPO). Le modifiche apportate dopo la data di rilascio sono considerate variazioni del piano. Acquisizione Individuare le modifiche in CDHDR/CDPOS per i campi chiave, ad esempio quantità e date, successive all'evento di rilascio. Tipo di evento inferred | |||
| Produzione avviata | Indica l'inizio delle attività produttive fisiche relative all'ordine. In genere viene dedotto dalla prima conferma nell'area produttiva o dal primo prelievo di componenti registrato a fronte dell'ordine. | ||
| Perché è importante Questa attività segna il passaggio dalla pianificazione all'esecuzione. È essenziale per monitorare l'aderenza al programma, confrontando la data di inizio effettiva con quella pianificata. Dove reperirlo Si tratta di un evento dedotto. In genere deriva dal timestamp più antico di un movimento merci registrato nella tabella MSEG, con tipo di movimento 261, oppure di una registrazione di conferma dei tempi nella tabella AFRU associata all'ordine. Acquisizione Timestamp più antico proveniente da AFRU (conferme) o MSEG (movimenti merci) per l'ordine. 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 nell'area produttiva e sono fondamentali per monitorare lo stato della produzione. Analizzare la frequenza e la tempistica delle conferme aiuta a monitorare il flusso e individuare i ritardi tra le operazioni. Dove reperirlo Ogni conferma viene registrata esplicitamente come voce nella tabella AFRU (conferme di completamento dell'ordine), con un timestamp (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 volta a verificare che tutti i componenti necessari per l'ordine di produzione siano disponibili nelle quantità richieste e nei tempi previsti. Si tratta in genere di un controllo automatico eseguito alla creazione o al rilascio dell'ordine, oppure di un controllo manuale che aggiorna lo stato dell'ordine. | ||
| Perché è importante Individuare tempestivamente le carenze di materiali è fondamentale per una pianificazione proattiva. Monitorare questa attività aiuta a comprendere in che modo la disponibilità dei materiali influisca sulla possibilità di rilasciare gli ordini e avviare la produzione puntualmente. Dove reperirlo Viene dedotto dallo stato dell'ordine. Uno stato come MACM (Materiale impegnato) o una modifica della data di disponibilità del materiale (AFKO-MSERF) indica che è stato eseguito un controllo. Anche l'assenza dello stato di carenza di materiale (MSPT) può indicare la disponibilità. Acquisizione Deducibile 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à comprende la programmazione delle operazioni dell'ordine di produzione e la verifica della disponibilità di capacità nei centri di lavoro richiesti. Il sistema valuta i carichi di capacità dei centri di lavoro e, se configurato, li livella, determinando le date di produzione. | ||
| Perché è importante Questa fase è fondamentale per garantire un programma di produzione realizzabile. Analizzarne la durata e gli esiti aiuta a individuare i colli di bottiglia della capacità e a migliorare l'accuratezza della pianificazione delle risorse. Dove reperirlo In genere viene dedotto dallo stato di sistema che indica che l'ordine è stato programmato, ad esempio SETC (Programmazione eseguita). Anche la compilazione delle date di inizio e fine pianificate (AUFK-GSTRP, AUFK-GLTRP) segnala il completamento di questa attività. Acquisizione Deducibile dalla compilazione delle date pianificate in AUFK/AFKO o dalla presenza di uno stato relativo alla programmazione in JEST. Tipo di evento inferred | |||
| Ordine chiuso contabilmente | È la fase finale di chiusura, nella quale l'ordine viene regolato e non sono più possibili ulteriori registrazioni contabili. Indica la conclusione del ciclo di vita dell'ordine dal punto di vista del controlling e della contabilità. | ||
| Perché è importante Sebbene spesso esuli dall'ambito della pura analisi della produzione, questa attività offre una visione completa end-to-end. Può aiutare ad analizzare il tempo che intercorre tra il completamento logistico (TECO) e la chiusura contabile. Dove reperirlo Viene attivato da un utente che imposta lo stato CLSD (Chiuso). L'evento viene acquisito come modifica di stato nella tabella JCDS, con il relativo timestamp. Acquisizione Timestamp 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 e non positivo del processo. | ||
| Perché è importante Analizzare gli ordini annullati può far emergere problemi nella pianificazione della domanda, nei dati anagrafici o nel processo di vendita. Tassi elevati di annullamento possono indicare problemi sistemici che richiedono un intervento. Dove reperirlo Viene dedotto dall'impostazione dello stato di sistema CACL (Annullamento) nella tabella JCDS. In alternativa, anche un flag di eliminazione (AUFK-LOEKZ) può indicare l'annullamento. Acquisizione Timestamp della modifica di stato a 'CACL' in JCDS o impostazione del flag di eliminazione in AUFK. Tipo di evento inferred | |||
| Si è verificata un'interruzione non pianificata | Questo evento calcolato rappresenta un periodo significativo di inattività durante la fase di esecuzione della produzione. Non è un evento esplicito del sistema, ma viene ricavato individuando intervalli temporali prolungati tra conferme di produzione consecutive. | ||
| Perché è importante Aiuta a monitorare interruzioni non pianificate, come guasti delle macchine o problemi di qualità. Individuare interruzioni frequenti o prolungate è fondamentale per migliorare la stabilità dell'area produttiva e la produttività. Dove reperirlo Viene calcolato analizzando i timestamp delle attività consecutive 'Conferma di produzione inserita' nella tabella AFRU. Un intervallo superiore a una soglia predefinita viene segnalato come interruzione non pianificata. Acquisizione Calcolare la differenza temporale tra timestamp di conferme consecutive (AFRU-BUDAT/UZEIT). Tipo di evento calculated | |||
| Si è verificata una carenza di materiali | Questo evento indica che il processo produttivo è stato compromesso o interrotto a causa dell'indisponibilità di uno o più componenti necessari. Il sistema imposta uno stato specifico sull'ordine per rappresentare la situazione. | ||
| Perché è importante Monitorare le carenze di materiali è fondamentale per la Material Shortage Impact Analysis. Aiuta a quantificare i ritardi causati da problemi della supply chain e a migliorare la pianificazione dei materiali. Dove reperirlo Viene dedotto dall'attivazione dello stato 'MSPT' (Carenza di materiale) per l'ordine di produzione. Il timestamp della modifica di stato è disponibile nella tabella JCDS. Acquisizione Timestamp della modifica di stato a 'MSPT' nella tabella JCDS. Tipo di evento inferred | |||
Guide all'estrazione
Passaggi
- Verifica dei prerequisiti: si assicuri di disporre in SAP S/4HANA di un utente con le autorizzazioni necessarie per accedere alle viste Core Data Services (CDS) richieste. Le viste necessarie includono
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatuseI_ChangeDocument. È inoltre necessario disporre di un ambiente per l’esecuzione SQL connesso al database SAP HANA, come SAP HANA Studio, DBeaver o uno strumento ETL esterno. - Identificazione dei dettagli del sistema: annoti l’identificativo del sistema di origine che utilizzerà per l’attributo
SourceSystem. Si tratta di un nome logico definito per identificare l’origine dei dati, ad esempioS4H_PROD. - Impostazione dei parametri di estrazione: prima di eseguire la query, definisca i parametri principali. Includa le date di inizio e fine del periodo di estrazione ed eventuali filtri specifici, come
PlantoProductionOrderType, per limitare 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. Sono inclusi
_StartDate,_EndDatee l’identificativo del sistema di origine. Adatti la soglia per l’evento 'Unplanned Halt Occurred', ad esempio'24:00:00', al contesto della Sua organizzazione. - 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 l’esecuzione in blocchi più piccoli, ad esempio mese per mese, per evitare problemi di prestazioni.
- Revisione iniziale dei dati: al termine dell’esecuzione della query, esegua una rapida revisione dell’output. Controlli il numero di righe, verifichi che siano presenti tutte le colonne e che la colonna
Attivitàcontenga una varietà degli eventi previsti. - Validazione dei dati: segua i passaggi descritti nella sezione
validationStepsper una validazione più approfondita. Confronti alcuni ordini di produzione con i relativi dettagli nel sistema SAP utilizzando la transazioneCO03, così da confermare l’accuratezza dell’Event Log estratto. - Esportazione in CSV: esporti il set di risultati finale in un file CSV. Verifichi che il file utilizzi la codifica UTF-8 per evitare problemi con i caratteri.
- Preparazione per il caricamento: confermi che le intestazioni delle colonne CSV corrispondano ai nomi degli attributi richiesti:
ProductionOrder,Attività,StartTime,SourceSystemeLastDataUpdate. Verifichi che la colonnaStartTimeutilizzi un formato timestamp standard, come ISO 8601 (YYYY-MM-DDTHH:MM:SS), prima di caricare il file nello strumento di Process Mining.
Configurazione
- CDS View principali: l'estrazione si basa principalmente su un insieme di CDS View standard che forniscono una rappresentazione strutturata e orientata al business delle tabelle SAP sottostanti. Le viste principali includono:
I_ProductionOrder: per i dati a livello di testata e gli eventi di creazione.I_ProdOrdConfirmation: per tutte le conferme delle operazioni.I_MaterialDocumentItem: per i movimenti di merci, come prelievi e carichi.I_ObjectStatus: per leggere le variazioni di stato dell'ordine di produzione.I_ChangeDocumente le viste associate: per acquisire le modifiche ai campi chiave dell'ordine.
- Filtro dell'intervallo di date: è fondamentale applicare un filtro sull'intervallo di date per gestire il volume dei dati. La query fornita utilizza la
CreationDatedell'ordine di produzione. Per un'analisi iniziale, un intervallo tipico è compreso tra 3 e 6 mesi di dati. - Filtri aziendali principali: per affinare ulteriormente il dataset, applichi filtri basati sugli attributi organizzativi o dei dati anagrafici principali. I filtri più comuni includono:
Plant: per analizzare uno specifico stabilimento produttivo.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 l'arresto non pianificato: la query include la logica per derivare gli eventi
Unplanned Halt Occurred. Questa logica richiede una soglia temporale per definire cosa costituisce un intervallo significativo tra le operazioni. Il valore deve essere configurato in base ai normali tempi di ciclo della produzione e alle regole aziendali. - Prerequisiti di autorizzazione: l'utente SAP che esegue la query deve disporre dell'autorizzazione di visualizzazione per tutte le CDS View e le relative tabelle sottostanti. L'assenza di autorizzazioni produrrà un risultato vuoto o incompleto.
a 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
- Confermi che sia disponibile l'accesso diretto in lettura allo schema SAP HANA contenente i dati degli ordini di produzione e identifichi il proprietario dello schema, la gestione del client, le convenzioni dei timestamp e il modello di autorizzazione. Utilizzi SAP HANA Database Explorer o un client SQL approvato. Convalidi la release SAP S/4HANA pertinente e l'ambito di Production Planning attivato prima di finalizzare la query.
- Configuri la stringa di connessione, le credenziali, il nome dello schema, il valore del client, la data di inizio e di fine dell'estrazione e i filtri specifici dell'azienda. La query seguente utilizza AUFK, AFPO, JEST e JCDS e fa inoltre riferimento ad AFKO, AFVC, AFRU, RESB, MSEG, CDHDR e CDPOS. Prima dell'esecuzione, confermi la disponibilità e la definizione dei campi di questi oggetti nel Suo sistema, poiché possono sussistere differenze dovute a estensioni, viste di compatibilità e release differenti.
- 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 affida a ProcessMind per dedurre gli eventi.
- Esamini i dati di origine e adatti, ove necessario, le espressioni contrassegnate specifiche del sistema. In particolare, confermi i codici di stato utilizzati per la disponibilità dei materiali, la pianificazione della capacità, il completamento tecnico, la chiusura finanziaria e l'annullamento. Confermi l'oggetto del documento di modifica e i nomi dei campi utilizzati per identificare gli adeguamenti del piano di produzione.
- Convalidi la conversione dei timestamp e il filtro del client. I sistemi SAP possono memorizzare date e orari in campi separati e alcune installazioni utilizzano UTC, mentre altre utilizzano l'ora locale dello stabilimento o del sistema. Verifichi 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 come file flat supportato da ProcessMind, preferibilmente CSV o testo delimitato UTF-8. Mantenga esattamente i nomi delle colonne di output ProductionOrder, Activity, StartTime, SourceSystem, LastDataUpdate, MaterialNumber, Plant, WorkCenter, PlannedEndDate e OrderStatus.
- Ordini le righe esportate per ProductionOrder e StartTime, utilizzando un ordinamento secondario deterministico per i timestamp uguali, se il processo di caricamento lo supporta. Mantenga una riga per ogni evento, incluse le conferme e le variazioni di stato ripetute quando rappresentano record distinti di origine.
- Carichi il file in ProcessMind e associ ProductionOrder all'identificativo del caso, Activity all'attività e StartTime al timestamp dell'evento. Associ le colonne rimanenti agli attributi dell'evento o del caso in base alla configurazione di importazione di ProcessMind. Confermi 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. Utilizzi un periodo più breve per i test iniziali e lo ampli 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 Suo ambiente. Applichi i filtri specifici dell'azienda solo dopo aver confermato i campi e i valori organizzativi pertinenti.
- Configurazione degli stati: verifichi i codici di stato SAP esatti e gli identificativi degli oggetti di stato utilizzati nel Suo sistema per CRTD, rilascio, disponibilità dei materiali, pianificazione della capacità, completamento tecnico, chiusura finanziaria e annullamento. I profili di stato e le estensioni personalizzate possono modificare i codici disponibili.
- Documenti di modifica: confermi l'oggetto del documento di modifica dell'ordine di produzione, i nomi delle tabelle e dei campi e i formati dei valori utilizzati per le modifiche a quantità, date, distinta base e ciclo di lavorazione. La query considera i record CDHDR e CDPOS corrispondenti come evidenza di un adeguamento del piano.
- Gestione dei timestamp: standardizzi tutti i timestamp su un unico fuso orario. Confermi 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, filtri per client, selezioni solo le colonne necessarie ed esegua l'estrazione durante una finestra di reporting adeguata. Per dataset di grandi dimensioni, estragga i dati per mese o per intervallo di ordini di produzione e salvi i risultati in modo incrementale.
- Oggetti del database: confermi 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 Sua release, lo sostituisca con l'oggetto rilasciato o approvato corrispondente.
- Autorizzazioni: l'accesso richiesto include l'autorizzazione di lettura allo schema e agli oggetti SAP HANA selezionati, oltre al permesso di eseguire SQL. Il processo di governance della Sua organizzazione potrebbe richiedere anche autorizzazioni applicative SAP.
- Ambito funzionale: i dati di pianificazione ed esecuzione della produzione, i dati dei movimenti di inventario, la cronologia degli stati e i documenti di modifica devono essere conservati per il periodo selezionato. I record archiviati o eliminati non verranno restituiti.
- Mappatura in ProcessMind: configuri ProductionOrder come identificativo del caso, Activity come attività e StartTime come timestamp dell'evento. Non presuma che ProcessMind ricavi le attività mancanti dagli attributi.
a 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 per iniziare?
Faccia il primo passo per trasformare l'efficienza della Sua pianificazione della produzione. Prepari i dati con questo Template e sblocchi informazioni preziose per l'ottimizzazione.
Inizi oggi a ottimizzare la Sua 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