Il Suo template per i dati delle richieste Purchase to Pay
Il Suo template per i dati delle richieste Purchase to Pay
- Attributi consigliati da raccogliere per un'analisi dettagliata
- Attività chiave da tracciare per la scoperta dei processi
- Guida per l'estrazione dei dati da SAP S/4HANA
Purchase to Pay - Attributi di richiesta
| Nome | Descrizione | ||
|---|---|---|---|
| ID requisizione d’acquisto PurchaseRequisitionId | L'identificativo univoco per un documento di richiesta d'acquisto. | ||
| Descrizione Il Purchase Requisition ID è la chiave primaria che identifica univocamente ogni richiesta di beni o servizi in SAP S/4HANA. Funge da identificativo centrale del caso (Case ID), collegando tutte le attività e le modifiche relative a una specifica richiesta, dalla sua creazione fino allo stato finale (approvazione, rifiuto o conversione in ordine d'acquisto). Nel Process Mining, questo attributo è essenziale per ricostruire il ciclo di vita end-to-end di ogni richiesta. Raggruppando tutti gli eventi correlati sotto un unico ID, gli analisti possono misurare con precisione i tempi di ciclo, tracciare i cambi di stato e analizzare i diversi percorsi che una richiesta può intraprendere durante l'approvazione. Perché è importante È l'identificativo del caso essenziale che collega tutti i passaggi del processo, consentendo una visione completa e coerente del ciclo di vita della richiesta. Dove trovare Questo attributo è il numero della richiesta d'acquisto, che si trova nella tabella EBAN, campo BANFN. Esempi 100178901001789110017892 | |||
| Nome attività ActivityName | Il nome dell'attività di business avvenuta in un momento specifico del processo di richiesta. | ||
| Descrizione L'Activity Name descrive un evento o un task specifico avvenuto durante il ciclo di vita di una richiesta d'acquisto. Queste attività derivano dai log di sistema, come i documenti di modifica e lo storico dei workflow, e rappresentano milestone chiave come 'Requisition Created', 'Approval Step Started' o 'Purchase Order Created'. L'analisi di queste attività permette di visualizzare il flusso del processo, identificare i colli di bottiglia e misurare il tempo trascorso nelle diverse fasi. Comprendere la sequenza e la frequenza di attività come 'Requisition Amended' o 'Requisition Rejected' è fondamentale per individuare inefficienze e aree di miglioramento. Perché è importante Definisce le fasi del processo, costituendo la spina dorsale della mappa di processo e consentendo l'analisi dei flussi, delle varianti e dei colli di bottiglia. Dove trovare Si tratta di un attributo derivato, solitamente costruito interpretando i dati delle tabelle dei documenti di modifica (CDHDR, CDPOS) e dei log di workflow (es. SWWLOGHIST). Esempi Richiesta CreataPasso di Approvazione CompletatoRichiesta di acquisto approvataOrdine di acquisto creato | |||
| Timestamp Evento EventTime | La data e l'ora precise in cui si è verificata una specifica `activity`. | ||
| Descrizione Event Time è il timestamp che registra quando si è verificata un'attività. Questo dato è fondamentale per l'ordinamento cronologico degli eventi all'interno di un caso ed è la base per tutti i calcoli di durata e performance nel Process Mining. Ad esempio, la differenza temporale tra gli eventi 'Richiesta sottomessa' e 'Richiesta approvata' determina il tempo del ciclo di approvazione. Timestamp accurati sono essenziali per analizzare le prestazioni del processo, identificare i ritardi e monitorare il rispetto degli SLA. Questo attributo alimenta le Dashboard che visualizzano i tempi di ciclo, tracciano le richieste bloccate e confrontano le performance in periodi diversi. Perché è importante Questo timestamp è essenziale per ordinare gli eventi, calcolare i tempi di ciclo e analizzare le prestazioni del processo e i colli di bottiglia. Dove trovare I timestamp sono solitamente estratti dalle testate dei documenti di modifica (CDHDR-UDATE, CDHDR-UTIME) o dai log degli eventi di workflow. Esempi 2023-04-15T10:05:30Z2023-04-15T14:22:01Z2023-04-16T09:00:15Z | |||
| Dipartimento Department | Il dipartimento o il centro di costo su cui vengono addebitati i costi della richiesta. | ||
| Descrizione L'attributo Department, spesso rappresentato dal centro di costo in SAP, identifica l'unità aziendale responsabile dell'acquisto richiesto. Si tratta di un'informazione finanziaria e organizzativa cruciale assegnata a livello di singola voce della richiesta. Nel Process Mining, questo attributo è essenziale per l'analisi delle performance dipartimentali. Consente di creare dashboard che confrontano metriche chiave come tempi di ciclo, tassi di modifica e tassi di rifiuto tra i vari dipartimenti. Ciò aiuta a identificare i dipartimenti più efficienti, le cui pratiche potrebbero essere adottate altrove, o quelli che potrebbero necessitare di formazione o supporto aggiuntivo. Perché è importante Consente il confronto delle prestazioni tra diverse business unit, evidenziando variazioni nei tempi di ciclo o nei tassi di rigetto per identificare best practice e aree di miglioramento. Dove trovare Si tratta del centro di costo, solitamente reperibile nella tabella di imputazione EBKN, campo KOSTL. Esempi FIN-1001IT-2005MKT-3010 | |||
| ID Approvatore ApproverId | L'identificativo dell'utente che ha eseguito una fase di approvazione o di rifiuto. | ||
| Descrizione L'Approver ID identifica in modo specifico l'utente che ha completato un'attività di approvazione o rifiuto. Si distingue dal generico User ID poiché si focalizza esclusivamente sui decisori all'interno del workflow. Acquisire queste informazioni è vitale per analizzare il processo di approvazione nel dettaglio. Questo attributo permette di analizzare il comportamento dei responsabili, identificando ad esempio manager con tempi di approvazione lunghi o che rifiutano frequentemente le richieste. È fondamentale per monitorare i tempi di ciclo delle fasi di approvazione e analizzare i colli di bottiglia, aiutando a individuare singoli individui o ruoli che potrebbero causare rallentamenti. Perché è importante Individua lo specifico decisore in una fase di approvazione, consentendo un'analisi dettagliata dei tempi del ciclo di approvazione e dei bottleneck per individuo o ruolo. Dove trovare Queste informazioni vengono solitamente estratte dalle tabelle SAP Business Workflow come SWW_WI2OBJ e SWWLOGHIST, che collegano i work item all'utente che li ha completati. Esempi MJOHNSONCWILLIAMSLBLACK | |||
| ID Utente UserId | L'identificativo dell'utente che ha creato la richiesta o eseguito una specifica attività. | ||
| Descrizione Lo User ID identifica l'utente (persona o sistema) responsabile di un evento nel ciclo di vita della richiesta. Può trattarsi di chi ha creato la richiesta, del manager che l'ha approvata o di chi l'ha modificata. Per i passaggi automatizzati, potrebbe essere un ID utente di sistema o batch. L'analisi per User ID aiuta a comprendere i comportamenti dei singoli utenti, la distribuzione del carico di lavoro e le performance. È fondamentale per identificare esigenze di formazione, riconoscere i dipendenti più efficienti e garantire la responsabilità nel processo. Supporta inoltre l'analisi delle performance dipartimentali se combinato con i dati anagrafici utente. Perché è importante Consente l'analisi delle performance degli utenti, della distribuzione del carico di lavoro e della conformità del processo. È fondamentale per identificare esigenze di formazione e colli di bottiglia nelle risorse. Dove trovare Si trova in EBAN-ERNAM per il creatore. Per le modifiche successive, è in CDHDR-USERNAME. Per le approvazioni, si trova nei log del workflow. Esempi JSMITHRROEWF-BATCH | |||
| Importo Richiesta RequisitionAmount | Il valore monetario totale della richiesta di acquisto. | ||
| Descrizione L'importo della richiesta (Requisition Amount) rappresenta il costo totale stimato dei beni o servizi richiesti. Questo valore è spesso un fattore chiave nel determinare la complessità e la durata del workflow, poiché le richieste di valore più elevato richiedono tipicamente più livelli di approvazione. L'analisi di questo attributo permette di segmentare il processo in base al valore. Aiuta a rispondere a domande come: 'Le richieste di valore elevato richiedono più tempo per l'approvazione?' o 'Qual è il valore delle richieste che vengono rifiutate più spesso?'. È una dimensione critica per comprendere l'impatto finanziario delle inefficienze di processo. Perché è importante Aiuta a segmentare il processo in base all'impatto finanziario, che spesso correla con la complessità dell'approvazione e i tempi di ciclo. Fondamentale per analisi basate sul valore. Dove trovare Il valore totale si trova nella tabella EBAN, campo GFWERT. Il valore a livello di voce è in EBAN-PREIS. Esempi 1500.0075000.50250.75 | |||
| Stato della richiesta RequisitionStatus | Lo stato attuale di elaborazione o approvazione della richiesta d'acquisto. | ||
| Descrizione Il Requisition Status indica lo stato attuale della richiesta nel suo ciclo di vita. In SAP, questo è spesso rappresentato dal Release Indicator, che mostra se una richiesta è bloccata, in fase di approvazione, parzialmente approvata o completamente approvata. Lo stato cambia man mano che la richiesta avanza nel workflow. Tracciare lo stato nel tempo è fondamentale per comprendere il flusso. Aiuta a identificare dove e per quanto tempo le richieste si fermano. L'analisi delle transizioni tra gli stati consente una visione dettagliata del processo di approvazione e delle sue varianti. Perché è importante Indica lo stato attuale di una richiesta, fondamentale per monitorare l'avanzamento, identificare i colli di bottiglia e analizzare il flusso del processo. Dove trovare Lo stato di rilascio è spesso determinato dal Release Indicator, che si trova nella tabella EBAN, campo FRGZU. Esempi B1S | |||
| Tipo di Richiesta RequisitionType | Un codice che classifica la richiesta d'acquisto, ad esempio per articoli standard, servizi o spese in conto capitale (CAPEX). | ||
| Descrizione Il Requisition Type (o tipo documento in SAP) è un campo di configurazione chiave che categorizza le richieste d'acquisto. Tipi diversi possono attivare workflow di approvazione differenti, avere impostazioni diverse e servire a scopi aziendali distinti, come articoli a magazzino, servizi esterni o acquisto di asset. Analizzando il processo in base al tipo di richiesta, le organizzazioni possono capire come vengono gestite le diverse categorie. Ciò permette di confrontare performance, tempi di ciclo e percorsi di approvazione, rivelando quali tipi di richiesta siano più o meno efficienti e aiutando a calibrare i miglioramenti del processo. Perché è importante Categorizza le richieste per abilitare analisi comparative, aiutando a capire se diversi tipi di ordini hanno flussi, bottleneck o tempi di ciclo differenti. Dove trovare È il campo del tipo documento, che si trova nella tabella EBAN, campo BSART. Esempi NBFORV | |||
| Data richiesta di consegna RequiredByDate | La data entro la quale il richiedente necessita dei beni o dei servizi richiesti. | ||
| Descrizione La Required By Date (o data di consegna in SAP) specifica quando i beni o i servizi sono necessari. Questa data è impostata dal richiedente e funge da obiettivo per l'intero processo di approvvigionamento. Questo attributo è essenziale per calcolare il KPI 'Tasso di completamento puntuale delle richieste'. Confrontando la data richiesta con la data di approvazione finale o di creazione dell'ordine, l'azienda può misurare la propria capacità di soddisfare i livelli di servizio interni. L'analisi delle richieste che mancano questa scadenza può evidenziare ritardi sistemici nel processo di acquisto. Perché è importante Definisce la data di completamento target per una richiesta, consentendo la misurazione della puntualità e del rispetto dei livelli di servizio interni (SLA). Dove trovare È la data di consegna, reperibile a livello di singola voce nella tabella EBAN, campo LFDAT. Esempi 2023-11-152023-12-012024-01-20 | |||
| È Automatizzato IsAutomated | Un indicatore che specifica se un'attività è stata eseguita da un utente di sistema anziché da una persona fisica. | ||
| Descrizione L'attributo Is Automated è un flag booleano impostato su true se l'attività è stata eseguita da un utente di sistema o batch, come 'WF-BATCH' per le azioni di workflow. Questo aiuta a distinguere tra passaggi manuali e automatizzati nel processo. Questo attributo è essenziale per misurare il livello di automazione nel processo di richiesta e per calcolare il KPI 'Tasso di approvazione automatizzata'. Filtrando per passaggi automatici o manuali, gli analisti possono confrontarne l'efficienza e identificare opportunità per un'ulteriore automazione, al fine di ridurre i tempi di elaborazione e lo sforzo manuale. Perché è importante Distingue tra attività umane e attività guidate dal sistema, elemento chiave per misurare i tassi di automazione e identificare opportunità per automatizzare compiti manuali. Dove trovare È un attributo derivato, solitamente basato su una regola che verifica se lo User ID appartiene a un elenco di utenti di sistema o batch noti. Esempi truefalse | |||
| È una Rilavorazione IsRework | Un indicatore che segnala se un'attività costituisce un rework, come una modifica apportata dopo la sottomissione. | ||
| Descrizione Is Rework è un flag booleano calcolato che identifica le attività che rappresentano un lavoro ripetitivo o senza valore aggiunto. Un esempio comune in questo processo è l'attività 'Richiesta modificata' che avviene dopo che la richiesta è già stata sottomessa per l'approvazione, costringendo il processo a ripartire. Questo attributo è fondamentale per quantificare la quantità di rework nel processo e il suo impatto sui tempi di ciclo totali. La dashboard specifica sul tasso di modifica e rework si affida a questo flag per evidenziare le inefficienze. Ridurre il rework è spesso l'obiettivo primario dei progetti di miglioramento dei processi poiché si traduce direttamente in risparmio di tempo e fatica. Perché è importante Contrassegna le attività che rappresentano sforzi sprecati o ripetizioni, consentendo la misurazione diretta del rework e del suo impatto sull'efficienza del processo. Dove trovare Si tratta di un attributo calcolato. La logica solitamente contrassegna come rilavorazione qualsiasi attività 'Requisition Amended' che avvenga dopo la prima attività 'Requisition Submitted For Approval'. Esempi truefalse | |||
| Livello di Urgenza UrgencyLevel | Una classificazione dell'urgenza della richiesta, che può influenzare la sua priorità di elaborazione. | ||
| Descrizione L'Urgency Level indica la priorità della richiesta d'acquisto. Sebbene non sia un campo standard dedicato, alcune organizzazioni utilizzano campi come il Numero di tracciamento del requisito per acquisire questa informazione. Ciò consente ai richiedenti di segnalare necessità critiche che richiedono un'elaborazione accelerata. Analizzare l'impatto dell'urgenza è importante per valutare se il processo dia effettivamente priorità alle richieste critiche. La dashboard di analisi dell'impatto dell'urgenza usa questo attributo per confrontare tempi di ciclo e tassi di approvazione tra richieste urgenti e standard, verificando se la gestione delle priorità funzioni come previsto. Perché è importante Consente di analizzare come le performance del processo differiscano per le richieste ad alta priorità, aiutando a verificare se gli ordini urgenti siano effettivamente gestiti in modo accelerato. Dove trovare Non esiste un campo standard per l'urgenza. Alcune aziende utilizzano il Requirement Tracking Number (EBAN-BEDAR) a questo scopo. Potrebbe anche essere un campo personalizzato. Esempi ElevatoMedioBasso | |||
| Motivo del Rigetto RejectionReason | La motivazione fornita quando una richiesta d'acquisto viene rifiutata. | ||
| Descrizione La Rejection Reason spiega perché un approvatore ha deciso di respingere una richiesta. Le ragioni possono includere il superamento del budget, informazioni errate, non conformità alle policy o la duplicazione di un'altra richiesta. Queste informazioni offrono un contesto cruciale per comprendere i fallimenti del processo. L'analisi dei motivi di rifiuto aiuta a identificare le cause profonde delle inefficienze e delle rilavorazioni. Se, ad esempio, 'Centro di costo errato' è un motivo comune, ciò indica la necessità di una migliore formazione degli utenti o di validazioni di sistema. Questo attributo è il perno della dashboard di analisi dei rifiuti ed è vitale per il miglioramento mirato dei processi. Perché è importante Fornisce la causa principale dei fallimenti del processo, permettendo miglioramenti mirati per ridurre il rework e aumentare il tasso di richieste corrette al primo colpo (first-time-right). Dove trovare Spesso non è un campo standard. Può essere acquisito negli elementi container del workflow, nei testi lunghi associati alla richiesta o in campi personalizzati. Esempi Supera il budgetFornitore erratoRichiesta duplicata | |||
| Nome fase approvativa ApprovalStepName | Il nome specifico o la descrizione di una fase di approvazione nel workflow. | ||
| Descrizione L'Approval Step Name fornisce una descrizione leggibile di una specifica fase del workflow di approvazione, ad esempio 'Approvazione Manager' o 'Approvazione VP Finance'. Risulta molto più utile di una generica attività 'Fase di approvazione completata'. Questo attributo è fondamentale per le dashboard relative ai tempi di ciclo delle fasi di approvazione e all'analisi dei colli di bottiglia nel workflow. Consente una visione granulare, rendendo possibile individuare esattamente quali fasi stiano causando i ritardi maggiori e dove si stia accumulando il lavoro. Tale livello di dettaglio è necessario per interventi mirati a snellire la catena approvativa. Perché è importante Fornisce dettagli granulari sulle fasi di approvazione, consentendo l'identificazione precisa dei colli di bottiglia all'interno del workflow multi-livello. Dove trovare Questa informazione deriva dalla descrizione del task di workflow, reperibile collegando il log del workflow alle tabelle di definizione dei task come T528T. Esempi Approvazione del ResponsabileApprovazione del DirettoreApprovazione del VP Finance | |||
| Numero Ordine d'Acquisto PurchaseOrderNumber | Il numero dell'ordine d'acquisto creato a partire dalla richiesta. | ||
| Descrizione Il Purchase Order Number è l'identificativo del documento d'acquisto ufficiale creato da una richiesta approvata. La creazione di un ordine d'acquisto è spesso l'esito finale positivo per una richiesta, a indicare che il fabbisogno è stato convertito in un ordine formale a un fornitore. Questo attributo è fondamentale per misurare il KPI 'Lead Time dalla richiesta all'ordine' e il tasso di conversione complessivo. Collega il processo di richiesta con il processo di acquisto a valle, offrendo una visione end-to-end dell'intero ciclo Procure-to-Pay. Perché è importante Collega la richiesta al documento di acquisto successivo, permettendo di misurare il tasso di conversione richiesta-ordine e il lead time. Dove trovare Si trova nella tabella EBAN, campo EBELN, una volta creato un ordine d'acquisto (PO) dall'item della richiesta. Esempi 450001789045000178914500017892 | |||
| Ora di Fine EndTime | La data e l'ora precise in cui una specifica attività è stata completata. | ||
| Descrizione EndTime è il timestamp che registra quando un'attività è stata terminata. Mentre molti eventi generati dal sistema sono istantanei (StartTime coincide con EndTime), i task umani come le approvazioni possono avere un inizio e una fine distinti. Questo timestamp segna il completamento di quel lavoro. Disporre di un EndTime separato permette una misurazione più accurata del tempo di elaborazione attivo rispetto al tempo di attesa. Viene utilizzato insieme a StartTime per calcolare la metrica ProcessingTime. Questo livello di dettaglio migliora l'analisi dell'utilizzo delle risorse e dell'efficienza per i task manuali. Perché è importante Segna il completamento di un'attività, consentendo il calcolo del tempo di elaborazione attivo e fornendo una visione più dettagliata della durata dei task. Dove trovare Questo dato è derivato dai log di workflow che possono registrare sia la creazione del work item (StartTime) sia il suo completamento (EndTime). Esempi 2023-04-15T10:20:30Z2023-04-15T14:25:01Z2023-04-16T11:00:45Z | |||
| Sistema di Origine SourceSystem | Identifica la specifica istanza SAP S/4HANA da cui sono stati estratti i dati. | ||
| Descrizione L'attributo Source System indica il sistema d'origine in cui sono stati generati i dati del processo. Nelle organizzazioni con più istanze SAP (es. sistemi diversi per sviluppo, QA e produzione, o sistemi separati per regioni diverse), questo campo è fondamentale per la governance e il contesto dei dati. Assicura che i dati provenienti da fonti diverse siano distinguibili, evitando aggregazioni errate e consentendo analisi specifiche per sistema. È un attributo obbligatorio per mantenere la lineage dei dati e garantire la tracciabilità del processo. Perché è importante Fornisce il contesto essenziale sull'origine e la governance dei dati, specialmente in scenari con più sistemi, garantendo la tracciabilità. Dove trovare In genere è il SAP System ID (SID), che può essere recuperato dalle variabili di sistema o dalle tabelle di configurazione. Esempi S4PECCS4H_PROD_01 | |||
| Tempo di Elaborazione ProcessingTime | La durata del tempo trascorso su una specifica attività. | ||
| Descrizione Processing Time misura il tempo impiegato per completare una singola attività. Viene calcolato come differenza tra l'ora di fine e l'ora di inizio di un evento. Per molti eventi in SAP, i tempi di inizio e fine coincidono, risultando in un tempo di elaborazione pari a zero. Tuttavia, per le fasi di approvazione, può rappresentare il tempo che un approvatore ha dedicato effettivamente al task. Questa metrica è utile per comprendere lo sforzo richiesto nei diversi passaggi del processo. Aiuta a distinguere tra il tempo in cui un caso è in attesa (wait time) e il tempo in cui viene lavorato attivamente (processing time), offrendo una visione più sfumata delle performance. Perché è importante Misura il tempo di lavoro attivo per un'attività, aiutando a distinguere tra il tempo speso lavorando e quello speso in attesa, elemento chiave per l'analisi delle risorse. Dove trovare Si tratta di un attributo calcolato, derivato solitamente come differenza tra EndTime e StartTime per ogni evento nell'event log. Esempi PT15MPT2H30MP1D | |||
| Ultimo `Data Update` LastDataUpdate | Il timestamp che indica l'ultimo aggiornamento dei dati per questo record dal sistema sorgente. | ||
| Descrizione Questo attributo registra la data e l'ora dell'ultima estrazione o aggiornamento dei dati dal sistema d'origine. È un metadato critico per comprendere quanto siano aggiornati i dati analizzati. Analisti e utenti aziendali si affidano a questo timestamp per sapere se i dati di processo riflettono lo stato attuale delle operazioni. In qualsiasi analisi di processo, conoscere l'attualità dei dati è fondamentale per prendere decisioni informate. Questo attributo aiuta a gestire le aspettative degli utenti e garantisce che le conclusioni siano tratte da dati aggiornati secondo le necessità dell'analisi specifica. Perché è importante Indica l'aggiornamento dei dati, fondamentale per l'affidabilità dell'analisi e per prendere decisioni di business tempestive. Dove trovare Questo timestamp viene generato e aggiunto durante il processo di estrazione, trasformazione e caricamento (ETL). Esempi 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
| Valuta Currency | Il codice valuta per l'importo della richiesta. | ||
| Descrizione Questo attributo specifica la valuta dell'importo della richiesta (es. USD, EUR o JPY). Fornisce il contesto necessario per l'attributo Requisition Amount, specialmente nelle multinazionali che operano con più valute. Per un'analisi finanziaria e una reportistica accurata, è essenziale considerare la valuta. Quando si aggregano o si confrontano i valori delle richieste, tutti gli importi dovrebbero essere convertiti in una valuta comune per garantire risultati significativi. Questo attributo è un prerequisito per tali conversioni. Perché è importante Fornisce il contesto essenziale per l'importo della richiesta, abilitando analisi finanziarie accurate e confronti in ambienti multi-valuta. Dove trovare Si trova nella tabella EBAN, campo WAERS. Esempi USDEURGBP | |||
Purchase to Pay - Attività di richiesta
| Activity | Descrizione | ||
|---|---|---|---|
| Ordine di acquisto creato | Indica che è stato generato un ordine d'acquisto che fa riferimento all'item della richiesta. È un evento di sistema esplicito che collega la richiesta al documento di acquisto successivo. | ||
| Perché è importante È una milestone fondamentale e un esito positivo per il processo di richiesta. Il tempo tra l'approvazione della richiesta e la creazione dell'ordine è un KPI cruciale per misurare l'efficienza degli acquisti. Dove trovare Registrato esplicitamente alla creazione di un item dell'ordine d'acquisto. Il collegamento è memorizzato nella tabella EKPO (Purchase Order Item), che contiene il numero della richiesta d'acquisto sorgente (BANFN) e il numero dell'item (BNFPO). Acquisisci Unisci la tabella EKPO a EBAN tramite numero richiesta e item. La data di creazione dell'item dell'ordine segna l'evento. Tipo di evento explicit | |||
| Passo di Approvazione Completato | Si verifica quando un approvatore esegue un'azione positiva su una richiesta, completando un passaggio nel workflow di approvazione multi-livello. Viene dedotto da un cambiamento nello stato di rilascio della richiesta. | ||
| Perché è importante Questa attività consente un'analisi dettagliata del workflow di approvazione, misurando il tempo impiegato in ogni singola fase. Aiuta a distinguere gli approvatori efficienti dai colli di bottiglia nel processo. Dove trovare Dedotto dai documenti di modifica (CDHDR/CDPOS) per la tabella EBAN. Un cambiamento dello stato del codice di rilascio (es. nel campo FRGZU) da non rilasciato a rilasciato per un codice specifico indica questo evento. Acquisisci Tracci le modifiche ai campi dello stato di rilascio in EBAN per ogni codice di rilascio definito nella strategia. Tipo di evento inferred | |||
| Richiesta chiusa | Indica che l'item della richiesta è considerato completamente elaborato e non possono essere creati ulteriori ordini d'acquisto da esso. Questo stato viene solitamente impostato in automatico una volta ordinata l'intera quantità. | ||
| Perché è importante Questa attività rappresenta la conclusione positiva del ciclo di vita della voce di richiesta. Conferma che il fabbisogno aziendale è stato completamente tradotto in un ordine di acquisto. Dove trovare Dedotto dalla tabella EBAN. Si verifica quando l'indicatore 'Chiuso' (EBAKZ) è impostato, solitamente quando la quantità ordinata negli ordini d'acquisto (PO) eguaglia la quantità richiesta. Acquisisci Identifica l'evento in cui l'indicatore 'Chiuso' (EBAKZ) è impostato nella tabella EBAN tramite i documenti di modifica. Tipo di evento inferred | |||
| Richiesta Creata | Segna la creazione iniziale del documento di richiesta d'acquisto nel sistema. Questo evento viene catturato esplicitamente quando un utente salva per la prima volta una nuova richiesta, registrando il timestamp di creazione. | ||
| Perché è importante Questa attività funge da punto di partenza principale per l'analisi del ciclo di vita della richiesta. È essenziale per misurare il tempo di ciclo end-to-end, dall'identificazione del bisogno all'approvazione finale o conversione in ordine. Dove trovare È un evento esplicito acquisito dalla tabella EBAN, utilizzando i campi della data di creazione (ERDAT) e dell'ora di creazione (ERZEIT) per lo specifico numero di richiesta d'acquisto (BANFN). Acquisisci Utilizzi i campi del timestamp di creazione (ERDAT, ERZEIT) della tabella EBAN per ogni richiesta (BANFN). Tipo di evento explicit | |||
| Richiesta di acquisto approvata | Segna l'approvazione finale e completa della richiesta d'acquisto, rendendola idonea alla conversione in ordine d'acquisto. Questa pietra miliare viene dedotta quando lo stato di rilascio generale raggiunge lo stato approvato finale. | ||
| Perché è importante Si tratta di una pietra miliare di successo e di un punto finale comune per l'analisi dei tempi di ciclo. Indica che la richiesta ha superato tutti i controlli ed è pronta per essere gestita dall'ufficio acquisti. Dove trovare Dedotto da un cambio di stato nella tabella EBAN, in particolare quando l'indicatore di rilascio generale (FRGZU) o lo stato di elaborazione (PROCSTAT) vengono aggiornati a un valore finale 'Approvato'. Acquisisci Individua il timestamp in cui viene applicato il codice di rilascio finale o lo stato generale della richiesta cambia in 'Approvato'. Tipo di evento inferred | |||
| Richiesta rifiutata | Rappresenta il rifiuto finale della richiesta d'acquisto da parte di un approvatore, che interrompe il processo. Viene catturato da uno specifico aggiornamento di stato che indica il rigetto. | ||
| Perché è importante Questa attività rappresenta un punto di fallimento critico. Analizzare la frequenza dei rifiuti, le motivazioni e i punti del processo in cui avvengono aiuta a identificare problemi di conformità alle policy, budget o qualità della richiesta. Dove trovare Dedotto da un cambio di stato nella tabella EBAN. Lo stato di elaborazione (PROCSTAT) o un indicatore di rilascio viene impostato su un valore che significa esplicitamente 'Respinto'. Acquisisci Individua il timestamp in cui lo stato generale in EBAN viene aggiornato a 'Respinto' tramite i documenti di modifica. Tipo di evento inferred | |||
| Approvazione Reimpostata | Rappresenta un evento in cui l'intero workflow di approvazione viene resettato, spesso a causa di una modifica significativa alla richiesta. Ciò costringe il processo di approvazione a ripartire dal primo livello. | ||
| Perché è importante Questa attività evidenzia rilavorazioni significative che influenzano pesantemente il tempo di ciclo. Identificare le cause del riavvio delle approvazioni è fondamentale per snellire il processo e ridurre i ritardi. Dove trovare Dedotto dai documenti di modifica (CDHDR/CDPOS) sulla tabella EBAN. Questo evento viene rilevato quando i campi dello stato di rilascio (come FRGKZ o FRGZU) vengono azzerati dopo essere stati parzialmente o totalmente impostati. Acquisisci Cerca nei log delle modifiche un cambiamento dello stato di rilascio da 'rilasciato' a 'non rilasciato'. Tipo di evento inferred | |||
| Fase di Approvazione Avviata | Indica che una richiesta è in attesa di un'azione da parte di un approvatore o di un gruppo di approvazione specifico. Viene dedotto quando lo stato della richiesta indica che è in sospeso per un codice di rilascio specifico. | ||
| Perché è importante Questa attività è essenziale per individuare i colli di bottiglia nella catena approvativa. Analizzare la durata di questo stato aiuta a identificare richieste ferme e approvatori sovraccarichi. Dove trovare Dedotto dai campi dello stato di rilascio della tabella EBAN (es. FRGZU) e dalla configurazione della strategia di rilascio. L'evento inizia quando un codice di rilascio specifico diventa il prossimo da elaborare. Acquisisci Determina quando una richiesta entra in uno stato in cui un codice di rilascio specifico è in attesa di approvazione, basandosi sui log del workflow o sui campi di stato. Tipo di evento inferred | |||
| Fonte di Approvvigionamento Assegnata | Rappresenta l'azione di un buyer che assegna un fornitore specifico, un contratto o un record info a un item della richiesta approvato. Passaggio chiave per preparare la richiesta alla creazione dell'ordine. | ||
| Perché è importante Questa attività colma il divario tra approvazione e ordine. Misurare il tempo necessario per assegnare una fonte d'acquisto aiuta a identificare ritardi nel carico di lavoro del buyer e l'efficienza nel sourcing. Dove trovare Dedotto dall'inserimento di un valore nei campi relativi alla fonte di acquisto nella tabella EBAN, come fornitore fisso (LIFNR), record info (INFNR) o contratto (KONNR). Acquisisci Monitori il popolamento di campi come LIFNR, INFNR o KONNR nella tabella EBAN tramite i documenti di modifica. Tipo di evento inferred | |||
| Richiesta modificata | Si verifica quando un utente modifica un campo chiave nella richiesta dopo la sua creazione iniziale, come quantità, prezzo o materiale. Questa azione viene registrata esplicitamente nel sistema dei documenti di modifica di SAP. | ||
| Perché è importante Tracciare le modifiche è fondamentale per identificare i loop di rilavorazione e il loro impatto sui tempi di ciclo. Un'alta frequenza di rettifiche suggerisce problemi di qualità dei dati o requisiti instabili, aree chiave per il miglioramento del processo. Dove trovare Registrato esplicitamente nelle tabelle dei documenti di modifica SAP (CDHDR e CDPOS) per le modifiche apportate alla tabella EBAN. Ogni modifica a un campo tracciato genera una voce. Acquisisci Estrai gli eventi di modifica da CDHDR/CDPOS dove la classe oggetto è BANF per le richieste d'acquisto. Tipo di evento explicit | |||
| Richiesta ritirata | Si verifica quando il richiedente originale annulla o elimina la richiesta prima che sia completamente elaborata. Si tratta in genere di un'azione esplicita che imposta un flag di cancellazione sull'item della richiesta. | ||
| Perché è importante Tracciare i ritiri delle richieste aiuta a comprendere la volatilità della domanda e le ragioni degli annullamenti. Rappresenta uno stato finale per la richiesta, che ne interrompe l'elaborazione. Dove trovare Catturato esplicitamente quando il campo dell'indicatore di cancellazione (LOEKZ) nella tabella EBAN è impostato per un item della richiesta. La modifica viene registrata in CDHDR/CDPOS. Acquisisci Identifica l'evento in cui l'indicatore di cancellazione (LOEKZ) nella tabella EBAN è impostato su 'L'. Tipo di evento explicit | |||
| Richiesta sottomessa per approvazione | Rappresenta il momento in cui il richiedente sottomette formalmente la richiesta, attivando il workflow di approvazione. In genere viene dedotto quando viene determinata la strategia di rilascio e lo stato passa a 'In approvazione'. | ||
| Perché è importante È una milestone critica che fa scattare il cronometro per i KPI del tempo di ciclo di approvazione. Analizzare il tempo tra creazione e invio può rivelare ritardi nella fase di preparazione della richiesta. Dove trovare Dedotto dai documenti di modifica (CDHDR/CDPOS) per la tabella EBAN, specificamente quando i campi della strategia di rilascio (es. FRGST) sono popolati o lo stato generale (PROCSTAT) cambia per riflettere lo stato in approvazione. Acquisisci Individua la prima voce del documento di modifica che indica l'inizio del workflow di approvazione o un cambio di stato in 'In approvazione'. Tipo di evento inferred | |||
Guide all'Estrazione
Fasi
- Prerequisiti: si assicuri di avere un utente con le autorizzazioni appropriate in SAP S/4HANA per accedere alle viste CDS richieste. Ciò include in genere i permessi per oggetti come S_TABU_NAM e l'accesso agli strumenti di visualizzazione dati.
- Metodo di accesso al sistema: determini come connettersi al database SAP S/4HANA per eseguire le query SQL. Gli strumenti comuni includono SAP HANA Studio, Eclipse IDE con ADT (ABAP Development Tools) o client SQL di terze parti come DBeaver.
- Revisione della query SQL: familiarizzi con lo script SQL fornito. Utilizza le Common Table Expressions (CTE) per raccogliere i dati delle diverse attività e li unisce in un unico Event Log.
- Personalizzazione dei placeholder: individui e sostituisca i segnaposto nella query. Dovrà impostare l'intervallo di date (formato
[AAAA-MM-GG]) per il periodo di estrazione e specificare i codici società ([Il Tuo Codice Società]) rilevanti per la sua organizzazione. - Esecuzione della query: esegua la query SQL completa e personalizzata sul database SAP S/4HANA. A seconda del volume dei dati e dell'intervallo di date selezionato, l'esecuzione potrebbe richiedere del tempo.
- Revisione iniziale dei dati: una volta completata la query, controlli le prime righe dell'output. Verifichi che tutte le colonne, come PurchaseRequisitionId, ActivityName ed EventTime, siano popolate correttamente e che i formati dei dati siano giusti.
- Trasformazione dei dati: la query fornita è progettata per generare dati pronti per il Process Mining. Le funzioni
CASTeCONCATassicurano la coerenza dei tipi di dati. Non dovrebbero essere necessarie trasformazioni post-esecuzione. - Esportazione dell'Event Log: esporti l'intero set di risultati dal client SQL in un file CSV. Si assicuri che la codifica del file sia impostata su UTF-8 per evitare problemi con i caratteri.
- Preparazione per l'upload: prima di caricare i dati nello strumento di Process Mining, verifichi che il file CSV abbia gli header corretti (
PurchaseRequisitionId,ActivityName,EventTime, ecc.) e che il formato di data e ora perEventTimesia coerente e supportato dalla piattaforma. - Caricamento su ProcessMind: carichi il file CSV finale nel suo progetto ProcessMind. Configuri il progetto mappando
PurchaseRequisitionIdcome Case ID,ActivityNamecome Activity edEventTimecome Timestamp.
Configurazione
- Core CDS Views: l'estrazione utilizza principalmente
I_PurchaseRequisitionAPI01per i dati principali della richiesta,I_ChangeDocumenteI_ChangeDocumentItemper il monitoraggio delle modifiche e degli aggiornamenti di stato, eI_PurchaseOrderItemAPI01per il collegamento agli ordini d'acquisto. - Autorizzazioni: l'utente che esegue l'operazione deve avere accesso in lettura alle viste CDS sopra menzionate. Consulti il suo team di sicurezza SAP per i ruoli e le autorizzazioni necessarie.
- Filtro per intervallo di date: è fondamentale applicare un filtro sulla data di creazione della richiesta (
CreationDate) per limitare il volume dei dati. Per un'analisi iniziale, si consiglia un intervallo da 3 a 6 mesi. - Filtro organizzativo: filtri i dati per
CompanyCodeper assicurarsi di analizzare il processo della corretta entità aziendale. Può anche considerare l'uso di filtri perPurchaseRequisitionTypeper concentrarsi su processi di approvvigionamento specifici, ad esempio beni standard rispetto ai servizi. - Configurazione dei documenti di modifica: l'acquisizione di attività come "Richiesta modificata" e i vari step di approvazione dipende dall'attivazione del log dei documenti di modifica per i campi rilevanti nel sistema SAP. Se questi eventi mancano, verifichi la configurazione del sistema per la tabella EBAN.
- Performance: per sistemi di grandi dimensioni con milioni di richieste, l'esecuzione di questa query su un periodo lungo potrebbe influire sulle prestazioni. Consideri l'esecuzione in orari non di punta o in un ambiente non di produzione con dati aggiornati di recente.
a Query di Esempio sql
WITH REQUISITIONS AS (
SELECT
PurchaseRequisition,
PurchaseRequisitionType,
PurReqnDescription,
CreatedByUser,
CreationDate,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS CreationTimestamp,
SourceOfSupplyIsAssigned
FROM I_PurchaseRequisitionAPI01
WHERE CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
AND CompanyCode IN ('[Your Company Code]')
),
CHANGE_DOCS AS (
SELECT
ObjectValue AS PurchaseRequisition,
UserName,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS ChangeTimestamp,
FieldName,
ValueNew,
ValueOld
FROM I_ChangeDocument AS H
JOIN I_ChangeDocumentItem AS I
ON H.ChangeDocument = I.ChangeDocument
WHERE H.Objectclass = 'EINKBELEG'
AND H.CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
)
-- 1. Requisition Created
SELECT
R.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Created' AS "ActivityName",
R.CreationTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM REQUISITIONS AS R
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON R.PurchaseRequisition = I.PurchaseRequisition
UNION ALL
-- 2. Requisition Submitted For Approval & 5. Approval Step Started
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
CASE
WHEN C.ValueOld = ''
THEN 'Requisition Submitted For Approval'
ELSE 'Approval Step Started'
END AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R
ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew != ''
UNION ALL
-- 3. Requisition Amended
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Amended' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('MENGE', 'PREIS', 'MATNR', 'LIFNR', 'INFNR')
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 4. Approval Reset
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Reset' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueOld != '' AND C.ValueNew = ''
UNION ALL
-- 6. Approval Step Completed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Step Completed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew IN ('1', '2', '3', '4', '5', '6', '7') -- Adjust release codes as per your config
UNION ALL
-- 7. Requisition Approved
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Approved' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGKE' AND C.ValueNew = '2' -- Final release indicator '2' is common for approved
UNION ALL
-- 8. Requisition Rejected
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Rejected' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew = 'B' -- 'B' for Blocked/Rejected is a common setting
UNION ALL
-- 9. Requisition Withdrawn
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Withdrawn' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'LOEKZ' AND C.ValueNew = 'X'
UNION ALL
-- 10. Source of Supply Assigned
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Source of Supply Assigned' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('LIFNR', 'INFNR') AND C.ValueNew != ''
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 11. Purchase Order Created
SELECT DISTINCT
I.PurchaseRequisition AS "PurchaseRequisitionId",
'Purchase Order Created' AS "ActivityName",
CAST(CONCAT(H.PurchaseOrderDate, 'T', LPAD(H.CreationTime, 6, '0')) AS TIMESTAMP) AS "EventTime",
H.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.OrderPriceUnit * I.OrderQuantity AS "RequisitionAmount",
'PO Created' AS "RequisitionStatus"
FROM I_PurchaseOrderItemAPI01 AS I
JOIN I_PurchaseOrderAPI01 AS H
ON I.PurchaseOrder = H.PurchaseOrder
JOIN REQUISITIONS AS R
ON I.PurchaseRequisition = R.PurchaseRequisition
WHERE I.PurchaseRequisition IS NOT NULL AND I.PurchaseRequisition != ''
UNION ALL
-- 12. Requisition Closed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Closed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'EBAKZ' AND C.ValueNew = 'X' Fasi
- Prerequisiti: si assicuri di avere un utente con le autorizzazioni appropriate in SAP S/4HANA per accedere alle viste CDS richieste. Ciò include in genere i permessi per oggetti come S_TABU_NAM e l'accesso agli strumenti di visualizzazione dati.
- Metodo di accesso al sistema: determini come connettersi al database SAP S/4HANA per eseguire le query SQL. Gli strumenti comuni includono SAP HANA Studio, Eclipse IDE con ADT (ABAP Development Tools) o client SQL di terze parti come DBeaver.
- Revisione della query SQL: familiarizzi con lo script SQL fornito. Utilizza le Common Table Expressions (CTE) per raccogliere i dati delle diverse attività e li unisce in un unico Event Log.
- Personalizzazione dei placeholder: individui e sostituisca i segnaposto nella query. Dovrà impostare l'intervallo di date (formato
[AAAA-MM-GG]) per il periodo di estrazione e specificare i codici società ([Il Tuo Codice Società]) rilevanti per la sua organizzazione. - Esecuzione della query: esegua la query SQL completa e personalizzata sul database SAP S/4HANA. A seconda del volume dei dati e dell'intervallo di date selezionato, l'esecuzione potrebbe richiedere del tempo.
- Revisione iniziale dei dati: una volta completata la query, controlli le prime righe dell'output. Verifichi che tutte le colonne, come PurchaseRequisitionId, ActivityName ed EventTime, siano popolate correttamente e che i formati dei dati siano giusti.
- Trasformazione dei dati: la query fornita è progettata per generare dati pronti per il Process Mining. Le funzioni
CASTeCONCATassicurano la coerenza dei tipi di dati. Non dovrebbero essere necessarie trasformazioni post-esecuzione. - Esportazione dell'Event Log: esporti l'intero set di risultati dal client SQL in un file CSV. Si assicuri che la codifica del file sia impostata su UTF-8 per evitare problemi con i caratteri.
- Preparazione per l'upload: prima di caricare i dati nello strumento di Process Mining, verifichi che il file CSV abbia gli header corretti (
PurchaseRequisitionId,ActivityName,EventTime, ecc.) e che il formato di data e ora perEventTimesia coerente e supportato dalla piattaforma. - Caricamento su ProcessMind: carichi il file CSV finale nel suo progetto ProcessMind. Configuri il progetto mappando
PurchaseRequisitionIdcome Case ID,ActivityNamecome Activity edEventTimecome Timestamp.
Configurazione
- Core CDS Views: l'estrazione utilizza principalmente
I_PurchaseRequisitionAPI01per i dati principali della richiesta,I_ChangeDocumenteI_ChangeDocumentItemper il monitoraggio delle modifiche e degli aggiornamenti di stato, eI_PurchaseOrderItemAPI01per il collegamento agli ordini d'acquisto. - Autorizzazioni: l'utente che esegue l'operazione deve avere accesso in lettura alle viste CDS sopra menzionate. Consulti il suo team di sicurezza SAP per i ruoli e le autorizzazioni necessarie.
- Filtro per intervallo di date: è fondamentale applicare un filtro sulla data di creazione della richiesta (
CreationDate) per limitare il volume dei dati. Per un'analisi iniziale, si consiglia un intervallo da 3 a 6 mesi. - Filtro organizzativo: filtri i dati per
CompanyCodeper assicurarsi di analizzare il processo della corretta entità aziendale. Può anche considerare l'uso di filtri perPurchaseRequisitionTypeper concentrarsi su processi di approvvigionamento specifici, ad esempio beni standard rispetto ai servizi. - Configurazione dei documenti di modifica: l'acquisizione di attività come "Richiesta modificata" e i vari step di approvazione dipende dall'attivazione del log dei documenti di modifica per i campi rilevanti nel sistema SAP. Se questi eventi mancano, verifichi la configurazione del sistema per la tabella EBAN.
- Performance: per sistemi di grandi dimensioni con milioni di richieste, l'esecuzione di questa query su un periodo lungo potrebbe influire sulle prestazioni. Consideri l'esecuzione in orari non di punta o in un ambiente non di produzione con dati aggiornati di recente.
a Query di Esempio sql
WITH REQUISITIONS AS (
SELECT
PurchaseRequisition,
PurchaseRequisitionType,
PurReqnDescription,
CreatedByUser,
CreationDate,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS CreationTimestamp,
SourceOfSupplyIsAssigned
FROM I_PurchaseRequisitionAPI01
WHERE CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
AND CompanyCode IN ('[Your Company Code]')
),
CHANGE_DOCS AS (
SELECT
ObjectValue AS PurchaseRequisition,
UserName,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS ChangeTimestamp,
FieldName,
ValueNew,
ValueOld
FROM I_ChangeDocument AS H
JOIN I_ChangeDocumentItem AS I
ON H.ChangeDocument = I.ChangeDocument
WHERE H.Objectclass = 'EINKBELEG'
AND H.CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
)
-- 1. Requisition Created
SELECT
R.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Created' AS "ActivityName",
R.CreationTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM REQUISITIONS AS R
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON R.PurchaseRequisition = I.PurchaseRequisition
UNION ALL
-- 2. Requisition Submitted For Approval & 5. Approval Step Started
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
CASE
WHEN C.ValueOld = ''
THEN 'Requisition Submitted For Approval'
ELSE 'Approval Step Started'
END AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R
ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew != ''
UNION ALL
-- 3. Requisition Amended
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Amended' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('MENGE', 'PREIS', 'MATNR', 'LIFNR', 'INFNR')
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 4. Approval Reset
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Reset' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueOld != '' AND C.ValueNew = ''
UNION ALL
-- 6. Approval Step Completed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Step Completed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew IN ('1', '2', '3', '4', '5', '6', '7') -- Adjust release codes as per your config
UNION ALL
-- 7. Requisition Approved
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Approved' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGKE' AND C.ValueNew = '2' -- Final release indicator '2' is common for approved
UNION ALL
-- 8. Requisition Rejected
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Rejected' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew = 'B' -- 'B' for Blocked/Rejected is a common setting
UNION ALL
-- 9. Requisition Withdrawn
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Withdrawn' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'LOEKZ' AND C.ValueNew = 'X'
UNION ALL
-- 10. Source of Supply Assigned
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Source of Supply Assigned' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('LIFNR', 'INFNR') AND C.ValueNew != ''
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 11. Purchase Order Created
SELECT DISTINCT
I.PurchaseRequisition AS "PurchaseRequisitionId",
'Purchase Order Created' AS "ActivityName",
CAST(CONCAT(H.PurchaseOrderDate, 'T', LPAD(H.CreationTime, 6, '0')) AS TIMESTAMP) AS "EventTime",
H.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.OrderPriceUnit * I.OrderQuantity AS "RequisitionAmount",
'PO Created' AS "RequisitionStatus"
FROM I_PurchaseOrderItemAPI01 AS I
JOIN I_PurchaseOrderAPI01 AS H
ON I.PurchaseOrder = H.PurchaseOrder
JOIN REQUISITIONS AS R
ON I.PurchaseRequisition = R.PurchaseRequisition
WHERE I.PurchaseRequisition IS NOT NULL AND I.PurchaseRequisition != ''
UNION ALL
-- 12. Requisition Closed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Closed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'EBAKZ' AND C.ValueNew = 'X'