Uw Datatemplate voor Asset Onderhoud
Uw Datatemplate voor Asset Onderhoud
- Aanbevolen attributes voor dataverzameling
- Kritieke onderhoudsactiviteiten om te volgen
- Technische extractiehandleiding voor SAP PM
Assetonderhouds-attributes
| Naam | Omschrijving | ||
|---|---|---|---|
| Activiteitsnaam Activity | De specifieke taak of statuswijziging die heeft plaatsgevonden. | ||
| Omschrijving Vertegenwoordigt de stap die in het onderhoudsproces wordt uitgevoerd, zoals 'Maintenance Order Created', 'Goods Issue Posted' of 'Order Operation Confirmed'. Deze worden doorgaans afgeleid van de statusbeheertabellen (JEST) voor statuswijzigingen, of transactietabellen (AFRU voor bevestigingen, MKPF voor materiaalbewegingen). Dit attribute bepaalt de knooppunten in de proceskaart. Het belang Dit definieert het 'wat' van het proces, essentieel voor het ontdekken van de processtroom en varianten. Vindplaats Afgeleid van JEST (Status), AFRU (Bevestigingen), QMEL (Meldingen) Voorbeelden Onderhoudsorder AangemaaktOrder VrijgegevenTechnisch Afgerond | |||
| Bronsysteem SourceSystem | Het systeem waar de data vandaan komt. | ||
| Omschrijving Identificeert de specifieke SAP-client of -instantie (bijv. 'SAP_PM_PROD'). In een landschap met meerdere ERP-systemen helpt dit attribute onderscheid te maken tussen records die identieke ID's kunnen delen, maar tot verschillende juridische entiteiten of systeemomgevingen behoren. Het belang Waarborgt data-uniciteit en -herkomst in multisysteemomgevingen. Vindplaats Systeemconfiguratie / Extractielogboek Voorbeelden SAP_ECC_P01SAP_S4H_100 | |||
| Gebeurtenistijdstempel EventTimestamp | De exacte datum en tijd waarop de activiteit plaatsvond. | ||
| Omschrijving Registreert het specifieke moment waarop een event plaatsvond. Bij statuswijzigingen komt dit van de update-tijd van de systeemstatus; bij operations is het de bevestigingstijd. Nauwkeurige timestamps zijn cruciaal voor het berekenen van cyclustijden, doorlooptijden en het identificeren van knelpunten tussen processtappen zoals 'Planning' en 'Execution'. Het belang Vereist voor het correct sequencen van events en het berekenen van alle op duur gebaseerde KPI's. Vindplaats JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Voorbeelden 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Laatste data-update LastDataUpdate | Timestamp van de meest recente data-extractie. | ||
| Omschrijving Geeft aan wanneer de data voor het process mining-datamodel voor het laatst is ververst. Dit stelt analisten in staat te begrijpen hoe actueel de inzichten zijn en helpt de data-actualiteit te valideren voor dashboards die real-time achterstand of SLA-naleving monitoren. Het belang Cruciaal voor datagovernance en het opbouwen van vertrouwen in de dashboards. Vindplaats ETL-timestamp Voorbeelden 2023-11-01T12:00:00Z | |||
| Onderhoudswerkopdracht MaintenanceWorkOrder | De unieke identifier voor de onderhoudswerkorder. | ||
| Omschrijving De Maintenance Work Order is het centrale document in SAP Plant Maintenance (tabel AUFK, veld AUFNR). Het koppelt de onderhoudsvereiste (melding) aan de uitvoeringsmiddelen, materialen en kosten. In process mining analyse dient dit als de Case ID, waardoor de end-to-end lifecycle van een onderhoudstaak kan worden gereconstrueerd, van aanmaak tot technische en zakelijke voltooiing. Het belang Het is de unieke sleutel die alle activiteiten, kosten en timestamps met elkaar verbindt, waardoor de visualisatie van de processtroom mogelijk wordt. Vindplaats SAP Table AUFK, Field AUFNR Voorbeelden 00004001234540012345000040098765 | |||
| Aangemaakt door gebruiker CreatedByUser | De gebruikersnaam van de persoon die de order heeft aangemaakt. | ||
| Omschrijving Identificeert de gebruiker (ERNAM) die verantwoordelijk is voor het initiëren van de werkorder. Dit wordt toegewezen aan 'User' in het generieke model. Het maakt analyse mogelijk van handmatige versus geautomatiseerde aanmaak en helpt bij de audit van de 'Maintenance Order Created'-activiteit. Het belang Maakt analyse van gebruikersgedrag en auditing mogelijk. Vindplaats SAP Table AUFK, Field ERNAM Voorbeelden JSMITHBSERVICEDDAVIS | |||
| Apparatuur Nummer EquipmentNumber | Identificatie van het specifieke fysieke activum dat wordt onderhouden. | ||
| Omschrijving Het Equipment Number (EQUNR) identificeert de individuele machine of het activa-object. Door data op dit veld te aggregeren, kunnen analisten het dashboard 'Kosten en Doorvoer Activa-onderhoud' samenstellen om 'probleemapparatuur' te vinden die frequent, kostbaar onderhoud vereist. Het maakt betrouwbaarheidsgericht onderhoudsanalyse mogelijk. Het belang Koppelt procesprestaties aan specifieke fysieke assets. Vindplaats SAP Table AUFK, Field EQUNR Voorbeelden 10004567PUMP-001HVAC-202 | |||
| Functionele Locatie FunctionalLocation | De hiërarchische locatie waar het activa is geïnstalleerd. | ||
| Omschrijving Vertegenwoordigt de plaats in de technische structuur waar de onderhoudstaak wordt uitgevoerd (TPLNR). In tegenstelling tot Equipment, dat kan bewegen, is de Functional Location statisch. Dit attribute ondersteunt het 'Technical Inspection Cycle Times' dashboard door prestatievergelijkingen mogelijk te maken tussen verschillende gebieden van de fabriek (bijv. Ketelhuis versus Verpakkingslijn). Het belang Maakt ruimtelijke en hiërarchische analyse van onderhoudsprestaties mogelijk. Vindplaats SAP Table IFLOT, Field TPLNR (or via AUFK-TPLNR) Voorbeelden PLANT1-BLD2-LN01US-TX-DAL-01 | |||
| Hoofdwerkcentrum MainWorkCenter | Het primaire werkcentrum of team toegewezen om de order uit te voeren. | ||
| Omschrijving Het Main Work Center (VAPLZ) vertegenwoordigt de groep technici of machines die het fysieke werk zullen uitvoeren. Dit attribuut is gekoppeld aan 'Team' en is essentieel voor het analyseren van de uitvoeringsefficiëntie, zoals 'Mean Time to Repair' per ploeg. Het helpt onderscheid te maken tussen interne arbeid en externe contractors. Het belang Maakt prestatieanalyse op resourceniveau mogelijk. Vindplaats SAP Table AFKO, Field VAPLZ (or AUFK-VAPLZ depending on config) Voorbeelden MECH_01ELEC_TEAMEXT_CONT | |||
| Notification Number NotificationNumber | De onderhoudsmelding die deze order heeft geactiveerd. | ||
| Omschrijving Het Notification Number (QMNUM) koppelt de Work Order terug aan het initiële verzoek (melding). Deze link is noodzakelijk om de volledige doorlooptijd te berekenen vanaf 'Maintenance Request Received' tot voltooiing. Zonder dit mist de analyse de initiële detectie- en rapportagefase van de onderhoudslifecycle. Het belang Verbindt de uitvoeringsfase terug met de aanvraag-/detectiefase. Vindplaats SAP Table AUFK, Field QMNUM Voorbeelden 1000050010000501 | |||
| Onderhoudsfabriek MaintenancePlant | De logistieke fabriek verantwoordelijk voor het onderhoud. | ||
| Omschrijving De Plant (WERKS) is de primaire organisatorische eenheid in de logistiek. Het scheidt data per fysieke faciliteit. Dit attribuut is essentieel voor het benchmarken van prestaties over verschillende locaties en is gekoppeld aan 'BusinessUnit' ter ondersteuning van filteren op hoog niveau in dashboards. Het belang Primair organisatorisch filter voor benchmarking van faciliteiten. Vindplaats SAP Table AUFK, Field WERKS Voorbeelden 100020003000 | |||
| Onderhoudsordertype MaintenanceOrderType | Categoriseert de werkorder (bijv. Preventief, Correctief). | ||
| Omschrijving Het Order Type (AUART) in SAP PM onderscheidt de aard van het onderhoudswerk. Gangbare types zijn PM01 (Correctief), PM02 (Preventief) en PM03 (Revisie). Dit attribuut is essentieel voor de 'Emergency Work Order Impact Monitor' en voor het segmenteren van procesvarianten, aangezien preventieve workflows aanzienlijk verschillen van reactieve. Het belang Fundamenteel voor het segmenteren van analyse tussen gepland en ongepland werk. Vindplaats SAP Table AUFK, Field AUART Voorbeelden PM01PM02PM03 | |||
| Onderhoudsprioriteit MaintenancePriority | Het urgentieniveau dat aan de werkorder is toegewezen. | ||
| Omschrijving Geeft de prioriteit (PRIOK) van de onderhoudstaak aan, zoals '1-Zeer Hoog', '2-Hoog' of '3-Medium'. Dit veld is de directe input voor de KPI 'Emergency Work Order Ratio'. Het analyseren van de stroom op prioriteit helpt te identificeren of orders met hoge prioriteit daadwerkelijk sneller door het systeem gaan dan routine werk. Het belang Belangrijke drijfveer voor SLA-analyse en identificatie van spoedwerk. Vindplaats SAP Table AFKO, Field PRIOK (or AUFK via view) Voorbeelden 1-Emergency2-High3-Medium4-Low | |||
| Plannergroep ResponsiblePlannerGroup | De groep planners die verantwoordelijk is voor het verwerken van de order. | ||
| Omschrijving De Planner Group (INGRP) identificeert het specifieke team of de afdeling die verantwoordelijk is voor het plannen van het onderhoudswerk. Dit is gekoppeld aan 'Department' en is cruciaal voor het 'Resource Utilization and Scheduling' dashboard om te identificeren welke planningsteams knelpunten vormen in de voorbereidingsfase. Het belang Identificeert het administratieve team dat eigenaar is van het planningsproces. Vindplaats SAP Table AUFK, Field INGRP Voorbeelden M01ELEMEC | |||
| Streefdatum Voltooiing TargetFinishDate | De geplande voltooiingsdatum voor het onderhoudswerk. | ||
| Omschrijving Deze datum (doorgaans Basic Finish Date - GLTRP) vertegenwoordigt de deadline voor de werkorder. Deze wordt vergeleken met de werkelijke voltooiingstimestamp om de 'SLA Adherence Rate' KPI te berekenen. Het is de basislijn voor het bepalen of een werkorder op tijd of te laat is. Het belang Het referentiepunt voor alle On-Time Delivery (OTD) berekeningen. Vindplaats SAP Table AFKO, Field GLTRP Voorbeelden 2023-12-012023-12-15 | |||
| System Status SystemStatus | De huidige technische status van de order (bijv. REL, TECO). | ||
| Omschrijving Een samengevoegde Het belang De primaire indicator van de lifecyclefase van de order. Vindplaats SAP Function Module STATUS_TEXT_EDIT or Table JEST Voorbeelden REL CNFTECOCRTD MACM | |||
| Activiteitsduur ActivityDuration | De benodigde tijd om de specifieke activiteit te voltooien. | ||
| Omschrijving De duur van de specifieke stap, met name nuttig voor 'Operation Confirmed' activiteiten waarbij arbeidsuren worden geregistreerd. Dit komt overeen met 'ProcessingTime' in het generieke model en wordt gebruikt om de efficiëntie en arbeidsinzet te berekenen. Het belang Meet de daadwerkelijke inspanning die aan taken is besteed. Vindplaats SAP Table AFRU, Field ISDD/ISDZ vs IEDD/IEDZ Voorbeelden 2,5 uur45 minutes | |||
| Geplande Arbeidsuren PlannedLaborHours | De geschatte arbeidsuren voor de order. | ||
| Omschrijving Het totaal geplande werk (ARBEI) van de orderoperaties. Het vergelijken hiervan met de werkelijke Activity Duration helpt in het 'Planning and Estimation Performance' dashboard om de nauwkeurigheid van de onderhoudsplanning te beoordelen. Het belang Basis Vindplaats SAP-tabel AFKO (Som van gepland werk voor bewerkingen) Voorbeelden 4,08,512.0 | |||
| Is herstelwerk IsRework | Vlag die aangeeft of de order herwerkactiviteiten omvatte. | ||
| Omschrijving Een berekende booleaanse waarde die aangeeft of een Het belang Ondersteunt direct kwaliteitscontrole-analyse. Vindplaats Berekend uit Processtroom Voorbeelden truefalse | |||
| Is Spoedwerk IsEmergencyWork | Vlag die aangeeft of de werkorder een spoedgeval is. | ||
| Omschrijving Een booleaans Het belang Vereenvoudigt het filteren voor kritische analyse van reactief onderhoud. Vindplaats Berekend uit Onderhoudsprioriteit Voorbeelden truefalse | |||
| Totale Werkelijke Kosten TotalActualCost | De totale werkelijke kosten die op de werkorder zijn geboekt. | ||
| Omschrijving Geaggregeerde kosten voor arbeid, materialen en diensten (uit tabel PMCO). Dit Het belang Biedt de financiële dimensie aan de operationele procesdata. Vindplaats SAP-tabel PMCO (som van waardetype 04 - Werkelijk) Voorbeelden 150.002500,500.00 | |||
Assetonderhoudsactiviteiten
| Activiteit | Omschrijving | ||
|---|---|---|---|
| Bedrijfstechnische voltooiing ingesteld | Markeert de definitieve administratieve afsluiting van de werkorder, waardoor verdere kostenboekingen worden voorkomen. Vastgelegd via de statuswijziging naar CLSD (Closed). | ||
| Het belang Vertegenwoordigt het absolute einde van de orderlevenscyclus, cruciaal voor Data Accuracy en Records Compliance. Vindplaats Table JCDS, Status I0046 (CLSD). Vastleggen Geregistreerd wanneer status wijzigt naar CLSD in JCDS Gebeurtenistype explicit | |||
| Goederenafgifte Geboekt | Registreert het fysieke verbruik van reserveonderdelen of materialen voor de werkorder. Vastgelegd vanuit de materiaaldocumentheaders die gekoppeld zijn aan de order. | ||
| Het belang Bevestigt dat onderdelen beschikbaar zijn en gepickt zijn, wat direct van invloed is op de analyse van de wachttijd voor onderdelenbeschikbaarheid. Vindplaats Tabel MSEG/MKPF, bewegingssoort 261 (Goederenafgifte voor order). Vastleggen Geregistreerd wanneer transactie MIGO/MB1A is uitgevoerd Gebeurtenistype explicit | |||
| Onderhoudsorder Aangemaakt | Markeert de aanmaak van de onderhoudswerkorder in het systeem. Expliciet vastgelegd aan de hand van de aanmaak timestamp van de Orderstamdata tabel. | ||
| Het belang Dit is de centrale ankerevent voor de case, die de overgang markeert van aanvraag naar planning en uitvoering. Vindplaats Tabel AUFK, veld ERDAT (Datum) en ERFZEIT (Tijd). Vastleggen Geregistreerd wanneer transactie IW31 is uitgevoerd Gebeurtenistype explicit | |||
| Onderhoudsorder vrijgegeven | Geeft aan dat de planning is voltooid en de order is vrijgegeven voor uitvoering. Geregistreerd door de statuswijziging naar REL in de systeemstatuslogboeken te monitoren. | ||
| Het belang Deze mijlpaal scheidt de planningsfase van de uitvoeringsfase, cruciaal voor het meten van Planning and Estimation Lead Time. Vindplaats Table JCDS (Status Change Documents), Status I0002 (REL). Vastleggen Geregistreerd wanneer status wijzigt naar REL in JCDS Gebeurtenistype explicit | |||
| Orderoperatie Bevestigd | Vertegenwoordigt de registratie van de werkelijk bestede tijd door een technicus aan een specifieke operation. Dit legt de werkelijke uitvoeringswerkzaamheden aan het asset vast. | ||
| Het belang Deze activiteit is de primaire databron voor Mean Time to Repair en de berekening van arbeidskosten. Vindplaats Tabel AFRU (Orderbevestigingen). Vastleggen Geregistreerd wanneer transactie IW41 is uitgevoerd Gebeurtenistype explicit | |||
| Technische Voltooiing Ingesteld | Markeert de onderhoudswerkzaamheden als fysiek en technisch voltooid. Vastgelegd via de statuswijziging naar TECO (Technically Completed). | ||
| Het belang Het meest kritieke eindpunt voor operationele analyse, wat betekent dat het activa is hersteld en het onderhoud is voltooid. Vindplaats Table JCDS, Status I0045 (TECO). Vastleggen Geregistreerd wanneer status wijzigt naar TECO in JCDS Gebeurtenistype explicit | |||
| Inkoopaanvraag Aangemaakt | Betekent dat een aanvraag voor externe inkoop of diensten is gegenereerd. Dit verbindt de interne onderhoudsorder met de externe toeleveringsketen. | ||
| Het belang Cruciaal voor het analyseren van vertragingen veroorzaakt door externe leveranciers of de inkoop van materiaal dat niet op voorraad is. Vindplaats Tabel EBAN, via rekeningtoewijzing gekoppeld aan AUFK-AUFNR. Vastleggen Geregistreerd bij aanmaak EBAN-record Gebeurtenistype explicit | |||
| Materiaalcomponent Toegevoegd | Registreert de toevoeging van reserveonderdelen of materialen aan de onderdelenlijst van de werkorder. Vastgelegd op basis van de aanmaak van een reserveringsregelitem. | ||
| Het belang Identificeert het begin van de inkoopcyclus voor benodigde onderdelen, ter ondersteuning van het 'Spare Parts Procurement Lead Times'-dashboard. Vindplaats Tabel RESB, veld BDTER (Behoeftedatum) of aanmaak-timestamp. Vastleggen Geregistreerd wanneer regelitem is toegevoegd aan RESB Gebeurtenistype explicit | |||
| Meting Vastgelegd | Registreert de invoer van een meetdocument, zoals een tellerstand of conditiebeoordeling. Dient vaak als het 'Technical Inspection'-event. | ||
| Het belang Essentieel voor Condition Based Maintenance en het volgen van de doorlooptijden van technische inspecties. Vindplaats Tabel IMRG (Meetdocument), gekoppeld aan Equipment of Functionele Locatie. Vastleggen Geregistreerd bij aanmaak meetdocument Gebeurtenistype explicit | |||
| Onderhoudsmelding aangemaakt | Registreert de initiële aanmaak van een onderhoudsmelding, die vaak de trigger is voor een werkorder. Vastgelegd vanuit de creatie-timestamp van de QMEL-tabel, linkt deze activity de stroomopwaartse aanvraag aan de uitvoeringsorder. | ||
| Het belang Deze activiteit markeert het begin van het end-to-end onderhoudsproces, waardoor de reactietijden tussen foutdetectie en ordergeneratie kunnen worden berekend. Vindplaats Tabel QMEL, veld ERDAT (Aanmaakdatum) en MZEIT (Tijd). Gekoppeld aan de order via QMEL-AUFNR. Vastleggen Geregistreerd wanneer record is aangemaakt in QMEL-tabel Gebeurtenistype explicit | |||
| Onderhoudsprioriteit gewijzigd | Registreert een update van het prioriteitsniveau van de werkorder, zoals escalatie naar spoed. Afgeleid van wijzigingsdocumenten die zijn gekoppeld aan de orderstamdata. | ||
| Het belang Het volgen van prioriteitswijzigingen verklaart procesafwijkingen en ondersteunt de Noodwerkorder Impact Monitor door reactieve escalaties te identificeren. Vindplaats Table CDPOS/CDHDR for Object Class AUFTRAG, Field PRIOK. Vastleggen Geregistreerd in wijzigingsdocumenten (CDPOS) Gebeurtenistype explicit | |||
| Orderkosten Verrekend | Geeft aan dat de verzamelde kosten op de order zijn overgedragen naar het controlling object (bijv. Kostenplaats). Vastgelegd vanuit het controlling document. | ||
| Het belang Houdt het financieel afsluitingsaspect bij en ondersteunt de KPI voor de Duur van Financiële Afwikkeling. Vindplaats Tabel COBK (CO-object: Documentkop), gekoppeld aan de order. Vastleggen Geregistreerd wanneer afwikkelingstransactie KO88 is uitgevoerd Gebeurtenistype explicit | |||
| Technische Voltooiing Ongedaan Gemaakt | Registreert de intrekking van de status `Technical Completion`, wat aangeeft dat de order opnieuw is geopend. Dit creëert een herwerkingslus in het procesmodel. | ||
| Het belang Primaire indicator voor de KPI voor het herstelpercentage van onderhoud, die vroegtijdige afsluitingen of kwaliteitsproblemen aan het licht brengt. Vindplaats Table JCDS, Status I0045 (TECO) change to Inactive. Vastleggen Geregistreerd wanneer TECO-status is gedeactiveerd Gebeurtenistype explicit | |||
| Werkorder Ingepland | Geeft de specifieke planning van operaties aan een capaciteit of datum aan. Afgeleid uit de toewijzing van de Dispatch-status aan operaties. | ||
| Het belang Meet de efficiëntie van de resourceallocatie en ondersteunt het Resourcebenutting en Planning dashboard. Vindplaats Table JCDS (Status Change Documents) for Operations (ObjType OV), Status I0009 (DSPT). Vastleggen Vergelijk het statusveld voor/na Gebeurtenistype inferred | |||
Extractie Guides
Stappen
Identificeer de gegevensbron-
interface: Bepaal hoe u toegang krijgt tot de SAP S/4HANA SQLinterface. Dit kan doorgaans via SAP HANA Studio, de ABAP Development Tools (ADT) in Eclipse, of een DBaaSconnection stringals de HANA-database is blootgesteld aan uw analyselaag.Verifieer de beschikbaarheid van CDS-
views: Zorg ervoor dat de standaard Core Data Services (CDS)viewsactief zijn in uw S/4HANA-systeem. De primaire vereisteviewszijn I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation en I_MeasurementDocument. U heeft ook toegang nodig tot de systeemstatushistorie-tabel JCDS enchange document-tabellen (CDHDR/CDPOS) om de volledigeevent historyte reconstrueren, aangezien standaard CDS-viewsvaak alleen de huidige status tonen.Bereid de SQL-omgeving voor: Open uw SQL-editor. Zorg ervoor dat uw gebruiker
SELECT-rechten heeft op de DDL SQLviews(meestal schema SAPABAP1 of vergelijkbaar) voor de hierboven genoemdeartefacten.Voer de extractiequery uit: Kopieer het meegeleverde SQL-script naar uw editor. Vervang de
placeholder[Your Client Number] door uw specifieke SAPclient ID(bijv. 100). Als u filtert op een specifiek datumbereik, update dan deEventTimestamp-filters in deWHERE-clausules.Datatransformatie: De query verwerkt de meeste transformaties, zoals het casten van
timestampsen het omzetten van statuscodes naar leesbare tekst. Zorg er echter voor dat deEventTimestamp-kolom tijdens de export wordt geformatteerd naar ISO 8601 (JJJJ-MM-DDTHH:MM:SS) als uw doelsysteem dit vereist.Resultaat exporteren: Voer de query uit en exporteer de resultaten naar een CSV- of Parquet-bestand. Zorg ervoor dat de
encodingis ingesteld op UTF-8 om speciale tekens in gebruikersnamen of beschrijvingen te kunnen verwerken.Kolom-
mappingvalideren: Open een voorbeeld van de export en controleer of de kolommen MaintenanceWorkOrder,ActivityenEventTimestampvolledig zijn ingevuld. Controleer of deActivity-kolom de specifiekestringsbevat die in de vereisten zijn opgesomd (bijv. 'Maintenance Order Created', 'Goods Issue Posted').Upload naar ProcessMind: Importeer het gevalideerde
flat filenaar ProcessMind. Map deActivity-kolom aan hetActivity ID-veld, MaintenanceWorkOrder aan hetCase ID-veld, enEventTimestampaan hetTimestamp-veld.
Configuratie
- Client Filter: SAP-systemen zijn multi-client. Filter altijd op
MANDTofClient(bijv. '100') om dataduplicatie of ongewenste data van andere clients te voorkomen. - Date Range: Het wordt aanbevolen om de
CreationDatevan de onderhoudsorder te filteren voor de laatste 6 tot 12 maanden. Het bevragen van de volledige historie vanJCDS(Status) ofCDPOS(Change Documents) zonder datumfilters kan leiden tot performance-timeouts. - Language Key: De query is standaard ingesteld op Engels ('E'). Als uw organisatie een andere primaire taal gebruikt voor tekstbeschrijvingen, pas dan het taalfilter aan.
- System Access: Vereist toegang tot het ABAP Core Data Services schema of de onderliggende HANA-tabellen. Toegang tot de ruwe tabellen JCDS en CDHDR is cruciaal voor historische statusanalyse, aangezien pure CDS-views vaak snapshot-gebaseerd zijn.
- Order Types: De query extraheert alle ordertypen. U kunt ervoor kiezen om te filteren op
MaintenanceOrderType(bijv. alleen PM01, PM02) als u alleen specifieke onderhoudsscenario's wilt analyseren.
a Voorbeeldquery sql
/* Activity 1: Maintenance Notification Created */
SELECT
CAST(N.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(N.CreationDate, ' '), N.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
N.MaintenanceOrderType,
N.MaintenancePriority,
N.Equipment AS EquipmentNumber,
N.FunctionalLocation,
N.MaintenancePlant,
N.MaintenancePlannerGroup AS ResponsiblePlannerGroup,
N.MainWorkCenter,
N.MaintenanceNotification AS NotificationNumber,
CAST(NULL AS DATE) AS TargetFinishDate,
N.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceNotification N
JOIN I_MaintenanceOrder O ON N.MaintenanceOrder = O.MaintenanceOrder
WHERE N.MaintenanceOrder IS NOT NULL AND N.MaintenanceOrder <> ''
UNION ALL
/* Activity 2: Maintenance Order Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Created' AS Activity,
O.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrder O
UNION ALL
/* Activity 3: Maintenance Priority Changed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Priority Changed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(H.UDATE, ' '), H.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
H.USERNAME AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM CDHDR H
JOIN CDPOS P ON H.OBJECTCLAS = P.OBJECTCLAS AND H.OBJECTID = P.OBJECTID AND H.CHANGENR = P.CHANGENR
JOIN I_MaintenanceOrder O ON O.MaintenanceOrder = H.OBJECTID
WHERE H.OBJECTCLAS = 'ORDER'
AND P.TABNAME = 'AFKO'
AND P.FNAME = 'PRIOK'
UNION ALL
/* Activity 4: Maintenance Order Released */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Released' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0002' /* REL Status */
AND J.INACT = ' '
UNION ALL
/* Activity 5: Material Component Added */
SELECT
CAST(C.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Material Component Added' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(C.CreationDate, ' '), COALESCE(C.CreationTime, '000000')), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrderComponent C
JOIN I_MaintenanceOrder O ON C.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 6: Purchase Requisition Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Purchase Requisition Created' AS Activity,
PR.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
PR.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_PurchasingDocumentItem PR
JOIN I_MaintenanceOrder O ON PR.ServiceMaintenanceOrder = O.MaintenanceOrder
WHERE PR.PurchasingDocumentCategory = 'B' /* Requisition */
UNION ALL
/* Activity 7: Goods Issue Posted */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Goods Issue Posted' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(MD.CreationDate, ' '), MD.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
MD.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaterialDocumentItem MD
JOIN I_MaintenanceOrder O ON MD.MaintenanceOrder = O.MaintenanceOrder
WHERE MD.GoodsMovementType = '261'
UNION ALL
/* Activity 8: Work Order Scheduled (Operation Dispatched) */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Work Order Scheduled' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrderOperation OP ON J.OBJNR = OP.MaintenanceOrderOperationInternalID
JOIN I_MaintenanceOrder O ON OP.MaintenanceOrder = O.MaintenanceOrder
WHERE J.STAT = 'I0019' /* DSP Dispatched Status */
AND J.INACT = ' '
UNION ALL
/* Activity 9: Order Operation Confirmed */
SELECT
CAST(CNF.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Operation Confirmed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(CNF.CreationDate, ' '), CNF.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
CNF.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintOrderConfirmation CNF
JOIN I_MaintenanceOrder O ON CNF.MaintenanceOrder = O.MaintenanceOrder
WHERE CNF.IsReversed = ' '
UNION ALL
/* Activity 10: Measurement Reading Recorded */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Measurement Reading Recorded' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(M.CreationDate, ' '), M.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
M.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MeasurementDocument M
JOIN I_MaintenanceOrder O ON M.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 11: Technical Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = ' '
UNION ALL
/* Activity 12: Technical Completion Reversed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Reversed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = 'X' /* Inactive indicates it was removed/reversed */
AND J.CHIND = 'U' /* Update indicator */
UNION ALL
/* Activity 13: Order Cost Settled */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Cost Settled' AS Activity,
JE.CreationDateTime AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
JE.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_ActualPlanJrnlEntryItem JE
JOIN I_MaintenanceOrder O ON JE.OrderID = O.MaintenanceOrder
WHERE JE.BusinessTransactionType = 'KOAO' /* Settlement */
UNION ALL
/* Activity 14: Business Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Business Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0046' /* CLSD Status */
AND J.INACT = ' ' Stappen
Identificeer de gegevensbron-
interface: Bepaal hoe u toegang krijgt tot de SAP S/4HANA SQLinterface. Dit kan doorgaans via SAP HANA Studio, de ABAP Development Tools (ADT) in Eclipse, of een DBaaSconnection stringals de HANA-database is blootgesteld aan uw analyselaag.Verifieer de beschikbaarheid van CDS-
views: Zorg ervoor dat de standaard Core Data Services (CDS)viewsactief zijn in uw S/4HANA-systeem. De primaire vereisteviewszijn I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation en I_MeasurementDocument. U heeft ook toegang nodig tot de systeemstatushistorie-tabel JCDS enchange document-tabellen (CDHDR/CDPOS) om de volledigeevent historyte reconstrueren, aangezien standaard CDS-viewsvaak alleen de huidige status tonen.Bereid de SQL-omgeving voor: Open uw SQL-editor. Zorg ervoor dat uw gebruiker
SELECT-rechten heeft op de DDL SQLviews(meestal schema SAPABAP1 of vergelijkbaar) voor de hierboven genoemdeartefacten.Voer de extractiequery uit: Kopieer het meegeleverde SQL-script naar uw editor. Vervang de
placeholder[Your Client Number] door uw specifieke SAPclient ID(bijv. 100). Als u filtert op een specifiek datumbereik, update dan deEventTimestamp-filters in deWHERE-clausules.Datatransformatie: De query verwerkt de meeste transformaties, zoals het casten van
timestampsen het omzetten van statuscodes naar leesbare tekst. Zorg er echter voor dat deEventTimestamp-kolom tijdens de export wordt geformatteerd naar ISO 8601 (JJJJ-MM-DDTHH:MM:SS) als uw doelsysteem dit vereist.Resultaat exporteren: Voer de query uit en exporteer de resultaten naar een CSV- of Parquet-bestand. Zorg ervoor dat de
encodingis ingesteld op UTF-8 om speciale tekens in gebruikersnamen of beschrijvingen te kunnen verwerken.Kolom-
mappingvalideren: Open een voorbeeld van de export en controleer of de kolommen MaintenanceWorkOrder,ActivityenEventTimestampvolledig zijn ingevuld. Controleer of deActivity-kolom de specifiekestringsbevat die in de vereisten zijn opgesomd (bijv. 'Maintenance Order Created', 'Goods Issue Posted').Upload naar ProcessMind: Importeer het gevalideerde
flat filenaar ProcessMind. Map deActivity-kolom aan hetActivity ID-veld, MaintenanceWorkOrder aan hetCase ID-veld, enEventTimestampaan hetTimestamp-veld.
Configuratie
- Client Filter: SAP-systemen zijn multi-client. Filter altijd op
MANDTofClient(bijv. '100') om dataduplicatie of ongewenste data van andere clients te voorkomen. - Date Range: Het wordt aanbevolen om de
CreationDatevan de onderhoudsorder te filteren voor de laatste 6 tot 12 maanden. Het bevragen van de volledige historie vanJCDS(Status) ofCDPOS(Change Documents) zonder datumfilters kan leiden tot performance-timeouts. - Language Key: De query is standaard ingesteld op Engels ('E'). Als uw organisatie een andere primaire taal gebruikt voor tekstbeschrijvingen, pas dan het taalfilter aan.
- System Access: Vereist toegang tot het ABAP Core Data Services schema of de onderliggende HANA-tabellen. Toegang tot de ruwe tabellen JCDS en CDHDR is cruciaal voor historische statusanalyse, aangezien pure CDS-views vaak snapshot-gebaseerd zijn.
- Order Types: De query extraheert alle ordertypen. U kunt ervoor kiezen om te filteren op
MaintenanceOrderType(bijv. alleen PM01, PM02) als u alleen specifieke onderhoudsscenario's wilt analyseren.
a Voorbeeldquery sql
/* Activity 1: Maintenance Notification Created */
SELECT
CAST(N.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(N.CreationDate, ' '), N.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
N.MaintenanceOrderType,
N.MaintenancePriority,
N.Equipment AS EquipmentNumber,
N.FunctionalLocation,
N.MaintenancePlant,
N.MaintenancePlannerGroup AS ResponsiblePlannerGroup,
N.MainWorkCenter,
N.MaintenanceNotification AS NotificationNumber,
CAST(NULL AS DATE) AS TargetFinishDate,
N.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceNotification N
JOIN I_MaintenanceOrder O ON N.MaintenanceOrder = O.MaintenanceOrder
WHERE N.MaintenanceOrder IS NOT NULL AND N.MaintenanceOrder <> ''
UNION ALL
/* Activity 2: Maintenance Order Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Created' AS Activity,
O.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrder O
UNION ALL
/* Activity 3: Maintenance Priority Changed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Priority Changed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(H.UDATE, ' '), H.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
H.USERNAME AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM CDHDR H
JOIN CDPOS P ON H.OBJECTCLAS = P.OBJECTCLAS AND H.OBJECTID = P.OBJECTID AND H.CHANGENR = P.CHANGENR
JOIN I_MaintenanceOrder O ON O.MaintenanceOrder = H.OBJECTID
WHERE H.OBJECTCLAS = 'ORDER'
AND P.TABNAME = 'AFKO'
AND P.FNAME = 'PRIOK'
UNION ALL
/* Activity 4: Maintenance Order Released */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Released' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0002' /* REL Status */
AND J.INACT = ' '
UNION ALL
/* Activity 5: Material Component Added */
SELECT
CAST(C.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Material Component Added' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(C.CreationDate, ' '), COALESCE(C.CreationTime, '000000')), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrderComponent C
JOIN I_MaintenanceOrder O ON C.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 6: Purchase Requisition Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Purchase Requisition Created' AS Activity,
PR.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
PR.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_PurchasingDocumentItem PR
JOIN I_MaintenanceOrder O ON PR.ServiceMaintenanceOrder = O.MaintenanceOrder
WHERE PR.PurchasingDocumentCategory = 'B' /* Requisition */
UNION ALL
/* Activity 7: Goods Issue Posted */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Goods Issue Posted' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(MD.CreationDate, ' '), MD.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
MD.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaterialDocumentItem MD
JOIN I_MaintenanceOrder O ON MD.MaintenanceOrder = O.MaintenanceOrder
WHERE MD.GoodsMovementType = '261'
UNION ALL
/* Activity 8: Work Order Scheduled (Operation Dispatched) */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Work Order Scheduled' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrderOperation OP ON J.OBJNR = OP.MaintenanceOrderOperationInternalID
JOIN I_MaintenanceOrder O ON OP.MaintenanceOrder = O.MaintenanceOrder
WHERE J.STAT = 'I0019' /* DSP Dispatched Status */
AND J.INACT = ' '
UNION ALL
/* Activity 9: Order Operation Confirmed */
SELECT
CAST(CNF.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Operation Confirmed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(CNF.CreationDate, ' '), CNF.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
CNF.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintOrderConfirmation CNF
JOIN I_MaintenanceOrder O ON CNF.MaintenanceOrder = O.MaintenanceOrder
WHERE CNF.IsReversed = ' '
UNION ALL
/* Activity 10: Measurement Reading Recorded */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Measurement Reading Recorded' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(M.CreationDate, ' '), M.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
M.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MeasurementDocument M
JOIN I_MaintenanceOrder O ON M.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 11: Technical Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = ' '
UNION ALL
/* Activity 12: Technical Completion Reversed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Reversed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = 'X' /* Inactive indicates it was removed/reversed */
AND J.CHIND = 'U' /* Update indicator */
UNION ALL
/* Activity 13: Order Cost Settled */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Cost Settled' AS Activity,
JE.CreationDateTime AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
JE.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_ActualPlanJrnlEntryItem JE
JOIN I_MaintenanceOrder O ON JE.OrderID = O.MaintenanceOrder
WHERE JE.BusinessTransactionType = 'KOAO' /* Settlement */
UNION ALL
/* Activity 14: Business Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Business Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0046' /* CLSD Status */
AND J.INACT = ' '