Uw Inkoop tot Betaling - Inkoopaanvraag Data Template
Uw Inkoop tot Betaling - Inkoopaanvraag Data Template
- Aanbevolen attributen om te verzamelen voor gedetailleerde analyse
- Belangrijkste activities om te volgen voor proces discovery
- Richtlijnen voor data-extractie uit SAP S/4HANA
Purchase to Pay - Inkoopaanvraagattributen
| Naam | Omschrijving | ||
|---|---|---|---|
| Activiteitsnaam ActivityName | De naam van de bedrijfsactiviteit die op een specifiek moment in het aanvraagproces heeft plaatsgevonden. | ||
| Omschrijving De Activiteitsnaam beschrijft een specifieke event of taak die plaatsvond binnen de levenscyclus van een inkoopaanvraag. Deze activiteiten zijn afgeleid van systeemlogboeken, zoals wijzigingsdocumenten en workflowhistorieën, en vertegenwoordigen belangrijke procesmijlpalen zoals 'Requisition Created', 'Approval Step Started' of 'Purchase Order Created'. Het analyseren van deze activiteiten maakt de visualisatie van de processtroom, identificatie van knelpunten en meting van de bestede tijd in verschillende stadia mogelijk. Het begrijpen van de volgorde en frequentie van activiteiten zoals 'Requisition Amended' of 'Requisition Rejected' is cruciaal voor het identificeren van procesinefficiënties en verbeterpunten. Het belang Het definieert de stappen in het proces, vormt de ruggengraat van de proceskaart en maakt analyse van processtroom, variaties en knelpunten mogelijk. Vindplaats Dit is een afgeleid attribuut, doorgaans geconstrueerd door data te interpreteren uit wijzigingsdocumenttabellen (CDHDR, CDPOS) en workflowlogboeken (bijv. SWWLOGHIST). Voorbeelden Aanvraag AangemaaktGoedkeuringsstap voltooidAanvraag GoedgekeurdInkooporder Aangemaakt | |||
| Inkoopaanvraag ID PurchaseRequisitionId | De unieke identificatie voor een inkoopaanvraagdocument. | ||
| Omschrijving De Inkoopaanvraag ID is de primaire sleutel die elke aanvraag voor goederen of diensten binnen SAP S/4HANA uniek identificeert. Het dient als de centrale case-identificatie, die alle activiteiten en wijzigingen met betrekking tot een specifieke aanvraag koppelt, vanaf de aanmaak tot de uiteindelijke staat, zoals goedkeuring, afwijzing of omzetting in een inkooporder. In process mining is dit attribuut fundamenteel voor het reconstrueren van de end-to-end levenscyclus van elke aanvraag. Door alle gerelateerde events te groeperen onder één Inkoopaanvraag ID, kunnen analisten nauwkeurig cyclustijden meten, statuswijzigingen volgen en de verschillende paden analyseren die een aanvraag kan doorlopen binnen het goedkeuringsproces. Het belang Dit is de essentiële case-identificatie die alle gerelateerde processtappen verbindt, waardoor een compleet en coherent beeld van de aanvraaglebenscyclus mogelijk wordt. Vindplaats Dit attribuut is het Inkoopaanvraagnummer, te vinden in tabel EBAN, veld BANFN. Voorbeelden 100178901001789110017892 | |||
| Tijdstip Gebeurtenis EventTime | De exacte datum en tijd waarop een specifieke activiteit plaatsvond. | ||
| Omschrijving Event Time is de timestamp die vastlegt wanneer een activiteit plaatsvond. Deze data is cruciaal voor de chronologische ordening van events binnen een case en vormt de basis voor alle duur- en prestatieberekeningen in process mining. Zo bepaalt het tijdsverschil tussen de events 'Inkoopaanvraag ingediend' en 'Inkoopaanvraag goedgekeurd' de doorlooptijd van de goedkeuring. Nauwkeurige timestamps zijn essentieel voor het analyseren van procesprestaties, het identificeren van vertragingen en het monitoren van de naleving van service level agreements. Dit attribuut maakt dashboards mogelijk die doorlooptijden visualiseren, vastgelopen inkoopaanvragen volgen en prestaties over verschillende tijdsperioden vergelijken. Het belang Deze timestamp is essentieel voor het ordenen van events, het berekenen van cyclustijden en het analyseren van procesprestaties en knelpunten. Vindplaats Timestamps worden doorgaans verkregen uit wijzigingsdocumentheaders (CDHDR-UDATE, CDHDR-UTIME) of workflow event logs. Voorbeelden 2023-04-15T10:05:30Z2023-04-15T14:22:01Z2023-04-16T09:00:15Z | |||
| Aanvraagbedrag RequisitionAmount | De totale monetaire waarde van de inkoopaanvraag. | ||
| Omschrijving Het Aanvraagbedrag vertegenwoordigt de totale geschatte kosten van de gevraagde goederen of diensten. Deze waarde is vaak een belangrijke factor bij het bepalen van de complexiteit en duur van de goedkeuringsworkflow, waarbij aanvragen met een hogere waarde doorgaans meer goedkeuringsniveaus vereisen. Het analyseren van dit attribuut maakt segmentatie van het proces op basis van waarde mogelijk. Het kan helpen bij het beantwoorden van vragen zoals: 'Duurt het langer om aanvragen met een hoge waarde goed te keuren?' of 'Wat is de waarde van aanvragen die frequent worden afgewezen?'. Het is een kritische dimensie voor het begrijpen van de financiële impact van procesinefficiënties. Het belang Helpt het proces te segmenteren op financiële impact, vaak correlerend met goedkeuringscomplexiteit en doorlooptijd. Het is essentieel voor waardegedreven procesanalyse. Vindplaats De totale waarde is te vinden in tabel EBAN, veld GFWERT. De waarde op itemniveau is in EBAN-PREIS. Voorbeelden 1500.0075000.50250.75 | |||
| Aanvraagstatus RequisitionStatus | De huidige verwerkings- of goedkeuringsstatus van de inkoopaanvraag. | ||
| Omschrijving De Aanvraagstatus geeft de huidige staat van de aanvraag binnen zijn levenscyclus aan. In SAP wordt dit vaak vertegenwoordigd door de Vrijgave-indicator, die aangeeft of een aanvraag geblokkeerd is, ter goedkeuring, gedeeltelijk goedgekeurd of volledig goedgekeurd. Deze status verandert naarmate de aanvraag door de workflow beweegt. Het volgen van de status over tijd is fundamenteel voor het begrijpen van de processtroom. Het helpt bij het identificeren waar aanvragen blijven hangen en hoe lang. Het analyseren van overgangen tussen statussen maakt een gedetailleerd overzicht van het goedkeuringsproces en zijn varianten mogelijk. Het belang Geeft de huidige status van een inkoopaanvraag aan, wat cruciaal is voor het volgen van de voortgang, het identificeren van knelpunten en het analyseren van de processtroom. Vindplaats De vrijgavestatus wordt vaak bepaald door de Vrijgave-indicator, te vinden in tabel EBAN, veld FRGZU. Voorbeelden B1S | |||
| Aanvraagtype RequisitionType | Een code die de inkoopaanvraag classificeert, bijvoorbeeld voor standaardartikelen, diensten of kapitaaluitgaven. | ||
| Omschrijving Het Aanvraagtype, ook bekend als Documenttype in SAP, is een belangrijk configuratieveld dat inkoopaanvragen categoriseert. Verschillende typen kunnen verschillende goedkeuringsworkflows activeren, hebben verschillende veldinstellingen en worden gebruikt voor verschillende bedrijfsdoeleinden, zoals standaard voorraadartikelen, externe diensten of activa-aankopen. Door het proces te analyseren op basis van Aanvraagtype, kunnen organisaties begrijpen hoe verschillende typen aanvragen worden afgehandeld. Het maakt het vergelijken van prestaties, cyclustijden en goedkeuringspaden over categorieën heen mogelijk, wat kan onthullen of bepaalde aanvraagtypen efficiënter of minder efficiënt zijn en helpen bij het aanpassen van procesverbeteringen. Het belang Categoriseert inkoopaanvragen voor vergelijkende analyse, wat helpt te begrijpen of verschillende typen aanvragen verschillende processtromen, knelpunten of doorlooptijden hebben. Vindplaats Dit is het Documenttype-veld, te vinden in tabel EBAN, veld BSART. Voorbeelden NBFORV | |||
| Afdeling Department | De afdeling of kostenplaats waaraan de kosten van de aanvraag worden toegerekend. | ||
| Omschrijving Het Afdelingsattribuut, vaak vertegenwoordigd door de Kostenplaats in SAP, identificeert de bedrijfseenheid die verantwoordelijk is voor de aangevraagde aankoop. Het is een cruciaal financieel en organisatorisch gegeven dat wordt toegewezen op regelitemniveau van een aanvraag. In process mining is dit attribuut essentieel voor afdelingsprestatieanalyse. Het maakt dashboards mogelijk die belangrijke metrieken zoals cyclustijd, wijzigingsfrequenties en afwijzingspercentages vergelijken over verschillende afdelingen. Dit helpt bij het identificeren van goed presterende afdelingen wiens praktijken elders kunnen worden overgenomen, evenals afdelingen die aanvullende training of procesondersteuning nodig hebben. Het belang Maakt prestatievergelijking tussen bedrijfsonderdelen mogelijk, belicht variaties in doorlooptijden of afkeuringspercentages om best practices en verbeterpunten te identificeren. Vindplaats Dit is de Kostenplaats, doorgaans te vinden in de rekeningtoewijzingstabel EBKN, veld KOSTL. Voorbeelden FIN-1001IT-2005MKT-3010 | |||
| Gebruikers-ID UserId | De identificatie van de gebruiker die de aanvraag heeft aangemaakt of een specifieke activiteit heeft uitgevoerd. | ||
| Omschrijving De Gebruikers-ID identificeert de medewerker of systeemgebruiker die verantwoordelijk is voor een specifieke event in de levenscyclus van de aanvraag. Dit kan de persoon zijn die de aanvraag heeft aangemaakt, de manager die deze heeft goedgekeurd, of de agent die deze heeft gewijzigd. In geval van geautomatiseerde stappen kan dit een systeem- of batchgebruikers-ID zijn. Analyseren op Gebruikers-ID helpt bij het begrijpen van gebruikersspecifiek gedrag, werklastverdeling en prestaties. Het is essentieel voor het identificeren van trainingsbehoeften, het herkennen van goed presterende individuen en het waarborgen van verantwoordelijkheid binnen het proces. Het ondersteunt ook afdelingsprestatieanalyse in combinatie met gebruikersstamdata. Het belang Maakt analyse van gebruikersprestaties, werkbelastingdistributie en procescompliance mogelijk. Het is cruciaal voor het identificeren van trainingsmogelijkheden en resource-knelpunten. Vindplaats Gevonden in EBAN-ERNAM voor de creator. Voor latere wijzigingen, in CDHDR-USERNAME. Voor goedkeuringen, in workflow logs. Voorbeelden JSMITHRROEWF-BATCH | |||
| Goedkeurder ID ApproverId | De identificatie van de gebruiker die een goedkeurings- of afwijzingsstap heeft uitgevoerd. | ||
| Omschrijving De Goedkeurder ID identificeert specifiek de gebruiker die een goedkeurings- of afwijzingsactiviteit heeft voltooid. Dit verschilt van de algemene Gebruikers-ID, aangezien het uitsluitend gericht is op de besluitvormers binnen de goedkeuringsworkflow. Het vastleggen van deze informatie is van vitaal belang voor een gedetailleerde analyse van het goedkeuringsproces. Dit attribuut maakt de analyse van goedkeuringsgedrag mogelijk, zoals het identificeren van managers met lange goedkeuringstijden of degenen die frequent aanvragen afwijzen. Het is fundamenteel voor dashboards die gericht zijn op cyclustijden van goedkeuringsstappen en workflow knelpuntanalyse, en helpt bij het aanwijzen van specifieke personen of rollen die vertragingen kunnen veroorzaken. Het belang Pinpoint de specifieke beslisser in een goedkeuringsstap, waardoor gedetailleerde analyse van goedkeuringscycli en knelpunten per individu of rol mogelijk is. Vindplaats Deze informatie wordt doorgaans geëxtraheerd uit SAP Business Workflow-tabellen zoals SWW_WI2OBJ en SWWLOGHIST, die werkitems koppelen aan de uitvoerende gebruiker. Voorbeelden MJOHNSONCWILLIAMSLBLACK | |||
| Bewerkingstijd ProcessingTime | De duur van de tijd besteed aan een specifieke activiteit. | ||
| Omschrijving Processing Time meet de tijd die nodig was om een enkele activiteit te voltooien. Het wordt berekend als het verschil tussen de eindtijd en de begintijd van een event. Voor veel events in SAP zijn de begin- en eindtijden hetzelfde, wat resulteert in een verwerkingstijd van nul. Echter, voor goedkeuringsstappen kan het de tijd vertegenwoordigen die een goedkeurder aan de taak heeft besteed. Deze berekende metric is nuttig voor het begrijpen van de inspanning die gemoeid is met verschillende processtappen. Het kan helpen onderscheid te maken tussen de tijd dat een case wacht (wachttijd) en de tijd dat er actief aan wordt gewerkt (verwerkingstijd), wat een genuanceerder beeld geeft van de procesprestaties. Het belang Meet de actieve werktijd voor een activiteit, helpt onderscheid te maken tussen bestede werktijd en wachttijd, wat cruciaal is voor resource-analyse. Vindplaats Dit is een berekend attribuut, doorgaans afgeleid als Eindtijd min Begintijd voor elke event in de event log. Voorbeelden PT15MPT2H30MP1D | |||
| Bronsysteem SourceSystem | Identificeert de specifieke SAP S/4HANA-instantie waaruit de data werd geëxtraheerd. | ||
| Omschrijving Het Bronsysteemattribuut geeft het bronsysteem aan waar de procesdata werd gegenereerd. In organisaties met meerdere SAP-instances, zoals verschillende systemen voor ontwikkeling, kwaliteitsborging en productie, of afzonderlijke systemen voor verschillende regio's, is dit veld cruciaal voor datagovernance en context. Het zorgt ervoor dat data uit verschillende bronnen kan worden onderscheiden, voorkomt foutieve aggregatie en maakt systeemspecifieke analyse mogelijk. Het is een verplicht attribuut voor het handhaven van datalinie en het waarborgen van de traceerbaarheid van de procesdata. Het belang Biedt essentiële context voor data-oorsprong en -governance, vooral in landschappen met meerdere systemen, wat datatraceerbaarheid garandeert. Vindplaats Dit is doorgaans de SAP Systeem-ID (SID), die kan worden opgehaald uit systeemvariabelen of configuratietabellen. Voorbeelden S4PECCS4H_PROD_01 | |||
| Eindtijd EndTime | De exacte datum en tijd waarop een specifieke activiteit is voltooid. | ||
| Omschrijving EndTime is de timestamp die vastlegt wanneer een activiteit is voltooid. Hoewel veel systeemgegenereerde events ogenblikkelijk zijn (wat betekent dat StartTime gelijk is aan EndTime), kunnen menselijke taken zoals goedkeuringen een duidelijk begin en einde hebben. Deze timestamp markeert de voltooiing van dat werk. Een aparte EndTime maakt een nauwkeurigere meting mogelijk van actieve verwerkingstijd versus inactieve wachttijd. Het wordt gebruikt in combinatie met StartTime om de ProcessingTime-metric te berekenen. Dit detailniveau verbetert de analyse van resourcegebruik en efficiëntie voor handmatige taken. Het belang Markeert de voltooiing van een activiteit, wat de berekening van actieve verwerkingstijd mogelijk maakt en een gedetailleerder beeld geeft van de taakduur. Vindplaats Dit is afgeleid van workflowlogboeken die zowel de aanmaaktijd (StartTime) als de voltooiingstijd (EndTime) van een werkitem kunnen vastleggen. Voorbeelden 2023-04-15T10:20:30Z2023-04-15T14:25:01Z2023-04-16T11:00:45Z | |||
| Inkoopordernummer PurchaseOrderNumber | Het nummer van de inkooporder die uit de aanvraag is aangemaakt. | ||
| Omschrijving Het Inkoopordernummer is de identificatie van het officiële inkoopdocument dat is aangemaakt uit een goedgekeurde aanvraag. Het aanmaken van een inkooporder is vaak de uiteindelijke, succesvolle uitkomst voor een aanvraag, wat betekent dat de aanvraag is omgezet in een formele bestelling bij een leverancier. Dit attribuut is cruciaal voor het meten van de KPI Doorlooptijd van Aanvraag tot Inkooporder en de algemene conversieratio. Het koppelt het aanvraagproces aan het daaropvolgende inkoopproces, waardoor een breder, end-to-end beeld van de gehele Purchase-to-Pay cyclus mogelijk wordt. Het belang Koppelt de inkoopaanvraag aan het daaropvolgende inkoopdocument, wat de meting van de conversieratio van aanvraag naar PO en de doorlooptijd mogelijk maakt. Vindplaats Gevonden in tabel EBAN, veld EBELN, zodra een PO is aangemaakt vanuit het aanvraagitem. Voorbeelden 450001789045000178914500017892 | |||
| Is Geautomatiseerd IsAutomated | Een vlag die aangeeft of een activiteit door een systeemgebruiker is uitgevoerd in plaats van door een mens. | ||
| Omschrijving Het Is Geautomatiseerd attribuut is een booleaanse vlag die 'waar' is als een activiteit werd uitgevoerd door een systeem- of batchgebruiker, zoals 'WF-BATCH' voor workflowacties. Dit helpt bij het onderscheiden tussen handmatige en geautomatiseerde stappen in het proces. Dit attribuut is essentieel voor het meten van het automatiseringsniveau in het aanvraagproces en voor het berekenen van de KPI 'Geautomatiseerd Goedkeuringspercentage'. Door te filteren op geautomatiseerde of handmatige stappen, kunnen analisten hun efficiëntie vergelijken en kansen voor verdere automatisering identificeren om verwerkingstijden en handmatige inspanning te verminderen. Het belang Onderscheidt menselijke en systeemgestuurde activiteiten, wat essentieel is voor het meten van automatiseringspercentages en het identificeren van kansen om handmatige taken te automatiseren. Vindplaats Dit is een afgeleid attribuut, doorgaans gebaseerd op een regel die controleert of de Gebruikers-ID voor een event behoort tot een lijst van bekende systeem- of batchgebruikers. Voorbeelden truefalse | |||
| Is herstelwerk IsRework | Een vlag die aangeeft of een activiteit herwerk betreft, zoals een wijziging na indiening. | ||
| Omschrijving Is Rework is een berekende booleaanse vlag die activiteiten identificeert die niet-waardetoevoegend of repetitief werk vertegenwoordigen. Een veelvoorkomend voorbeeld in dit proces is de activiteit 'Inkoopaanvraag Gewijzigd' die plaatsvindt nadat de inkoopaanvraag al is ingediend voor goedkeuring, waardoor het goedkeuringsproces opnieuw moet starten. Dit attribuut is cruciaal voor het kwantificeren van de hoeveelheid herwerk in het proces en de impact ervan op de totale doorlooptijden. Het dashboard voor Inkoopaanvraagwijzigingen en Herwerkpercentages is afhankelijk van deze vlag om procesinefficiënties te belichten. Het verminderen van herwerk is vaak een primair doel van procesverbeteringsinitiatieven, aangezien dit direct vertaalt naar bespaarde tijd en moeite. Het belang Markeert activiteiten die verspilde moeite of herhaling vertegenwoordigen, waardoor directe meting van herwerk en de impact ervan op procesefficiëntie mogelijk is. Vindplaats Dit is een berekend attribuut. De logica zou doorgaans elke 'Requisition Amended'-activiteit die plaatsvindt na de eerste 'Requisition Submitted For Approval'-activiteit als herwerk markeren. Voorbeelden truefalse | |||
| Laatste data-update LastDataUpdate | De tijdstempel die aangeeft wanneer de gegevens voor dit record het laatst zijn ververst vanuit het bronsysteem. | ||
| Omschrijving Dit attribuut registreert de datum en tijd van de meest recente data-extractie of -update uit het bronsysteem. Het is een cruciaal stuk metadata voor het begrijpen van de versheid van de geanalyseerde data. Analisten en zakelijke gebruikers vertrouwen op deze timestamp om te weten of de procesdata de meest actuele operationele status weergeeft. In elke procesanalyse is het kennen van de actualiteit van de data fundamenteel voor het nemen van weloverwogen beslissingen. Dit attribuut helpt gebruikersverwachtingen te beheren en zorgt ervoor dat conclusies worden getrokken uit data die zo actueel is als vereist voor de specifieke analyse. Het belang Geeft de actualiteit van de data aan, wat cruciaal is voor het vertrouwen in de analyse en het nemen van tijdige bedrijfsbeslissingen. Vindplaats Deze Voorbeelden 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
| Naam goedkeuringsstap ApprovalStepName | De specifieke naam of omschrijving van een goedkeuringsstap in de workflow. | ||
| Omschrijving De Naam Goedkeuringsstap biedt een menselijk leesbare omschrijving van een specifieke fase in de goedkeuringsworkflow, zoals 'Manager Approval' of 'VP Finance Approval'. Dit is descriptiever dan een generieke 'Approval Step Completed'-activiteit. Dit attribuut is kritiek voor de Approval Step Cycle Time en Workflow Bottleneck Analysis dashboards. Het maakt een gedetailleerd inzicht in het goedkeuringsproces mogelijk, waardoor precies kan worden aangewezen welke goedkeuringsfasen de meest significante vertragingen veroorzaken en waar werk zich opstapelt. Dit detailniveau is noodzakelijk voor gerichte interventies om de goedkeuringsketen te stroomlijnen. Het belang Biedt gedetailleerde informatie over goedkeuringsfasen, wat een precieze identificatie van knelpunten binnen de meerlaagse goedkeuringsworkflow mogelijk maakt. Vindplaats Deze informatie is afgeleid van de workflowtaakbeschrijving, die kan worden gevonden door het workflowlogboek te koppelen aan taakdefinitietabellen zoals T528T. Voorbeelden ManagergoedkeuringGoedkeuring directeurGoedkeuring VP Financiën | |||
| Reden van afwijzing RejectionReason | De reden die wordt opgegeven wanneer een inkoopaanvraag wordt afgewezen. | ||
| Omschrijving De Afwijzingsreden verklaart waarom een goedkeurder besloot een inkoopaanvraag af te wijzen. Redenen kunnen zijn: budgetoverschrijding, onjuiste informatie, non-compliance met beleid, of duplicatie van een andere aanvraag. Deze informatie biedt cruciale context voor het begrijpen van procesfouten. Het analyseren van afwijzingsredenen helpt bij het identificeren van de grondoorzaken van procesinefficiënties en herwerk. Als bijvoorbeeld 'Incorrect Cost Center' een veelvoorkomende reden is, duidt dit op een behoefte aan betere gebruikerstraining of systeemvalidatie. Dit attribuut is de sleutel tot het dashboard Requisitie Afwijzingsanalyse en is van vitaal belang voor gerichte procesverbetering. Het belang Biedt de hoofdoorzaak voor procesfouten, wat gerichte verbeteringen mogelijk maakt om herwerk te verminderen en het 'first-time-right'-percentage van inkoopaanvragen te verhogen. Vindplaats Dit is vaak geen standaardveld. Het kan worden vastgelegd in workflowcontainerelementen, lange tekst gekoppeld aan de aanvraag, of aangepaste velden. Voorbeelden Overschrijdt budgetOnjuiste leverancierDubbele aanvraag | |||
| Urgentieniveau UrgencyLevel | Een classificatie van de urgentie van de inkoopaanvraag, die de verwerkingsprioriteit kan beïnvloeden. | ||
| Omschrijving Het Urgentieniveau geeft de prioriteit van het inkoopverzoek aan. Hoewel dit geen standaard toegewezen veld is, gebruiken sommige organisaties velden zoals het Vereistenvolgnummer om deze informatie vast te leggen. Dit stelt aanvragers in staat kritieke behoeften te markeren die mogelijk versnelde verwerking vereisen. Het analyseren van de impact van urgentie is belangrijk voor het evalueren of het proces kritieke aanvragen effectief prioriteert. Het dashboard Urgentieniveau Impactanalyse gebruikt dit attribuut om cyclustijden en goedkeuringspercentages te vergelijken voor urgente versus standaard aanvragen, en helpt zo te bepalen of prioriteitsafhandeling werkt zoals bedoeld. Het belang Maakt analyse mogelijk van hoe de procesprestaties verschillen voor aanvragen met hoge prioriteit, wat helpt te valideren of urgente items werkelijk versneld worden. Vindplaats Er is geen standaard urgentieveld. Sommige bedrijven gebruiken hiervoor het Vereistenvolgnummer (EBAN-BEDAR). Het kan ook een aangepast veld zijn. Voorbeelden HoogGemiddeldLaag | |||
| Valuta Currency | De valutacode voor het aanvraagbedrag. | ||
| Omschrijving Dit attribuut specificeert de valuta waarin het aanvraagbedrag is uitgedrukt, bijvoorbeeld USD, EUR of JPY. Het biedt de benodigde context voor het attribuut Aanvraagbedrag, vooral in multinationale organisaties die met meerdere valuta's werken. Voor nauwkeurige financiële analyse en rapportage is het essentieel om de valuta in overweging te nemen. Bij het aggregeren of vergelijken van aanvraagwaarden, moeten alle bedragen worden omgezet naar een gemeenschappelijke valuta om betekenisvolle resultaten te garanderen. Dit attribuut is een vereiste voor dergelijke conversies. Het belang Biedt essentiële context voor het aanvraagbedrag, wat nauwkeurige financiële analyse en vergelijkingen in omgevingen met meerdere valuta mogelijk maakt. Vindplaats Dit is te vinden in tabel EBAN, veld WAERS. Voorbeelden USDEURGBP | |||
| Vereiste Leverdatum RequiredByDate | De datum waarop de aanvrager de gevraagde goederen of diensten nodig heeft. | ||
| Omschrijving De Benodigde Datum, of Leveringsdatum in SAP, specificeert wanneer de goederen of diensten op het aanvraagregelitem nodig zijn. Deze datum wordt door de aanvrager ingesteld en dient als richtpunt voor het gehele inkoopproces. Dit attribuut is essentieel voor het berekenen van de KPI 'On-Time Aanvraagafhandelingspercentage'. Door de Benodigde Datum te vergelijken met de datum van definitieve goedkeuring of aanmaak van de inkooporder, kan de organisatie haar vermogen meten om aan interne serviceniveaus en bedrijfsbehoeften te voldoen. Het analyseren van aanvragen die deze datum missen, kan systemische vertragingen in het inkoopproces aan het licht brengen. Het belang Definieert de beoogde voltooiingsdatum voor een aanvraag, wat het meten van tijdige levering en naleving van interne serviceniveaus mogelijk maakt. Vindplaats Dit is de Leveringsdatum, te vinden op itemniveau in tabel EBAN, veld LFDAT. Voorbeelden 2023-11-152023-12-012024-01-20 | |||
Purchase to Pay - Inkoopaanvraagactiviteiten
| Activiteit | Omschrijving | ||
|---|---|---|---|
| Aanvraag Aangemaakt | Markeert de initiële aanmaak van het inkoopaanvraagdocument in het systeem. Dit event wordt expliciet vastgelegd wanneer een gebruiker een nieuwe inkoopaanvraag voor het eerst opslaat, met registratie van de aanmaak-timestamp. | ||
| Het belang Deze activiteit dient als primair startpunt voor de analyse van de aanvraaglebenscyclus. Het is essentieel voor het meten van de end-to-end cyclustijd, van initiële behoefte-identificatie tot definitieve goedkeuring of omzetting naar een inkooporder. Vindplaats Dit is een expliciete event vastgelegd vanuit de EBAN-tabel, gebruikmakend van de aanmaakdatum (ERDAT) en aanmaaktijd (ERZEIT) velden voor het specifieke inkoopaanvraagnummer (BANFN). Vastleggen Gebruik aanmaak-timestampvelden (ERDAT, ERZEIT) uit de EBAN-tabel voor elke aanvraag (BANFN). Gebeurtenistype explicit | |||
| Aanvraag Afgesloten | Geeft aan dat het inkoopaanvraagitem als volledig verwerkt wordt beschouwd en dat er geen verdere inkooporders meer van kunnen worden aangemaakt. Deze status wordt doorgaans automatisch ingesteld zodra de volledige hoeveelheid is besteld. | ||
| Het belang Deze activiteit vertegenwoordigt de uiteindelijke, succesvolle voltooiing van de levenscyclus van het aanvraagitem. Het bevestigt dat de bedrijfsbehoefte volledig is omgezet in een inkooporder. Vindplaats Afgeleid van tabel EBAN. Dit gebeurt wanneer de 'Gesloten' indicator (EBAKZ) is ingesteld, wat doorgaans gebeurt wanneer de bestelde hoeveelheid in PO's gelijk is aan de aangevraagde hoeveelheid. Vastleggen Identificeer de event waarbij de 'Gesloten' indicator (EBAKZ) in tabel EBAN is ingesteld via wijzigingsdocumenten. Gebeurtenistype inferred | |||
| Aanvraag Afgewezen | Vertegenwoordigt de definitieve afwijzing van de inkoopaanvraag door een goedkeurder, wat het proces stopt. Dit wordt vastgelegd door een specifieke statusupdate die afwijzing aangeeft. | ||
| Het belang Deze activiteit is een kritiek faalpunt. Het analyseren van de afwijzingsfrequentie, -redenen en -momenten in het proces helpt bij het identificeren van problemen met beleidscompliance, budget of aanvraagkwaliteit. Vindplaats Afgeleid van een statuswijziging in tabel EBAN. De verwerkingsstatus (PROCSTAT) of een vrijgave-indicator wordt ingesteld op een waarde die expliciet 'Afgewezen' betekent. Vastleggen Identificeer de timestamp waarop de algehele status in EBAN wordt bijgewerkt naar een 'Afgewezen' status via wijzigingsdocumenten. Gebeurtenistype inferred | |||
| Aanvraag Goedgekeurd | Markeert de definitieve en volledige goedkeuring van de inkoopaanvraag, waardoor deze in aanmerking komt voor conversie naar een inkooporder. Deze mijlpaal wordt afgeleid wanneer de algehele vrijgavestatus de definitieve goedgekeurde status bereikt. | ||
| Het belang Dit is een kritieke succesmijlpaal en een veelvoorkomend eindpunt voor cyclustijdanalyse. Het betekent dat de aanvraag alle controles heeft doorstaan en klaar is voor actie door de inkoopafdeling. Vindplaats Afgeleid van een statuswijziging in tabel EBAN, specifiek wanneer de algehele vrijgave-indicator (FRGZU) of verwerkingsstatus (PROCSTAT) wordt bijgewerkt naar een definitieve 'Goedgekeurd' waarde. Vastleggen Identificeer de timestamp waarop de definitieve vrijgavecode wordt toegepast of de algehele status van de inkoopaanvraag verandert naar 'Goedgekeurd'. Gebeurtenistype inferred | |||
| Goedkeuringsstap voltooid | Treedt op wanneer een goedkeurder een positieve actie onderneemt op een inkoopaanvraag, waarmee één stap in de meerlaagse goedkeuringsworkflow wordt voltooid. Dit wordt afgeleid van een wijziging in de vrijgavestatus van de inkoopaanvraag. | ||
| Het belang Deze activiteit maakt gedetailleerde analyse van de goedkeuringsworkflow mogelijk, waarbij de tijd gemeten wordt die per individuele stap wordt genomen. Het helpt bij het identificeren van efficiënte goedkeurders versus knelpunten in het proces. Vindplaats Afgeleid van wijzigingsdocumenten (CDHDR/CDPOS) voor tabel EBAN. Een wijziging van de vrijgavecodestatus (bijv. in veld FRGZU) van niet-vrijgegeven naar vrijgegeven voor een specifieke code duidt op dit event. Vastleggen Volg wijzigingen in de vrijgavestatusvelden in EBAN voor elke vrijgavecode die in de strategie is gedefinieerd. Gebeurtenistype inferred | |||
| Inkooporder Aangemaakt | Geeft aan dat een inkooporder is gegenereerd die verwijst naar het aanvraagitem. Dit is een expliciete systeemevent die de inkoopaanvraag koppelt aan een volgend inkoopdocument. | ||
| Het belang Dit is een belangrijke mijlpaal en een succesvolle uitkomst voor het aanvraagproces. De tijd tussen goedkeuring van de aanvraag en aanmaak van de inkooporder is een kritieke KPI voor het meten van de inkoopefficiëntie. Vindplaats Expliciet geregistreerd wanneer een inkooporderitem wordt aangemaakt. De koppeling wordt opgeslagen in tabel EKPO (Inkooporderitem), die het bron aanvraagnummer (BANFN) en itemnummer (BNFPO) bevat. Vastleggen Koppel tabel EKPO terug naar EBAN op het aanvraagnummer en item. De aanmaakdatum van het PO-item markeert het event. Gebeurtenistype explicit | |||
| Aanvraag Gewijzigd | Treedt op wanneer een gebruiker een belangrijk veld in de inkoopaanvraag wijzigt na de initiële aanmaak, zoals hoeveelheid, prijs of materiaal. Deze actie wordt expliciet gelogd in SAP's wijzigingsdocumentsysteem. | ||
| Het belang Het volgen van wijzigingen is cruciaal voor het identificeren van herwerklussen en hun impact op cyclustijden. Een hoge frequentie van wijzigingen duidt op problemen met de datakwaliteit of veranderende vereisten, wat belangrijke gebieden voor procesverbetering zijn. Vindplaats Expliciet gelogd in de SAP-wijzigingsdocumenttabellen (CDHDR en CDPOS) voor wijzigingen in tabel EBAN. Elke wijziging in een getracked veld creëert een entry. Vastleggen Extraheer wijzigingsevents uit CDHDR/CDPOS waarbij de objectklasse BANF is voor inkoopaanvragen. Gebeurtenistype explicit | |||
| Aanvraag Ingediend Ter Goedkeuring | Vertegenwoordigt het moment waarop de aanvrager de inkoopaanvraag formeel indient, wat de goedkeuringsworkflow activeert. Dit wordt doorgaans afgeleid wanneer de vrijgavestrategie van de inkoopaanvraag is bepaald en de status verandert naar 'In Goedkeuring'. | ||
| Het belang Dit is een kritieke mijlpaal die de klok start voor KPI's voor de goedkeuringscyclustijd. Het analyseren van de tijd tussen aanmaak en indiening kan vertragingen in de aanvraagvoorbereidingsfase onthullen. Vindplaats Afgeleid van wijzigingsdocumenten (CDHDR/CDPOS) voor tabel EBAN, specifiek wanneer de vrijgavestrategievelden (bijv. FRGST) worden gevuld of de algehele status (PROCSTAT) verandert om een in-goedkeuring-status weer te geven. Vastleggen Identificeer de eerste wijzigingsdocumententry die het begin van de goedkeuringsworkflow of een statuswijziging naar 'In Goedkeuring' aangeeft. Gebeurtenistype inferred | |||
| Aanvraag Ingetrokken | Treedt op wanneer de oorspronkelijke aanvrager de inkoopaanvraag annuleert of verwijdert voordat deze volledig is verwerkt. Dit is doorgaans een expliciete actie die een verwijderingsvlag instelt op het aanvraagitem. | ||
| Het belang Het volgen van intrekkingen helpt bij het begrijpen van de volatiliteit van de vraag en de redenen voor annulering. Het vertegenwoordigt een terminale status voor de aanvraag, waardoor verdere verwerking wordt voorkomen. Vindplaats Expliciet vastgelegd wanneer het verwijderingsindicator (LOEKZ) veld in tabel EBAN is ingesteld voor een inkoopaanvraagitem. De wijziging wordt gelogd in CDHDR/CDPOS. Vastleggen Identificeer de event waarbij de verwijderingsindicator (LOEKZ) in tabel EBAN is ingesteld op 'L'. Gebeurtenistype explicit | |||
| Bron van Levering Toegekend | Vertegenwoordigt de actie van een inkoper die een specifieke leverancier, contract of info record toewijst aan een goedgekeurd aanvraagitem. Dit is een belangrijke stap in de voorbereiding van de inkoopaanvraag voor de aanmaak van een inkooporder. | ||
| Het belang Deze activiteit overbrugt de kloof tussen goedkeuring en bestellen. Het meten van de tijd om een bron toe te wijzen, helpt bij het identificeren van vertragingen in de werklast van de inkoper en de efficiëntie van de sourcing. Vindplaats Afgeleid van een waarde die wordt ingevoerd in de bron-van-aanbod gerelateerde velden in tabel EBAN, zoals vaste leverancier (LIFNR), info record (INFNR) of contract (KONNR). Vastleggen Volg het invullen van velden zoals LIFNR, INFNR of KONNR in de EBAN-tabel via wijzigingsdocumenten. Gebeurtenistype inferred | |||
| Goedkeuring resetten | Vertegenwoordigt een event waarbij de gehele goedkeuringsworkflow wordt gereset, vaak als gevolg van een significante wijziging in de inkoopaanvraag. Dit dwingt het goedkeuringsproces om opnieuw te beginnen vanaf het eerste niveau. | ||
| Het belang Deze activiteit benadrukt aanzienlijk herwerk dat de cyclustijd ernstig beïnvloedt. Het identificeren van de oorzaken van goedkeuringsresets is essentieel voor het stroomlijnen van het proces en het verminderen van vertragingen. Vindplaats Afgeleid van wijzigingsdocumenten (CDHDR/CDPOS) op tabel EBAN. Dit event wordt gedetecteerd wanneer vrijgavestatusvelden (zoals FRGKZ of FRGZU) worden gewist nadat ze gedeeltelijk of volledig zijn ingesteld. Vastleggen Zoek naar een wijziging in de vrijgavestatus van een vrijgegeven naar een niet-vrijgegeven status binnen de change logs. Gebeurtenistype inferred | |||
| Goedkeuringsstap gestart | Geeft aan dat een inkoopaanvraag wacht op actie van een specifieke goedkeurder of goedkeuringsgroep. Dit wordt afgeleid wanneer de status van de inkoopaanvraag aangeeft dat deze in afwachting is van een specifieke vrijgavecode. | ||
| Het belang Deze activiteit is essentieel voor het aanwijzen van knelpunten in de goedkeuringsketen. Het analyseren van de duur van deze status helpt bij het identificeren van vastgelopen aanvragen en overbelaste goedkeurders. Vindplaats Afgeleid van de vrijgavestatusvelden van tabel EBAN (bijv. FRGZU) en de onderliggende vrijgavestrategieconfiguratie. De event start wanneer een specifieke vrijgavecode de volgende wordt die moet worden verwerkt. Vastleggen Bepaal wanneer een inkoopaanvraag een status bereikt waarin een specifieke vrijgavecode in afwachting is van goedkeuring, gebaseerd op workflow logs of statusvelden. Gebeurtenistype inferred | |||
Extractie Guides
Stappen
- Vereisten: Zorg ervoor dat u een gebruiker hebt met de juiste autorisaties in SAP S/4HANA om toegang te krijgen tot de vereiste CDS-views. Dit omvat doorgaans machtigingen voor objecten zoals S_TABU_NAM en toegang tot dataweergavetools.
- Systeemtoegangsmethode bepalen: Bepaal hoe u verbinding maakt met de SAP S/4HANA-database om SQL-queries uit te voeren. Gangbare tools zijn SAP HANA Studio, de Eclipse IDE met ADT (ABAP Development Tools), of SQL-clients van derden zoals DBeaver die verbinding kunnen maken via de SAP HANA-databaseclient.
- SQL-query bekijken: Maak uzelf vertrouwd met het meegeleverde SQL-script. Het gebruikt Common Table Expressions (CTEs) om data te verzamelen voor verschillende activiteiten en voegt deze samen om een uniform event log te creëren.
- Plaatsaanduidingen aanpassen: Zoek en vervang de plaatsaanduidingen in de query. U moet de datumperiode (
[YYYY-MM-DD]-formaat) instellen voor de extractieperiode en de relevante bedrijfscodes ([Uw Bedrijfscode]) voor uw organisatie specificeren. - Query uitvoeren: Voer de complete, aangepaste SQL-query uit op de SAP S/4HANA-database. Afhankelijk van het datavolume en de geselecteerde datumperiode kan deze query enige tijd in beslag nemen.
- Initiële data review: Zodra de query is voltooid, controleert u de eerste paar rijen van de output. Controleer of alle kolommen, zoals PurchaseRequisitionId, ActivityName en EventTime, zoals verwacht zijn ingevuld en de dataformaten correct zijn.
- Data transformatie aanpakken: De meegeleverde query is ontworpen om data uit te voeren in een formaat dat gereed is voor process mining. De functies
CASTenCONCATworden gebruikt om datatypen consistent te houden. Geen grote transformatie na uitvoering zou nodig moeten zijn. - Event log exporteren: Exporteer de gehele resultatenset van uw SQL-client naar een CSV-bestand. Zorg ervoor dat de bestandsencoding is ingesteld op UTF-8 om karakterproblemen te voorkomen.
- Voorbereiden op upload: Voordat u uploadt naar een process mining tool, controleert u of het CSV-bestand de juiste headers heeft (
PurchaseRequisitionId,ActivityName,EventTime, etc.) en dat het datum- en tijdformaat voorEventTimeconsistent is en wordt ondersteund door het doelplatform. - Uploaden naar ProcessMind: Upload het uiteindelijke CSV-bestand naar uw ProcessMind-project. Configureer het project door
PurchaseRequisitionIdte mappen als de Case ID,ActivityNameals de Activity, enEventTimeals de Timestamp.
Configuratie
- Kern CDS Views: De extractie gebruikt voornamelijk
I_PurchaseRequisitionAPI01voor kern aanvraagdata,I_ChangeDocumentenI_ChangeDocumentItemvoor het bijhouden van wijzigingen en statusupdates, enI_PurchaseOrderItemAPI01voor het koppelen aan inkooporders. - Autorisatie: De uitvoerende gebruiker heeft leesrechten nodig voor de bovengenoemde CDS-views. Raadpleeg uw SAP-beveiligingsteam voor de benodigde rollen en autorisaties.
- Datumfilter toepassen: Het is essentieel om een datumfilter toe te passen op de aanmaakdatum van de inkoopaanvraag (
CreationDate) om het datavolume te beperken. Een bereik van 3 tot 6 maanden aan data wordt aanbevolen voor een initiële analyse. - Organisatiegericht filteren: Filter de data op
CompanyCodeom te garanderen dat u het proces voor de juiste bedrijfsentiteit analyseert. U kunt ook overwegen te filteren opPurchaseRequisitionTypeom te focussen op specifieke inkoopprocessen, bijvoorbeeld standaard goederen versus diensten. - Configuratie van wijzigingsdocumenten: Het vastleggen van activiteiten zoals 'Inkoopaanvraag Gewijzigd' en diverse goedkeuringsstappen hangt af van actieve logboekregistratie van wijzigingsdocumenten voor de relevante velden in uw SAP-systeem. Als deze events ontbreken, controleer dan de systeemconfiguratie voor tabel EBAN.
- Prestaties: Voor zeer grote systemen met miljoenen inkoopaanvragen kan het uitvoeren van deze query over een lange periode de systeemprestaties beïnvloeden. Overweeg dit uit te voeren buiten piekuren of in een niet-productieomgeving met recent vernieuwde data.
a Voorbeeldquery 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' Stappen
- Vereisten: Zorg ervoor dat u een gebruiker hebt met de juiste autorisaties in SAP S/4HANA om toegang te krijgen tot de vereiste CDS-views. Dit omvat doorgaans machtigingen voor objecten zoals S_TABU_NAM en toegang tot dataweergavetools.
- Systeemtoegangsmethode bepalen: Bepaal hoe u verbinding maakt met de SAP S/4HANA-database om SQL-queries uit te voeren. Gangbare tools zijn SAP HANA Studio, de Eclipse IDE met ADT (ABAP Development Tools), of SQL-clients van derden zoals DBeaver die verbinding kunnen maken via de SAP HANA-databaseclient.
- SQL-query bekijken: Maak uzelf vertrouwd met het meegeleverde SQL-script. Het gebruikt Common Table Expressions (CTEs) om data te verzamelen voor verschillende activiteiten en voegt deze samen om een uniform event log te creëren.
- Plaatsaanduidingen aanpassen: Zoek en vervang de plaatsaanduidingen in de query. U moet de datumperiode (
[YYYY-MM-DD]-formaat) instellen voor de extractieperiode en de relevante bedrijfscodes ([Uw Bedrijfscode]) voor uw organisatie specificeren. - Query uitvoeren: Voer de complete, aangepaste SQL-query uit op de SAP S/4HANA-database. Afhankelijk van het datavolume en de geselecteerde datumperiode kan deze query enige tijd in beslag nemen.
- Initiële data review: Zodra de query is voltooid, controleert u de eerste paar rijen van de output. Controleer of alle kolommen, zoals PurchaseRequisitionId, ActivityName en EventTime, zoals verwacht zijn ingevuld en de dataformaten correct zijn.
- Data transformatie aanpakken: De meegeleverde query is ontworpen om data uit te voeren in een formaat dat gereed is voor process mining. De functies
CASTenCONCATworden gebruikt om datatypen consistent te houden. Geen grote transformatie na uitvoering zou nodig moeten zijn. - Event log exporteren: Exporteer de gehele resultatenset van uw SQL-client naar een CSV-bestand. Zorg ervoor dat de bestandsencoding is ingesteld op UTF-8 om karakterproblemen te voorkomen.
- Voorbereiden op upload: Voordat u uploadt naar een process mining tool, controleert u of het CSV-bestand de juiste headers heeft (
PurchaseRequisitionId,ActivityName,EventTime, etc.) en dat het datum- en tijdformaat voorEventTimeconsistent is en wordt ondersteund door het doelplatform. - Uploaden naar ProcessMind: Upload het uiteindelijke CSV-bestand naar uw ProcessMind-project. Configureer het project door
PurchaseRequisitionIdte mappen als de Case ID,ActivityNameals de Activity, enEventTimeals de Timestamp.
Configuratie
- Kern CDS Views: De extractie gebruikt voornamelijk
I_PurchaseRequisitionAPI01voor kern aanvraagdata,I_ChangeDocumentenI_ChangeDocumentItemvoor het bijhouden van wijzigingen en statusupdates, enI_PurchaseOrderItemAPI01voor het koppelen aan inkooporders. - Autorisatie: De uitvoerende gebruiker heeft leesrechten nodig voor de bovengenoemde CDS-views. Raadpleeg uw SAP-beveiligingsteam voor de benodigde rollen en autorisaties.
- Datumfilter toepassen: Het is essentieel om een datumfilter toe te passen op de aanmaakdatum van de inkoopaanvraag (
CreationDate) om het datavolume te beperken. Een bereik van 3 tot 6 maanden aan data wordt aanbevolen voor een initiële analyse. - Organisatiegericht filteren: Filter de data op
CompanyCodeom te garanderen dat u het proces voor de juiste bedrijfsentiteit analyseert. U kunt ook overwegen te filteren opPurchaseRequisitionTypeom te focussen op specifieke inkoopprocessen, bijvoorbeeld standaard goederen versus diensten. - Configuratie van wijzigingsdocumenten: Het vastleggen van activiteiten zoals 'Inkoopaanvraag Gewijzigd' en diverse goedkeuringsstappen hangt af van actieve logboekregistratie van wijzigingsdocumenten voor de relevante velden in uw SAP-systeem. Als deze events ontbreken, controleer dan de systeemconfiguratie voor tabel EBAN.
- Prestaties: Voor zeer grote systemen met miljoenen inkoopaanvragen kan het uitvoeren van deze query over een lange periode de systeemprestaties beïnvloeden. Overweeg dit uit te voeren buiten piekuren of in een niet-productieomgeving met recent vernieuwde data.
a Voorbeeldquery 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'