Uw Productieplanning Data Template
Uw Productieplanning Data Template
- Aanbevolen attributen om vast te leggen
- Belangrijkste activiteiten om te volgen
- Praktische extractierichtlijnen
Productieplanning Attributen
| Naam | Omschrijving | ||
|---|---|---|---|
| Activiteitsnaam ActivityName | De naam van de zakelijke of systeemgebeurtenis die op een specifiek tijdstip plaatsvond voor een productieorder. | ||
| Omschrijving De Activiteitsnaam beschrijft een specifieke stap of statusverandering binnen het productieplanningsproces. Deze events worden geëxtraheerd uit wijzigingslogs, statusupdates en transactierecords binnen SAP ECC PP, en vertegenwoordigen belangrijke mijlpalen zoals 'Productieorder Aangemaakt', 'Materiaalbeschikbaarheid Gecontroleerd' of 'Goederenontvangst Geboekt'. Dit attribuut vormt de ruggengraat van de proceskaart, waardoor analisten de sequentie van events kunnen visualiseren, procesvarianten kunnen ontdekken en knelpunten of herhaalprocessen kunnen identificeren. De duidelijkheid en granulariteit van activiteitsnamen zijn cruciaal voor het bouwen van een nauwkeurig en inzichtelijk procesmodel dat de realiteit van de operaties weerspiegelt. Het belang Het definieert de stappen in de proceskaart, waardoor het mogelijk is om de productieworkflow te visualiseren, analyseren en begrijpen. Vindplaats Gegenereerd uit diverse bronnen, waaronder statuswijzigingen in tabellen JEST/JSTO, transactielogs en wijzigingsdocumenten in CDHDR/CDPOS. Voorbeelden Productieorder VrijgegevenGoederenafgifte GeboektDefinitieve Bevestiging VastgelegdOrder Technisch Voltooid | |||
| Productieorder ProductionOrder | De unieke identifier voor een productieorder, die dient als de primaire case identifier voor het productieplanning- en uitvoeringsproces. | ||
| Omschrijving Het Productieordernummer is een unieke alfanumerieke sleutel die aan elke productieorder in SAP ECC PP wordt toegewezen. Het fungeert als het centrale object dat alle gerelateerde activiteiten verbindt, van creatie en planning tot uitvoering en definitieve afwikkeling. In process mining is dit attribuut essentieel voor het groeperen van alle events die tot één productierun behoren. Dit maakt een end-to-end analyse mogelijk van de gehele levenscyclus van een productieorder, inclusief het volgen van de voortgang, het meten van cyclustijden en het identificeren van eventuele afwijkingen van het standaardproces. Het analyseren van processen per Productieorder biedt een duidelijk beeld van hoe individuele productieverzoeken worden vervuld. Het belang Dit is de kernidentifier die alle gerelateerde procesevents verbindt, waardoor de reconstructie en analyse van elke productiereis van start tot finish mogelijk wordt. Vindplaats Dit attribuut is te vinden in de SAP-tabel AUFK, veld AUFNR. Voorbeelden 1000345100034610003471000348 | |||
| Tijdstip Gebeurtenis EventTime | De precieze `timestamp` die aangeeft wanneer de `activiteit` plaatsvond. | ||
| Omschrijving Event Time registreert de datum en tijd waarop een specifieke activiteit is uitgevoerd of een status in het systeem is vastgelegd. Deze timestamp is fundamenteel voor alle tijdsgebonden procesanalyses, inclusief het berekenen van doorlooptijden, wachttijden en de totale procesduur. Nauwkeurige timestamps zijn cruciaal voor het correct sequentieel plaatsen van events en voor prestatieanalyse. Ze stellen analisten in staat de duur tussen activiteiten te meten, vertragingen te identificeren en prestaties te evalueren tegen schema's of service level agreements. In de context van productieplanning helpt dit bij het begrijpen hoe lang elke fase van planning en uitvoering duurt. Het belang Dit attribuut biedt de chronologische sequentie van events, wat essentieel is voor het berekenen van doorlooptijden, het analyseren van prestaties en het identificeren van knelpunten. Vindplaats Afgeleid van diverse datum- en tijdvelden die verband houden met transacties en statuswijzigingen, zoals BUDAT (Boekingsdatum) van materiaaldocumenten of wijzigings-timestamps van CDHDR. Voorbeelden 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| Bronsysteem SourceSystem | Identificeert het specifieke systeem waaruit de data is geëxtraheerd. | ||
| Omschrijving Dit attribuut specificeert het bronsysteem van het record, zoals de specifieke SAP ECC instancenaam of ID. In organisaties met meerdere ERP-systemen of een mix van legacy en moderne platforms, is dit veld cruciaal voor data-herkomst en context. Voor analyse maakt het filteren van processen mogelijk op basis van hun bronsysteem. Dit kan nuttig zijn voor het vergelijken van procesprestaties tussen verschillende systemen of voor het isoleren van data tijdens multi-systeem data consolidatieprojecten. Het belang Het biedt cruciale context over de herkomst van data, vooral in omgevingen met meerdere SAP-instanties of geïntegreerde systemen. Vindplaats Doorgaans toegevoegd tijdens het data-extractieproces, vaak afgeleid van de SAP-systeem-ID (SY-SYSID). Voorbeelden ECC_PROD_100S4H_FIN_200ECC_DE | |||
| Laatste data-update LastDataUpdate | De timestamp die aangeeft wanneer de data voor dit event voor het laatst is ververst of geëxtraheerd. | ||
| Omschrijving Dit attribuut registreert de datum en tijd waarop de data vanuit het bronsysteem in de process mining tool is geladen. Het vertegenwoordigt geen zakelijke gebeurtenis, maar is een technische timestamp voor datamanagementdoeleinden. Het primaire gebruik ervan is om de versheid van data te garanderen en om beheerders en analisten te helpen de recentheid van de data die zij analyseren te begrijpen. Het is cruciaal voor het valideren dat de procesanalyse gebaseerd is op up-to-date informatie, vooral bij het monitoren van lopende operaties. Het belang Het bevestigt de actualiteit van de data, wat garandeert dat analyses zijn gebaseerd op de meest recente beschikbare informatie. Vindplaats Deze waarde wordt doorgaans gegenereerd en vastgelegd door de data-extractie-, transformatie- en laadtool (ETL-tool) of script tijdens het data-innameproces. Voorbeelden 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| Geleverde Hoeveelheid DeliveredQuantity | De werkelijke hoeveelheid van het product dat is geproduceerd en in de voorraad is ontvangen. | ||
| Omschrijving Geleverde Hoeveelheid, ook bekend als Goederenontvangsthoeveelheid, is de totale hoeveelheid eindproduct die is bevestigd als geproduceerd voor een bepaalde productieorder. Deze waarde wordt bijgewerkt wanneer 'Goederenontvangst Geboekt'-events plaatsvinden. Dit attribute is de tegenhanger van 'Geplande Hoeveelheid' en is essentieel voor het berekenen van de 'Geplande vs. Werkelijke Hoeveelheid Afwijking'-KPI. Het biedt een definitieve maatstaf voor de productie-output, waardoor analisten discrepanties kunnen identificeren die kunnen worden veroorzaakt door afval, rendementsverlies of andere productieproblemen. Het vergelijken van geleverde hoeveelheden over plants, producten of tijdsperioden benadrukt gebieden met efficiëntieproblemen. Het belang Het meet de werkelijke output van het productieproces, waardoor directe vergelijking met geplande doelen mogelijk is om de prestaties te beoordelen. Vindplaats Gevonden in SAP-tabel AFPO, veld WEMNG (Hoeveelheid Ontvangen Goederen). Voorbeelden 984950751255 | |||
| Geplande Hoeveelheid PlannedQuantity | De totale hoeveelheid van het product dat gepland is om in de order te worden geproduceerd. | ||
| Omschrijving De Geplande Hoeveelheid vertegenwoordigt de beoogde output van een productieorder zoals vastgelegd tijdens de planningsfase. Deze waarde dient als de basis om de werkelijke productieoutput te meten. Dit attribuut is fundamenteel voor KPI's gerelateerd aan productieprestaties en planningstrouw, zoals 'Afwijking Geplande vs. Werkelijke Hoeveelheid'. Het helpt bij het beoordelen van de nauwkeurigheid van de productieplanning en het identificeren van systemische problemen met overproductie of onderproductie. Het analyseren van deze waarde is cruciaal om te begrijpen hoe goed de productie-uitvoering overeenkomt met de oorspronkelijke plannen. Het belang Dit attribuut is de basis voor het meten van de afwijking in productieoutput en het beoordelen van de planningsnauwkeurigheid. Vindplaats Deze waarde is beschikbaar in de SAP-tabel AFKO, veld GAMNG (Totale Orderhoeveelheid). Voorbeelden 1005000751250 | |||
| Productcode ProductCode | De unieke identifier voor het materiaal of product dat wordt geproduceerd. | ||
| Omschrijving De Productcode, of het Materiaalnummer, identificeert het artikel dat de productieorder beoogt te produceren. Dit is een centraal stamdata-element dat productieplanning koppelt aan voorraadbeheer, verkoop en kostprijsberekening. In process mining is het filteren of segmenteren op Productcode cruciaal voor het begrijpen van productspecifieke productieprocessen. Het helpt vragen te beantwoorden zoals 'Welke producten hebben de langste cyclustijden?' of 'Zijn bepaalde producten gevoeliger voor kwaliteitsproblemen of materiaalvertragingen?'. Deze analyse is van vitaal belang voor productportfoliobeheer en het identificeren van kansen voor processtandaardisatie of -optimalisatie voor specifieke materiaaltypen. Het belang Het maakt product-specifieke procesanalyse mogelijk, waarbij wordt onthuld welke materialen geassocieerd zijn met procesinefficiënties, vertragingen of hoge kosten. Vindplaats Dit is te vinden in de SAP-tabel AFPO, veld MATNR. Voorbeelden FG-123RM-45AHALB-7890CHEM-22 | |||
| Productieplant ProductionPlant | De productiefaciliteit of locatie waar de productieorder wordt uitgevoerd. | ||
| Omschrijving De Productieplant is een belangrijke organisatie-eenheid in SAP die een productiefaciliteit vertegenwoordigt. Deze wordt toegewezen aan elke productieorder en bepaalt waar de productieactiviteiten fysiek zullen plaatsvinden. Het analyseren van het proces per Productieplant maakt prestatievergelijkingen tussen verschillende locaties mogelijk. Dit helpt te identificeren welke fabrieken efficiënter zijn, welke meer vertragingen of materiaaltekorten ervaren, en waar best practices kunnen worden gedeeld. Het is een fundamentele dimensie voor grondoorzaakanalyse in dashboards gerelateerd aan doorvoer en resourcebenutting. Het belang Het maakt prestatievergelijking mogelijk tussen verschillende productielocaties, en helpt bij het identificeren van locatiespecifieke problemen of best practices. Vindplaats Dit attribuut is opgeslagen in de SAP-tabel AUFK, veld WERKS. Voorbeelden 100017102000DE01 | |||
| Werkelijke Einddatum ActualEndDate | De timestamp van de laatste productieactiviteit, die de daadwerkelijke voltooiing van de order markeert. | ||
| Omschrijving De Werkelijke Einddatum is de timestamp van de gebeurtenis die de voltooiing van alle productieactiviteiten voor een order aangeeft. Deze wordt doorgaans afgeleid van de timestamp van de 'Definitieve Bevestiging Vastgelegd' of de laatste 'Goederenontvangst Geboekt' gebeurtenis. Dit attribuut is essentieel voor het meten van de totale productiecyclustijd en voor planningstrouw-analyse. Het vergelijken van de 'Werkelijke Einddatum' met de 'Geplande Einddatum' bepaalt of een order op tijd is voltooid. Het analyseren van de duur tussen de 'Werkelijke Startdatum' en 'Werkelijke Einddatum' levert de werkelijke doorlooptijd van de productie op. Het belang Het markeert de voltooiing van de productie, wat een nauwkeurige meting van de tijdige leveringsprestaties en de totale uitvoeringstijd mogelijk maakt. Vindplaats Afgeleid van het event log door de maximale timestamp te vinden van belangrijke voltooiingsactiviteiten zoals 'Definitieve Bevestiging Vastgelegd' of 'Goederenontvangst Geboekt'. Voorbeelden 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| Werkelijke startdatum ActualStartDate | De timestamp van de eerste vastgelegde productieactiviteit, die de werkelijke start van de uitvoering markeert. | ||
| Omschrijving De Werkelijke Startdatum is de timestamp van de eerste gebeurtenis die het begin van de fysieke productiewerkzaamheden markeert. Deze wordt doorgaans afgeleid van de eerste productiebevestiging of de eerste goederenafgifte van grondstoffen voor de order. Dit afgeleide attribuut is cruciaal voor planningstrouw-analyse. Het biedt het werkelijke startpunt om te vergelijken met de 'Geplande Startdatum', waardoor een nauwkeurige berekening van de starttijd-afwijkingen mogelijk is. Het begrijpen van het verschil tussen geplande en werkelijke startdata helpt bij het identificeren van pre-productievertragingen gerelateerd aan materiaalvoorraad, machine-instelling of resourcebeschikbaarheid. Het belang Het biedt het werkelijke startpunt van de productie-uitvoering, waardoor een nauwkeurige berekening van startvertragingen en de totale productiedoorlooptijd mogelijk is. Vindplaats Afgeleid van het event log door de minimale timestamp te vinden van specifieke uitvoeringsactiviteiten zoals 'Eerste Bevestiging Vastgelegd' of 'Goederenuitgifte Geboekt' voor elke productieorder. Voorbeelden 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| Doorlooptijd CycleTime | De totale verstreken tijd vanaf de vrijgave van de productieorder tot de uiteindelijke voltooiing. | ||
| Omschrijving Doorlooptijd is een key performance indicator die de duur van de productie-uitvoeringsfase meet. Het wordt berekend als het tijdsverschil tussen het 'Productieorder Vrijgegeven'-event en een voltooiings-event zoals 'Definitieve Bevestiging Vastgelegd' of 'Goederenontvangst Geboekt'. Deze berekende metric is fundamenteel voor het beoordelen van de productie-efficiëntie. Het analyseren van doorlooptijdtrends en deze vergelijken over producten, plants of tijdsperioden helpt bij het identificeren van mogelijkheden om doorlooptijden te verkorten, de doorvoer te verbeteren en de algehele productiecapaciteit te vergroten. Het is een kernmetric voor veel van de vereiste dashboards en KPI's. Het belang Het meet direct de efficiëntie en snelheid van het productie-uitvoeringsproces, en benadrukt kansen voor het reduceren van doorlooptijden. Vindplaats Berekend veld: Timestamp van 'Productieorder Voltooid' minus de timestamp van 'Productieorder Vrijgegeven'. Voorbeelden 3 dagen en 4 uur10 uur 15 minuten7 dagen 0 uur1 dag 12 uur | |||
| Geplande Einddatum PlannedEndDate | De geplande datum waarop de productie voor de order naar verwachting voltooid zal zijn. | ||
| Omschrijving De Geplande Einddatum is de beoogde voltooiingsdatum voor een productieorder, vastgesteld tijdens het planningsproces. Deze definieert het verwachte tijdsbestek voor het voltooien van alle productieactiviteiten, inclusief definitieve bevestigingen en goederenontvangst. Deze datum is essentieel voor het berekenen van de KPI 'Naleving Productieplanning'. Het vergelijken van de 'Geplande Einddatum' met de werkelijke voltooiingstijd (bijv. de timestamp van de activiteit 'Goederenontvangst Geboekt' of 'Definitieve Bevestiging Vastgelegd') onthult of orders op tijd worden afgerond. Deze analyse helpt bij het evalueren van de betrouwbaarheid van productieschema's en het identificeren van de grondoorzaken van late leveringen. Het belang Het is de benchmark die wordt gebruikt om te bepalen of productieorders op tijd worden voltooid, wat direct van invloed is op klanttevredenheid en planningsbetrouwbaarheid. Vindplaats Dit is de basis einddatum, te vinden in SAP-tabel AFKO, veld GLTRP. Voorbeelden 2023-05-152023-06-282023-07-05 | |||
| Geplande Startdatum PlannedStartDate | De geplande datum waarop de productie voor de order naar verwachting zal beginnen. | ||
| Omschrijving De Geplande Startdatum is een belangrijke planningsparameter die wordt bepaald tijdens de productieplannings- en schedulingfase. Het vertegenwoordigt de beoogde startdatum voor het beginnen van productieactiviteiten voor een order. Dit attribuut is cruciaal voor het meten van planningstrouw. Door de 'Geplande Startdatum' te vergelijken met de werkelijke starttijd van de productie (bijv. de timestamp van de activiteit 'Eerste Bevestiging Vastgelegd'), kunnen organisaties vertragingen bij de productiestart identificeren. Het analyseren van de redenen voor deze vertragingen is een primair toepassingsgebied voor process mining in dit domein. Het belang Het dient als de basislijn voor het meten van de naleving van de planning en het identificeren van vertragingen bij de start van de productie-uitvoering. Vindplaats Dit is de basis startdatum, te vinden in SAP-tabel AFKO, veld GSTRP. Voorbeelden 2023-05-102023-06-222023-07-01 | |||
| Hoeveelheidsverschil QuantityVariance | Het verschil tussen de geplande productiehoeveelheid en de werkelijk geleverde hoeveelheid. | ||
| Omschrijving Hoeveelheidsafwijking is een berekende metriek die de afwijking meet van de productieoutput ten opzichte van het oorspronkelijke plan. Deze wordt berekend als 'Geleverde Hoeveelheid' minus 'Geplande Hoeveelheid'. Een positieve afwijking duidt op overproductie, terwijl een negatieve afwijking duidt op onderproductie of opbrengstverlies. Dit attribuut is essentieel voor het 'Geplande vs. Werkelijke Productie Output' dashboard en de bijbehorende KPI. Het analyseren van de afwijking helpt bij het identificeren van problemen gerelateerd aan productierendement, afkeurpercentages of invoerfouten. Het biedt een directe maatstaf voor de betrouwbaarheid van het productieproces bij het behalen van de outputdoelstellingen. Het belang Het kwantificeert de nauwkeurigheid van de productie-output ten opzichte van de plannen, en belicht potentiële problemen met rendement, afval of procesbeheersing. Vindplaats Berekend veld: 'DeliveredQuantity' - 'PlannedQuantity'. Voorbeelden -2-5005 | |||
| Materiaalbeschikbaarheid MaterialAvailabilityStatus | Geeft aan of alle benodigde componenten voor de productieorder beschikbaar zijn. | ||
| Omschrijving Materiaalbeschikbaarheidstatus is een kritieke indicator van productiegereedheid. Het wordt bepaald door het systeem dat de beschikbaarheid van alle benodigde componentmaterialen voor de order controleert. Een status van 'Beschikbaar' betekent dat de productie zonder materiaalgerelateerde vertragingen kan doorgaan, terwijl 'Tekort' een probleem aangeeft. Dit attribute is essentieel voor het 'Materiaaltekort Impact Analyse'-dashboard. Door de tijd te analyseren die orders wachten met een materiaaltekort, kunnen bedrijven de impact van supply chain-problemen op productieplanningen kwantificeren. Dit helpt bij het identificeren van onbetrouwbare leveranciers of problematische componenten die frequent vertragingen veroorzaken. Het belang Het benadrukt direct vertragingen veroorzaakt door materiaaltekorten, wat een veelvoorkomende en belangrijke grondoorzaak is van afwijkingen in de productieplanning. Vindplaats Dit is geen enkel opgeslagen veld. Het is het resultaat van een beschikbaarheidscontrole (ATP-check). De resultaten zijn vaak zichtbaar in transactie CO02 of in de collectieve beschikbaarheidscontrole COHV. De status zelf (bijv. MACM - Materiaal vastgelegd) kan worden gelogd. Raadpleeg de SAP ECC PP documentatie. Voorbeelden BeschikbaarTekortGedeeltelijk BeschikbaarNiet gecontroleerd | |||
| Plannergroep PlannerGroup | De groep MRP-controllers of productieplanners die verantwoordelijk zijn voor de order. | ||
| Omschrijving De Plannersgroep is een organisatie-element dat een groep individuen vertegenwoordigt die verantwoordelijk zijn voor het plannen en beheren van een specifieke set materialen of productieorders. Het toewijzen van orders aan plannersgroepen helpt bij het verdelen van de werkbelasting en het vaststellen van duidelijke verantwoordelijkheid. In process mining maakt dit attribuut prestatieanalyse mogelijk op basis van het verantwoordelijke planningsteam. Het kan helpen vragen te beantwoorden zoals 'Welke plannersgroep ervaart de meeste planningsafwijkingen?' of 'Is er een verschil in cyclustijden voor orders die door verschillende groepen worden beheerd?'. Dit biedt inzichten voor het balanceren van werkbelasting en het identificeren van trainingsbehoeften. Het belang Het maakt prestatieanalyse mogelijk die is gesegmenteerd per verantwoordelijk team, wat helpt om verschillen in planningseffectiviteit en werkdruk te identificeren. Vindplaats Dit is de MRP-controller, te vinden in SAP-tabel AFKO, veld DISPO. Voorbeelden 001002P01P02 | |||
| Productieprioriteit ProductionPriority | Een classificatie die de urgentie of prioriteit van de productieorder aangeeft. | ||
| Omschrijving Productieprioriteit is een veld dat wordt gebruikt om het relatieve belang van een productieorder aan te geven. Dit stelt productieplanners en medewerkers op de werkvloer in staat hun werk te prioriteren, zodat kritieke orders versneld door het proces worden geleid. Het analyseren van dit attribuut helpt bij het evalueren van de effectiviteit van het prioriteitssysteem. Door de cyclustijden van orders met hoge prioriteit te vergelijken met die van orders met lage prioriteit, kan een bedrijf bepalen of urgente orders daadwerkelijk sneller worden verwerkt. Zo niet, dan kan dit duiden op problemen met communicatie, resource-allocatie of het algehele uitvoeringsproces. Het belang Het helpt te beoordelen of het prioriteitsbeheersysteem effectief is, zodat orders met hoge urgentie sneller worden voltooid dan standaardorders. Vindplaats Dit is vaak geen standaardveld in de header van de productieorder. Het kan een aangepast veld zijn, afgeleid van de sales order prioriteit, of deel uitmaken van een classificatiesysteem. Raadpleeg de SAP ECC PP documentatie of systeemconfiguratie. Voorbeelden HoogGemiddeldLaagSpoed | |||
| Status Planningstrouw ScheduleAdherenceStatus | Een vlag die aangeeft of de productieorder is voltooid vóór de geplande einddatum. | ||
| Omschrijving De Status Planningstrouw is een berekend booleaans of categorisch attribuut dat een eenvoudig, direct overzicht biedt van de prestaties op tijd. Deze wordt afgeleid door de 'Werkelijke Einddatum' te vergelijken met de 'Geplande Einddatum'. Als het werkelijke einde op of vóór het geplande einde is, is de status 'Op Tijd'; anders is deze 'Te Laat'. Dit attribuut vereenvoudigt analyse en visualisatie in dashboards. Het maakt eenvoudig filteren en aggregeren mogelijk om de KPI 'Naleving Productieplanning' te berekenen en de belangrijkste oorzaken van late orders te identificeren, zoals specifieke producten, fabrieken of materiaaltekorten. Het belang Het vereenvoudigt prestatieanalyse door orders te categoriseren als 'Op Tijd' of 'Te Laat', waardoor het eenvoudig wordt om de planningsbetrouwbaarheid te meten en te rapporteren. Vindplaats Berekend veld: IF('ActualEndDate' <= 'PlannedEndDate', 'On-Time', 'Late'). Voorbeelden Op tijdTe laat | |||
| Status Productieorder ProductionOrderStatus | De huidige verwerkingsstatus van de productieorder, zoals Aangemaakt, Vrijgegeven of Technisch Voltooid. | ||
| Omschrijving De Status Productieorder geeft de huidige fase van de order in zijn levenscyclus aan. SAP gebruikt een systeem van statuscodes om de voortgang van de order te beheren, bijvoorbeeld CRTD (Aangemaakt), REL (Vrijgegeven), CNF (Bevestigd), DLV (Geleverd) en TECO (Technisch Voltooid). Het analyseren van de tijd doorgebracht in verschillende statussen is een kernonderdeel van process mining voor productie. Het helpt te identificeren hoe lang orders wachten op vrijgave na creatie of hoe lang ze in een gedeeltelijk geleverde staat blijven. Het volgen van statuswijzigingen als activiteiten biedt een hoog-overzicht van de processtroom. Het belang Het biedt een momentopname van de voortgang van een order en helpt bij het identificeren van knelpunten waar orders gedurende langere perioden vastlopen. Vindplaats Statusinformatie wordt opgeslagen in tabellen JEST en JSTO, gekoppeld aan het objectnummer van de order (AUFK-OBJNR). Statustekst bevindt zich in TJ02T. Het lezen van de status gebeurt vaak via functiemodules zoals STATUS_TEXT_EDIT. Voorbeelden CRTD (Aangemaakt)REL (Vrijgegeven)DLV (Geleverd)TECO (Technisch Voltooid) | |||
| Verantwoordelijke Gebruiker ResponsibleUser | De gebruikers-ID van de persoon die de productieorder heeft aangemaakt of voor het laatst heeft gewijzigd. | ||
| Omschrijving De Verantwoordelijke Gebruiker identificeert de SAP-gebruikersaccount gekoppeld aan belangrijke gebeurtenissen in de levenscyclus van de productieorder, zoals creatie of vrijgave. Dit zorgt voor verantwoordelijkheid en traceerbaarheid van acties die binnen het systeem zijn ondernomen. In process mining wordt dit attribuut gebruikt om procesvariaties te analyseren op basis van gebruikersgedrag. Het kan helpen gebruikers te identificeren die aanvullende training nodig hebben of die niet-standaard procedures volgen. Het ondersteunt ook resource-analyse door te laten zien hoe werk wordt verdeeld onder verschillende gebruikers. Het belang Het koppelt procesactiviteiten aan specifieke personen, maakt prestatieanalyse op gebruikersniveau mogelijk en bevordert verantwoording. Vindplaats De gebruiker die de order heeft aangemaakt, staat in AUFK-ERNAM. De gebruiker die deze het laatst heeft gewijzigd, staat in AUFK-AENAM. Wijzigingsdocumenten (CDHDR-USERNAME) bieden een geschiedenis van gebruikers voor specifieke wijzigingen. Voorbeelden JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
Productieplanning Activiteiten
| Activiteit | Omschrijving | ||
|---|---|---|---|
| Definitieve Bevestiging Vastgelegd | Deze activiteit geeft aan dat alle operaties voor de productieorder vanuit een werkvloerperspectief zijn voltooid. Dit wordt gemarkeerd door een definitieve bevestiging voor de laatste operatie. | ||
| Het belang Deze mijlpaal markeert het einde van de fysieke productieactiviteiten. De duur van de eerste tot de definitieve bevestiging vertegenwoordigt de werkelijke uitvoeringstijd van de productie. Vindplaats Dit wordt vastgelegd wanneer de systeemstatus 'CNF' (I0009, Bevestigd) wordt ingesteld. Dit wordt doorgaans geactiveerd door de definitieve bevestigingsinvoer in tabel AFRU (AFRU-AUERU = 'X'). De statuswijziging wordt gelogd in JCDS. Vastleggen Identificeer de timestamp wanneer de 'CNF' status is ingesteld, of vind het laatste bevestigingsrecord in AFRU. Gebeurtenistype explicit | |||
| Eerste Bevestiging Vastgelegd | Deze gebeurtenis markeert de start van de daadwerkelijke productiewerkzaamheden aan de order. Deze wordt vastgelegd wanneer de eerste tijdsbevestiging voor een operatie in de productieorder in het systeem wordt ingevoerd. | ||
| Het belang Deze activiteit biedt de werkelijke starttijd van de productie, wat essentieel is voor het meten van planningstrouw en het identificeren van vertragingen tussen resource-allocatie en de start van het werk. Vindplaats Dit wordt afgeleid door de vroegste boekingsdatum (AFRU-BUDAT) te vinden onder alle bevestigingen die voor de order in de AFRU-tabel zijn vastgelegd. De eerste invoer markeert de start van de fysieke productie. Vastleggen Identificeer het eerste bevestigingsrecord voor de order op basis van de boekingsdatum in tabel AFRU. Gebeurtenistype inferred | |||
| Goederenontvangst geboekt | Deze gebeurtenis registreert de ontvangst van het eindproduct van de productieorder in de voorraad. Het betekent dat de geproduceerde goederen nu beschikbaar zijn voor verzending of verdere verwerking. | ||
| Het belang Dit is een belangrijke voltooiingsmijlpaal, die de uiteindelijke output van het productieproces vertegenwoordigt. De tijd vanaf vrijgave tot goederenontvangst is de totale productiedoorlooptijd. Vindplaats Vastgelegd als een materiaaldocument in tabellen MKPF/MSEG met een bewegingstype, doorgaans '101', met verwijzing naar de productieorder. De systeemstatus 'DLV' (I0012, Geleverd) wordt ook ingesteld voor de order. Vastleggen Vastleggen van de boekingsdatum van het '101' movement type materiaaldocument of de timestamp van de 'DLV' statuswijziging. Gebeurtenistype explicit | |||
| Order Technisch Voltooid | Dit is een administratieve afsluitende stap die een productieorder vanuit logistiek oogpunt afrondt. Het voorkomt verdere materiaalbewegingen of bevestigingen en maakt financiële afwikkeling mogelijk. | ||
| Het belang Dit is het definitieve eindpunt voor de levenscyclus van de order in logistiek. Het analyseren van deze gebeurtenis helpt de totale procesduur te begrijpen, inclusief administratieve taken na de productie. Vindplaats Expliciet vastgelegd wanneer de systeemstatus 'TECO' (I0045, Technisch Voltooid) wordt toegewezen aan de order. De wijziging wordt gelogd met een timestamp in de JCDS-tabel. Vastleggen Identificeer de timestamp wanneer de 'TECO' status actief wordt voor de order in JCDS. Gebeurtenistype explicit | |||
| Productieorder Aangemaakt | Deze gebeurtenis markeert de aanmaak van een nieuwe productieorder, doorgaans geïnitieerd vanuit een planningsrun of handmatige invoer. Deze wordt expliciet vastgelegd wanneer een nieuw orderrecord in het systeem wordt opgeslagen, waarbij de status 'CRTD' (Aangemaakt) wordt toegekend. | ||
| Het belang Dit is het startpunt voor elke productieorder case. Het analyseren van de tijd vanaf deze gebeurtenis tot vrijgave helpt bij het identificeren van vertragingen in pre-productieplanning en administratieve voorbereiding. Vindplaats Deze gebeurtenis wordt vastgelegd vanuit de creatiedatum (AUFK-ERDAT) en -tijd (AUFK-ERZET) van de productieorder. De systeemstatus 'CRTD' (I0001) wordt toegewezen, gelogd in tabellen JEST en JCDS gekoppeld aan het orderobjectnummer (AUFK-OBJNR). Vastleggen Volg de aanmaak-timestamp en de toewijzing van de status 'CRTD'. Gebeurtenistype explicit | |||
| Productieorder Vrijgegeven | Deze activiteit markeert de officiële goedkeuring en vrijgave van de productieorder voor uitvoering. Eenmaal vrijgegeven worden materiaalreserveringen actief, en kunnen productieactiviteiten zoals goederenafgifte en bevestigingen beginnen. | ||
| Het belang Dit is een kritieke mijlpaal die de overdracht van planning naar uitvoering vertegenwoordigt. De tijd tussen aanmaak en vrijgave is een belangrijke indicator van planningsefficiëntie. Vindplaats Expliciet vastgelegd wanneer de systeemstatus 'REL' (I0002) wordt toegewezen aan de productieorder. De wijziging wordt gelogd met een timestamp in de JCDS-tabel, gekoppeld aan het objectnummer van de order (AUFK-OBJNR). Vastleggen Identificeer de timestamp wanneer de 'REL' status actief wordt voor de order. Gebeurtenistype explicit | |||
| Goederenafgifte Geboekt | Deze activiteit vertegenwoordigt de opname van componentmaterialen uit de voorraad voor gebruik in de productieorder. Het bevestigt dat de benodigde grondstoffen of halffabricaten zijn klaargezet voor productie. | ||
| Het belang Deze gebeurtenis markeert de start van materiaalverbruik. Vertragingen tussen order vrijgave en goederenafgifte kunnen problemen in magazijnlogistiek, materiaalvoorbereiding of voorraadnauwkeurigheid aan het licht brengen. Vindplaats Vastgelegd als materiaaldocumenten in tabellen MKPF (header) en MSEG (item) met een bewegingstype, doorgaans '261', met verwijzing naar het productieordernummer (MSEG-AUFNR). Vastleggen Vastleggen van de boekingsdatum (MKPF-BUDAT) van materiaaldocumenten met movement type '261' gekoppeld aan de order. Gebeurtenistype explicit | |||
| Materiaalbeschikbaarheid Gecontroleerd | Vertegenwoordigt de uitvoering van een controle om te bepalen of alle benodigde componenten voor de productieorder beschikbaar zijn. Dit kan een geautomatiseerde controle zijn bij ordercreatie of -vrijgave, of een handmatig geactiveerde actie. | ||
| Het belang Deze activiteit is cruciaal voor het begrijpen van vertragingen veroorzaakt door materiaaltekorten. Frequente controles of lange wachttijden tot materiaalbeschikbaarheid kunnen duiden op problemen in de supply chain of het voorraadbeheer. Vindplaats Het systeem stelt een status in zoals 'MACM' (materiaal toegewezen) of 'MSPT' (materiaaltekort). De uitvoering kan worden afgeleid uit de timestamp van deze statuswijziging in tabellen JEST/JCDS. De resultaten zijn zichtbaar in de orderheader. Vastleggen Afleiden van de timestamp van statuswijzigingen gerelateerd aan materiaalbeschikbaarheid, zoals 'MACM' of 'MSPT'. Gebeurtenistype inferred | |||
| Orderafwikkeling Uitgevoerd | Vertegenwoordigt de financiële afwikkeling van de productieorder, waarbij verzamelde kosten worden toegewezen aan de juiste kostobjecten. Dit is de laatste stap in de levenscyclus van de order vanuit een controllingperspectief. | ||
| Het belang Hoewel het een financiële activiteit is, kunnen vertragingen in de afwikkeling duiden op problemen met kostenrapportage of de nauwkeurigheid van orderdata. Het markeert de ware financiële afsluiting van het productieproces. Vindplaats Dit kan worden afgeleid wanneer het ordersaldo nul wordt of wanneer de systeemstatus 'SETC' (I0076, Afwikkelingsregel aangemaakt) wordt gevolgd door afwikkelingsrunlogs. De werkelijke afwikkeling wordt vastgelegd in controllingtabellen zoals COSP en COSS. Vastleggen Afleiden uit afwikkelingsdocumenten gekoppeld aan de order in CO-tabellen of uit de activering van de 'SETC'-status. Gebeurtenistype inferred | |||
| Orderannulering Ingesteld | Deze gebeurtenis geeft aan dat een productieorder is geannuleerd vóór voltooiing. Dit gebeurt doorgaans door een specifieke status of verwijderingsvlag in te stellen, waardoor verdere verwerking wordt voorkomen. | ||
| Het belang Dit is een negatieve uitkomst die belangrijk is om te volgen. Het analyseren van geannuleerde orders kan problemen aan het licht brengen met vraagvoorspelling, planningsnauwkeurigheid of stamdatabeheer. Vindplaats Dit kan worden afgeleid uit de toewijzing van de status 'DLFL' (I0076, Verwijderingsvlag) of een specifieke status 'Geannuleerd' indien geconfigureerd. De wijziging wordt gelogd met een timestamp in de JCDS-tabel. Vastleggen Identificeer de timestamp wanneer de deletievlag ('DLFL') of een annuleringsstatus is ingesteld voor de order. Gebeurtenistype inferred | |||
| Ordergegevens Gewijzigd | Deze gebeurtenis legt belangrijke wijzigingen vast die zijn aangebracht aan een productieorder na de initiële creatie, zoals wijzigingen in geplande hoeveelheid, data of stuklijst. Deze wijzigingen worden door het systeem gelogd voor auditdoeleinden. | ||
| Het belang Het bijhouden van deze wijzigingen helpt bij het identificeren van procesinstabiliteit en frequent herplannen. Een hoge frequentie van wijzigingen kan duiden op een slechte initiële planning, vraagvolatiliteit of data-onjuistheden. Vindplaats Wijzigingen in belangrijke velden in tabellen zoals AFKO (order header) en AFPO (order item) worden gelogd in de wijzigingsdocumenttabellen CDHDR (header) en CDPOS (item). Elke relevante wijziging kan als activiteit worden geëxtraheerd. Vastleggen Extraheer wijzigingslog-entries uit tabellen CDHDR en CDPOS voor de productieorder objectklasse. Gebeurtenistype explicit | |||
| Tussentijdse Bevestiging Vastgelegd | Vertegenwoordigt een voortgangsupdatie van een productieorder door middel van een deelbevestiging van een operatie. Dit is gebruikelijk voor langlopende orders waarbij het bijhouden van de voortgang vóór definitieve voltooiing noodzakelijk is. | ||
| Het belang Het analyseren van tussentijdse bevestigingen helpt bij het monitoren van de voortgang van lange productiecycli en het identificeren van knelpunten binnen het productieproces zelf, niet alleen aan het begin of einde. Vindplaats Vastgelegd vanuit bevestigingsrecords in de AFRU-tabel die niet zijn gemarkeerd als de definitieve bevestiging. Elke entry heeft een boekingsdatum (AFRU-BUDAT) en tijd. Vastleggen Extraheer alle bevestigingsrecords uit AFRU die niet zijn gemarkeerd als de definitieve bevestiging voor een operatie. Gebeurtenistype explicit | |||
Extractie Guides
Stappen
- Creëer een InfoSet in SAP Query: Gebruik transactiecode
SQ02. Creëer een nieuwe InfoSet, bijvoorbeeldZPP_EVENTLOG. Selecteer de databronoptie 'Tabel join met behulp van basistabel'. GebruikAUFK(Order stamdata) als initiële basistabel. - Join Vereiste Tabellen: Voeg de volgende tabellen toe aan de InfoSet join. Het systeem kan joins voorstellen, maar verifieer of deze correct zijn:
AUFKnaarAFKO(Order header data PP orders):AUFK-AUFNR = AFKO-AUFNRAUFKnaarJEST(Individuele Objectstatus):AUFK-OBJNR = JEST-OBJNRJESTnaarJCDS(Wijzigingsdocumenten voor Systeem/Gebruiker Statussen):JEST-OBJNR = JCDS-OBJNRENJEST-STAT = JCDS-STAT. Opmerking: Deze join is voor het lezen van de statuswijzigingshistorie.AUFKnaarAFRU(Order voltooiingsbevestigingen):AUFK-AUFNR = AFRU-AUFNRAUFKnaarMSEG(Document Segment: Materiaal):AUFK-AUFNR = MSEG-AUFNRMSEGnaarMKPF(Header: Materiaal Document):MSEG-MBLNR = MKPF-MBLNRENMSEG-MJAHR = MKPF-MJAHR
- Definieer Veldgroepen: Sleep de vereiste velden van de brontabellen naar de veldgroepen. Zorg ervoor dat alle velden die nodig zijn voor de uiteindelijke query, zoals
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDAT, zijn opgenomen. - Voeg Aangepaste Velden en Code Toe: Navigeer in de InfoSet naar het tabblad 'Extra's'. U moet aangepaste velden definiëren voor
ActivityName,EventTime,SourceSystemenLastDataUpdateen ABAP-code schrijven om deze te vullen op basis van de logica die in de querysectie is gedefinieerd. De logica omvat het doorlopen van statuswijzigingen, bevestigingen en materiaaldocumenten om een afzonderlijke record te genereren voor elk bedrijfs-event. Dit is de meest complexe stap, aangezien u tabulaire data transformeert naar een event log formaat binnen de codesecties van de InfoSet. - Genereer en Sla de InfoSet op: Zodra alle joins, velden en aangepaste code aanwezig zijn, sla de InfoSet op en genereer deze.
- Creëer een SAP Query: Gebruik transactiecode
SQ01. Creëer een nieuwe query, bijvoorbeeldZPP_EVENTS, gebaseerd op de in de vorige stappen gecreëerde InfoSet. - Ontwerp de Query Layout: Definieer in de query designer de selectieschermvelden. Goede selecties zijn onder andere Productieorder
AUFNR, PlantWERKS, OrdertypeAUARTen een datumbereik voor orderaanmaakAUFK-ERDAT. - Definieer de Output Lijst: Selecteer de velden die in de rapportoutput moeten worden weergegeven. Deze lijst moet exact overeenkomen met de kolommen die nodig zijn voor het event log, inclusief de aangepaste velden zoals
ActivityNameenEventTime. - Voer de Query Uit: Voer de query uit met de gewenste selectiecriteria, bijvoorbeeld voor de laatste 3 tot 6 maanden van productieorders.
- Exporteer de Data: Zodra de query de resultaten weergeeft, exporteer de lijst. Het meest gangbare en betrouwbare formaat hiervoor is 'Spreadsheet' of 'Lokaal bestand' met een tab-gescheiden of CSV-formaat.
- Formateer voor ProcessMind: Open het geëxporteerde bestand in een spreadsheetprogramma. Controleer of de kolomheaders overeenkomen met de vereiste attributes (
ProductionOrder,ActivityName,EventTime, etc.) en zorg ervoor dat het datum- en tijdformaat voorEventTimeconsistent is en voldoet aan de vereiste standaard (bijv. YYYY-MM-DD HH:MI:SS). Sla het bestand op als een CSV voor upload.
Configuratie
- InfoSet Joins: De kern van deze methode is gebaseerd op een complexe InfoSet die header-, status-, bevestigings- en materiaalbewegingstabellen samenvoegt. De primaire joins zijn
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRU, enAUFK->MSEG->MKPF. Incorrecte of inefficiënte joins kunnen leiden tot slechte prestaties of onnauwkeurige data. - Selectiecriteria: Het is cruciaal om een beheersbaar selectiebereik te definiëren om systeemprestatieproblemen te voorkomen. Belangrijke selectievelden op het opstartscherm van de query moeten omvatten:
- Productieplant (
AUFK-WERKS) - Productieordertype (
AUFK-AUART) - Aanmaakdatum order (
AUFK-ERDAT): We raden aan om data te extraheren voor een voortschrijdende periode van 3-6 maanden om de omvang van de dataset beheersbaar te houden.
- Productieplant (
- Systeemstatussen: De logica voor het identificeren van events zoals 'Aangemaakt', 'Vrijgegeven', 'Technisch Afgerond' en 'Geannuleerd' is afhankelijk van specifieke systeemstatuscodes (bijv. I0001, I0002, I0045, I0047). Deze zijn over het algemeen standaard in SAP-systemen, maar moeten worden geverifieerd.
- Movement Types: Events zoals 'Goederenuitgifte' en 'Goederenontvangst' worden geïdentificeerd door hun specifieke Movement Types (
MSEG-BWART), doorgaans '261' en '101' respectievelijk. Controleer of deze waarden overeenkomen met de configuratie van uw organisatie. - Autorisaties: De gebruiker die de query uitvoert, heeft autorisatie nodig voor toegang tot transacties
SQ01,SQ02enSQ03, evenals weergaverechten voor alle onderliggende tabellen (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
a Voorbeeldquery abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X'; Stappen
- Databasetoegang Instellen: Verkrijg alleen-lezen inloggegevens voor de onderliggende SAP ECC-database. U heeft het serveradres, de poort, databasenaam, gebruikersnaam en wachtwoord nodig. Deze toegang is essentieel en moet worden gecoördineerd met uw SAP Basis- en databaseadministratieteams.
- SAP Schema Identificeren: Bepaal het juiste databaseschema waarin de SAP-tabellen zijn opgeslagen. Dit is vaak
SAPSR3of een vergelijkbare systeemspecifieke naam. U moet de placeholder[Uw SAP Schema]in de query vervangen door deze waarde. - De SQL Query Voorbereiden: Kopieer de volledige SQL-query uit de
query-sectie. Deze query is ontworpen om alle gespecificeerde activiteiten te extraheren naar één event log-formaat. - Query Parameters Configureren: Voordat u de query uitvoert, moet u de placeholders binnen de query aanpassen. Stel de
[Start Date]en[End Date]in om het tijdsvenster voor de extractie te definiëren. Het wordt ook sterk aanbevolen om te filteren op productieplant (WERKS) of ordertype (AUART) om het datavolume te beperken. - Verbinden en Uitvoeren: Gebruik een standaard SQL-client, zoals DBeaver, SAP HANA Studio, of een aangepast script (Python, Java), om verbinding te maken met de SAP-database met behulp van de inloggegevens uit stap 1.
- De Query Uitvoeren: Plak de geconfigureerde SQL-query in uw client en voer deze uit. Afhankelijk van het datumbereik en de systeemgrootte kan dit enkele minuten duren.
- Voorlopige Resultaten Beoordelen: Zodra de query is voltooid, inspecteer kort de eerste paar honderd rijen om er zeker van te zijn dat kolommen zoals
ProductionOrder,ActivityNameenEventTimecorrect zijn gevuld en zinvol zijn. - Exporteren naar CSV: Exporteer de gehele resultatenset vanuit uw SQL-client naar een CSV-bestand. Zorg ervoor dat het bestand UTF-8-codering gebruikt om karakterproblemen te voorkomen.
- CSV Finaliseren voor Upload: Open het CSV-bestand en verifieer of de kolomheaders overeenkomen met de vereiste attributes (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdate, etc.). Zorg ervoor dat deEventTime-kolom consistent is geformatteerd, bijvoorbeeldYYYY-MM-DD HH:MI:SS. - Uploaden naar ProcessMind: Het voorbereide CSV-bestand is nu klaar om te worden geüpload naar het ProcessMind-platform voor analyse.
Configuratie
- Databaseschema: U moet het SAP-schema specificeren waarin uw productieplanningstabellen zich bevinden. Vervang de placeholder
[Uw SAP Schema]in de query door de juiste naam voor uw omgeving, bijvoorbeeldSAPSR3. - Datumbereik: Filteren op een specifiek datumbereik is cruciaal voor de prestaties. De query filtert op de aanmaakdatum van de order (
AUFK.ERDAT). We raden aan te beginnen met een recente periode van 3 tot 6 maanden om het datavolume beheersbaar te houden. - Productieordertype: Om de analyse te richten, filter de query op het veld productieordertype (
AUFK.AUART). Hiermee kunt u specifieke typen, zoals standaard productieorders, procesorders of herwerkingsorders, opnemen of uitsluiten. - Productieplant: Het is ten zeerste aan te raden om te filteren op één of meer productieplanten (
AFKO.WERKS). Het extraheren van data voor alle planten tegelijk kan zeer resource-intensief zijn. - Databasetoegang: Deze methode vereist een databasegebruiker met, minimaal, leesrechten op de volgende tabellen:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPF. Directe databasetoegang is niet standaard voor alle SAP-gebruikers en vereist speciale autorisatie.
a Voorbeeldquery sql
WITH Orders AS (
SELECT
aufk.AUFNR AS ProductionOrder,
afko.WERKS AS ProductionPlant,
afko.PLNBEZ AS ProductCode,
afko.GAMNG AS PlannedQuantity,
afko.GMEIN AS PlannedUnit,
afko.GEMNG AS DeliveredQuantity,
CASE
WHEN afko.GSTRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GSTRI || afko.GSUZI, 'YYYYMMDDHH24MISS')
END AS ActualStartDate,
CASE
WHEN afko.GETRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GETRI || afko.GEUZI, 'YYYYMMDDHH24MISS')
END AS ActualEndDate,
aufk.OBJNR,
aufk.ERDAT AS CreationDate,
aufk.ERFAS AS CreationTime
FROM
"[Your SAP Schema]".AUFK aufk
JOIN
"[Your SAP Schema]".AFKO afko ON aufk.AUFNR = afko.AUFNR
WHERE
aufk.AUTYP = '10' -- Filter for Production Orders
AND aufk.ERDAT BETWEEN '[Start Date]' AND '[End Date]'
-- AND afko.WERKS IN ('[Your Plant]', '[Another Plant]') -- Optional: Filter by Plant
-- AND aufk.AUART IN ('[Your Order Type]') -- Optional: Filter by Order Type
),
Confirmations AS (
SELECT
o.ProductionOrder,
a.RUECK AS ConfirmationNumber,
a.RMZHL AS ConfirmationCounter,
TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
a.AUERU AS IsFinalConfirmation,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') ASC) as rn_asc,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') DESC) as rn_desc
FROM
Orders o
JOIN
"[Your SAP Schema]".AFRU a ON o.ProductionOrder = a.AUFNR
)
-- 1. Production Order Created
SELECT
o.ProductionOrder,
'Production Order Created' AS ActivityName,
TO_TIMESTAMP(o.CreationDate || o.CreationTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
UNION ALL
-- 2. Material Availability Checked (using 'Material Committed' status as proxy)
SELECT
o.ProductionOrder,
'Material Availability Checked' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0006' AND jcds.INACT != 'X'
UNION ALL
-- 3. Production Order Released
SELECT
o.ProductionOrder,
'Production Order Released' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0002' AND jcds.INACT != 'X'
UNION ALL
-- 4. Order Data Changed
SELECT
o.ProductionOrder,
'Order Data Changed' AS ActivityName,
TO_TIMESTAMP(aufk.AEDAT || aufk.AEZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".AUFK aufk ON o.ProductionOrder = aufk.AUFNR
WHERE aufk.AEDAT > o.CreationDate
UNION ALL
-- 5. Goods Issue Posted
SELECT
o.ProductionOrder,
'Goods Issue Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
c.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
c.ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc > 1 AND c.IsFinalConfirmation IS NULL
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
c.ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.IsFinalConfirmation = 'X'
UNION ALL
-- 9. Goods Receipt Posted
SELECT
o.ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
o.ProductionOrder,
'Order Technically Completed' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0045' AND jcds.INACT != 'X'
UNION ALL
-- 11. Order Settlement Ran
SELECT
o.ProductionOrder,
'Order Settlement Ran' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0046' AND jcds.INACT != 'X'
UNION ALL
-- 12. Order Cancellation Set
SELECT
o.ProductionOrder,
'Order Cancellation Set' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0076' AND jcds.INACT != 'X'; Stappen
- Creëer een InfoSet in SAP Query: Gebruik transactiecode
SQ02. Creëer een nieuwe InfoSet, bijvoorbeeldZPP_EVENTLOG. Selecteer de databronoptie 'Tabel join met behulp van basistabel'. GebruikAUFK(Order stamdata) als initiële basistabel. - Join Vereiste Tabellen: Voeg de volgende tabellen toe aan de InfoSet join. Het systeem kan joins voorstellen, maar verifieer of deze correct zijn:
AUFKnaarAFKO(Order header data PP orders):AUFK-AUFNR = AFKO-AUFNRAUFKnaarJEST(Individuele Objectstatus):AUFK-OBJNR = JEST-OBJNRJESTnaarJCDS(Wijzigingsdocumenten voor Systeem/Gebruiker Statussen):JEST-OBJNR = JCDS-OBJNRENJEST-STAT = JCDS-STAT. Opmerking: Deze join is voor het lezen van de statuswijzigingshistorie.AUFKnaarAFRU(Order voltooiingsbevestigingen):AUFK-AUFNR = AFRU-AUFNRAUFKnaarMSEG(Document Segment: Materiaal):AUFK-AUFNR = MSEG-AUFNRMSEGnaarMKPF(Header: Materiaal Document):MSEG-MBLNR = MKPF-MBLNRENMSEG-MJAHR = MKPF-MJAHR
- Definieer Veldgroepen: Sleep de vereiste velden van de brontabellen naar de veldgroepen. Zorg ervoor dat alle velden die nodig zijn voor de uiteindelijke query, zoals
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDAT, zijn opgenomen. - Voeg Aangepaste Velden en Code Toe: Navigeer in de InfoSet naar het tabblad 'Extra's'. U moet aangepaste velden definiëren voor
ActivityName,EventTime,SourceSystemenLastDataUpdateen ABAP-code schrijven om deze te vullen op basis van de logica die in de querysectie is gedefinieerd. De logica omvat het doorlopen van statuswijzigingen, bevestigingen en materiaaldocumenten om een afzonderlijke record te genereren voor elk bedrijfs-event. Dit is de meest complexe stap, aangezien u tabulaire data transformeert naar een event log formaat binnen de codesecties van de InfoSet. - Genereer en Sla de InfoSet op: Zodra alle joins, velden en aangepaste code aanwezig zijn, sla de InfoSet op en genereer deze.
- Creëer een SAP Query: Gebruik transactiecode
SQ01. Creëer een nieuwe query, bijvoorbeeldZPP_EVENTS, gebaseerd op de in de vorige stappen gecreëerde InfoSet. - Ontwerp de Query Layout: Definieer in de query designer de selectieschermvelden. Goede selecties zijn onder andere Productieorder
AUFNR, PlantWERKS, OrdertypeAUARTen een datumbereik voor orderaanmaakAUFK-ERDAT. - Definieer de Output Lijst: Selecteer de velden die in de rapportoutput moeten worden weergegeven. Deze lijst moet exact overeenkomen met de kolommen die nodig zijn voor het event log, inclusief de aangepaste velden zoals
ActivityNameenEventTime. - Voer de Query Uit: Voer de query uit met de gewenste selectiecriteria, bijvoorbeeld voor de laatste 3 tot 6 maanden van productieorders.
- Exporteer de Data: Zodra de query de resultaten weergeeft, exporteer de lijst. Het meest gangbare en betrouwbare formaat hiervoor is 'Spreadsheet' of 'Lokaal bestand' met een tab-gescheiden of CSV-formaat.
- Formateer voor ProcessMind: Open het geëxporteerde bestand in een spreadsheetprogramma. Controleer of de kolomheaders overeenkomen met de vereiste attributes (
ProductionOrder,ActivityName,EventTime, etc.) en zorg ervoor dat het datum- en tijdformaat voorEventTimeconsistent is en voldoet aan de vereiste standaard (bijv. YYYY-MM-DD HH:MI:SS). Sla het bestand op als een CSV voor upload.
Configuratie
- InfoSet Joins: De kern van deze methode is gebaseerd op een complexe InfoSet die header-, status-, bevestigings- en materiaalbewegingstabellen samenvoegt. De primaire joins zijn
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRU, enAUFK->MSEG->MKPF. Incorrecte of inefficiënte joins kunnen leiden tot slechte prestaties of onnauwkeurige data. - Selectiecriteria: Het is cruciaal om een beheersbaar selectiebereik te definiëren om systeemprestatieproblemen te voorkomen. Belangrijke selectievelden op het opstartscherm van de query moeten omvatten:
- Productieplant (
AUFK-WERKS) - Productieordertype (
AUFK-AUART) - Aanmaakdatum order (
AUFK-ERDAT): We raden aan om data te extraheren voor een voortschrijdende periode van 3-6 maanden om de omvang van de dataset beheersbaar te houden.
- Productieplant (
- Systeemstatussen: De logica voor het identificeren van events zoals 'Aangemaakt', 'Vrijgegeven', 'Technisch Afgerond' en 'Geannuleerd' is afhankelijk van specifieke systeemstatuscodes (bijv. I0001, I0002, I0045, I0047). Deze zijn over het algemeen standaard in SAP-systemen, maar moeten worden geverifieerd.
- Movement Types: Events zoals 'Goederenuitgifte' en 'Goederenontvangst' worden geïdentificeerd door hun specifieke Movement Types (
MSEG-BWART), doorgaans '261' en '101' respectievelijk. Controleer of deze waarden overeenkomen met de configuratie van uw organisatie. - Autorisaties: De gebruiker die de query uitvoert, heeft autorisatie nodig voor toegang tot transacties
SQ01,SQ02enSQ03, evenals weergaverechten voor alle onderliggende tabellen (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
a Voorbeeldquery abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X';