Šablona dat pro údržbu zařízení
Šablona dat pro údržbu zařízení
- Doporučené atributy ke sběru
- Důležité aktivity údržby ke sledování
- Technické pokyny k extrakci dat ze SAP PM
Atributy údržby zařízení
| Název | Popis | ||
|---|---|---|---|
| Časové razítko události EventTimestamp | Přesné datum a čas, kdy k aktivitě došlo. | ||
| Popis Zaznamenává přesný okamžik události. U změn statusu se údaj přebírá z času aktualizace systémového statusu, u operací z času potvrzení. Přesná časová razítka jsou nezbytná pro výpočet doby cyklu a průběžné doby i pro odhalení úzkých míst mezi kroky procesu, například mezi plánováním a realizací. Proč je to důležité Je nutné pro správné seřazení událostí a výpočet všech KPI založených na délce trvání. Kde data získat JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Příklady 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Název aktivity Activity | Konkrétní úkol nebo změna statusu, ke které došlo. | ||
| Popis Označuje krok v procesu údržby, například „Vytvořen příkaz údržby“, „Zaúčtován výdej materiálu“ nebo „Potvrzena operace příkazu“. Změny statusu se obvykle odvozují z tabulek správy statusů (JEST), zatímco potvrzení z tabulek transakcí (AFRU pro potvrzení, MKPF pro pohyby materiálu). Tento atribut určuje uzly v mapě procesu. Proč je to důležité Popisuje, co se v procesu děje. Je nezbytný pro zjištění toku procesu a jeho variant. Kde data získat Odvozeno z tabulek JEST (status), AFRU (potvrzení), QMEL (oznámení) Příklady Vytvořen příkaz údržbyUvolněn příkazTechnicky dokončeno | |||
| Poslední aktualizace dat LastDataUpdate | Časové razítko poslední extrakce dat. | ||
| Popis Označuje, kdy byla data naposledy aktualizována v datovém modelu process mining. Analytici tak mohou zjistit, jak aktuální jsou získané poznatky, a ověřit čerstvost dat v dashboardech, které sledují aktuální nevyřízené požadavky nebo plnění SLA. Proč je to důležité Je důležitá pro správu dat a důvěru v dashboardy. Kde data získat Časové razítko ETL Příklady 2023-11-01T12:00:00Z | |||
| Pracovní příkaz údržby MaintenanceWorkOrder | Jedinečný identifikátor pracovního příkazu údržby. | ||
| Popis Pracovní příkaz údržby je hlavním dokladem v SAP Plant Maintenance (tabulka AUFK, pole AUFNR). Propojuje požadavek na údržbu (oznámení) se zdroji, materiálem a náklady potřebnými k realizaci. V process mining analýze slouží jako ID případu. Díky tomu lze rekonstruovat celý životní cyklus údržby od vytvoření příkazu po technické a obchodní dokončení. Proč je to důležité Jde o jedinečný klíč, který propojuje všechny aktivity, náklady a časová razítka a umožňuje zobrazit tok procesu. Kde data získat Tabulka SAP AUFK, pole AUFNR Příklady 00004001234540012345000040098765 | |||
| Zdrojový systém SourceSystem | Systém, ze kterého data pocházejí. | ||
| Popis Určuje konkrétní klient nebo instanci SAP, například „SAP_PM_PROD“. V prostředí s více ERP systémy pomáhá tento atribut rozlišit záznamy se stejnými ID, které patří různým právním subjektům nebo systémovým prostředím. Proč je to důležité Zajišťuje jedinečnost dat a jejich dohledatelnost v prostředí s více systémy. Kde data získat Konfigurace systému / protokol extrakce Příklady SAP_ECC_P01SAP_S4H_100 | |||
| Číslo oznámení NotificationNumber | Oznámení údržby, které spustilo tento příkaz. | ||
| Popis Číslo oznámení (QMNUM) propojuje pracovní příkaz s původním požadavkem (oznámením). Toto propojení je nutné pro výpočet celkové doby od přijetí požadavku na údržbu po dokončení. Bez něj analýza nezahrnuje počáteční fázi zjištění a nahlášení závady. Proč je to důležité Propojuje fázi realizace zpět s fází požadavku nebo zjištění. Kde data získat Tabulka SAP AUFK, pole QMNUM Příklady 1000050010000501 | |||
| Číslo zařízení EquipmentNumber | Identifikátor konkrétního fyzického zařízení, na kterém se provádí údržba. | ||
| Popis Číslo zařízení (EQUNR) identifikuje konkrétní stroj nebo objekt. Analytici mohou podle tohoto pole agregovat data a v dashboardu „Náklady na údržbu a průchodnost zařízení“ najít zařízení, která vyžadují časté a nákladné opravy. Umožňuje také analýzu údržby zaměřené na spolehlivost. Proč je to důležité Propojuje výkonnost procesu s konkrétními fyzickými zařízeními. Kde data získat Tabulka SAP AUFK, pole EQUNR Příklady 10004567ČERPADLO-001VZT-202 | |||
| Hlavní pracoviště MainWorkCenter | Hlavní pracoviště nebo tým určený k provedení příkazu. | ||
| Popis Hlavní pracoviště (VAPLZ) označuje skupinu techniků nebo strojů, které provedou fyzickou práci. Tento atribut se mapuje na „Team“ a je důležitý pro analýzu efektivity realizace, například střední doby opravy podle týmu. Pomáhá také rozlišit interní pracovníky od externích dodavatelů. Proč je to důležité Umožňuje analyzovat výsledky podle zdrojů. Kde data získat Tabulka SAP AFKO, pole VAPLZ (nebo AUFK-VAPLZ podle konfigurace) Příklady MECH_01ELEKTRO_TÝMEXTERNÍ_DOD | |||
| Plánované datum dokončení TargetFinishDate | Plánované datum dokončení údržby. | ||
| Popis Toto datum, obvykle Basic Finish Date (GLTRP), představuje termín dokončení zakázky. Porovnává se se skutečným časem dokončení a slouží k výpočtu KPI „Míra dodržení SLA“. Podle něj se určuje, zda byla zakázka dokončena včas, nebo se zpožděním. Proč je to důležité Referenční údaj pro všechny výpočty včasného dokončení (OTD). Kde data získat Tabulka SAP AFKO, pole GLTRP Příklady 2023-12-012023-12-15 | |||
| Priorita údržby MaintenancePriority | Úroveň naléhavosti přiřazená pracovnímu příkazu. | ||
| Popis Označuje prioritu (PRIOK) úkolu údržby, například „1 – velmi vysoká“, „2 – vysoká“ nebo „3 – střední“. Toto pole je přímým vstupem pro KPI „Podíl nouzových pracovních příkazů“. Analýza toku podle priority ukáže, zda se příkazy s vysokou prioritou skutečně vyřizují rychleji než běžná práce. Proč je to důležité Důležitý ukazatel pro analýzu SLA a identifikaci nouzových prací. Kde data získat Tabulka SAP AFKO, pole PRIOK (nebo AUFK prostřednictvím pohledu) Příklady 1 – nouzová2 – vysoká3 – střední4 – nízká | |||
| Skupina plánovačů ResponsiblePlannerGroup | Skupina plánovačů odpovědná za zpracování příkazu. | ||
| Popis Skupina plánovačů (INGRP) označuje konkrétní tým nebo oddělení odpovědné za plánování údržby. Mapuje se na „Department“ a je důležitá pro dashboard Resource Utilization and Scheduling, který pomáhá zjistit, které plánovací týmy vytvářejí úzká místa v přípravné fázi. Proč je to důležité Určuje administrativní tým odpovědný za plánování. Kde data získat Tabulka SAP AUFK, pole INGRP Příklady M01ELEMEC | |||
| Systémový status SystemStatus | Aktuální technický status zakázky, například REL nebo TECO. | ||
| Popis Zřetězený seznam aktivních systémových statusů (z JEST), které jsou aktuálně přiřazeny zakázce. Mezi běžné hodnoty patří CRTD (vytvořeno), REL (uvolněno), TECO (technicky dokončeno) a CLSD (uzavřeno). Díky nim lze v přehledu „Nevyřízené a rozpracované zakázky“ filtrovat otevřené a uzavřené případy. Proč je to důležité Hlavní ukazatel fáze životního cyklu zakázky. Kde data získat Modul SAP STATUS_TEXT_EDIT nebo tabulka JEST Příklady REL CNFTECOCRTD MACM | |||
| Technické místo FunctionalLocation | Hierarchicky určené místo instalace zařízení. | ||
| Popis Označuje místo v technické struktuře, kde se provádí údržba (TPLNR). Na rozdíl od zařízení, které lze přesouvat, zůstává technické místo neměnné. Tento atribut podporuje dashboard „Doba trvání technických kontrol“ a umožňuje porovnávat výsledky v různých částech závodu, například v kotelně a na balicí lince. Proč je to důležité Umožňuje prostorovou a hierarchickou analýzu výsledků údržby. Kde data získat Tabulka SAP IFLOT, pole TPLNR (nebo přes AUFK-TPLNR) Příklady ZÁVOD1-BUD2-LN01USA-TX-DAL-01 | |||
| Typ příkazu údržby MaintenanceOrderType | Zařazuje pracovní příkaz do kategorie, například preventivní nebo opravná údržba. | ||
| Popis Typ příkazu (AUART) v SAP PM rozlišuje druh údržby. Mezi běžné typy patří PM01 (opravná údržba), PM02 (preventivní údržba) a PM03 (repase). Tento atribut je nezbytný pro dashboard Emergency Work Order Impact Monitor a segmentaci variant procesu, protože preventivní postupy se výrazně liší od reaktivních. Proč je to důležité Zásadní pro rozlišení plánované a neplánované práce v analýze. Kde data získat Tabulka SAP AUFK, pole AUART Příklady PM01PM02PM03 | |||
| Uživatel, který zakázku vytvořil CreatedByUser | Uživatelské jméno osoby, která zakázku vytvořila. | ||
| Popis Určuje uživatele (ERNAM), který založil zakázku. V obecném modelu se mapuje na „Uživatel“. Umožňuje porovnat ruční a automatické vytváření zakázek a kontrolovat aktivitu „Vytvoření zakázky údržby“. Proč je to důležité Umožňuje analyzovat chování uživatelů a provádět audit. Kde data získat Tabulka SAP AUFK, pole ERNAM Příklady JSMITHBSERVICEDDAVIS | |||
| Závod údržby MaintenancePlant | Logistický závod odpovědný za údržbu. | ||
| Popis Závod (WERKS) je hlavní organizační jednotkou v logistice. Rozděluje data podle fyzického provozu. Tento atribut je nezbytný pro porovnávání výsledků mezi jednotlivými závody a mapuje se na „BusinessUnit“, aby bylo možné filtrovat dashboardy podle organizačních jednotek. Proč je to důležité Základní organizační filtr pro porovnávání provozů. Kde data získat Tabulka SAP AUFK, pole WERKS Příklady 100020003000 | |||
| Celkové skutečné náklady TotalActualCost | Celkové skutečné náklady zaúčtované na zakázku. | ||
| Popis Souhrnné náklady na práci, materiál a služby (z tabulky PMCO). Tento atribut využívá dashboard „Náklady na údržbu zařízení a její průchodnost“, který vedoucím pracovníkům ukazuje finanční dopad údržby. Pomáhá posoudit, zda je výhodnější zařízení opravit, nebo vyměnit. Proč je to důležité Doplňuje provozní data procesu o finanční hledisko. Kde data získat Tabulka SAP PMCO (součet hodnot typu 04, skutečnost) Příklady 150.002500.500.00 | |||
| Jde o havarijní práci IsEmergencyWork | Příznak označující, zda jde o havarijní zakázku. | ||
| Popis Logická hodnota vypočtená podle priority údržby. Pokud má priorita hodnotu „1“ (nebo konkrétní kód pro havarijní stav v konfiguraci), příznak je nastaven na true. Usnadňuje filtrování a výpočet KPI „Podíl havarijních zakázek“ bez složité logiky v dashboardu. Proč je to důležité Usnadňuje filtrování při analýze kritické reaktivní údržby. Kde data získat Vypočteno z MaintenancePriority Příklady truefalse | |||
| Jde o opakovanou opravu IsRework | Příznak označující, zda zakázka zahrnovala opakované opravy. | ||
| Popis Vypočtená logická hodnota, která určuje, zda se proces opakoval. Příznak se nastaví například tehdy, když aktivita „Provedení údržby“ proběhla více než jednou nebo když se status změnil z „Technicky dokončeno“ zpět na „Probíhá“. Tento údaj slouží k výpočtu KPI „Míra opakovaných oprav“ a pomáhá odhalovat problémy s kvalitou. Proč je to důležité Přímo podporuje analýzu kontroly kvality. Kde data získat Vypočteno z průběhu procesu Příklady truefalse | |||
| Plánovaný počet hodin práce PlannedLaborHours | Odhadovaný počet pracovních hodin pro zakázku. | ||
| Popis Celkový plánovaný rozsah práce (ARBEI) z operací zakázky. Porovnáním se skutečnou dobou trvání aktivity lze v dashboardu „Výkonnost plánování a odhadů“ posoudit přesnost plánování údržby. Proč je to důležité Základní ukazatel pro analýzu přesnosti plánování. Kde data získat Tabulka SAP AFKO (součet plánované práce za operace) Příklady 4.08.512.0 | |||
Aktivity údržby zařízení
| Aktivita | Popis | ||
|---|---|---|---|
| Nastaveno obchodní dokončení | Označuje konečné administrativní uzavření pracovního příkazu, po kterém už nelze účtovat další náklady. Aktivita se zaznamenává při změně statusu na CLSD (uzavřeno). | ||
| Proč je to důležité Označuje úplný konec životního cyklu příkazu a je důležitý pro přesnost dat a shodu při vedení záznamů. Kde data získat Tabulka JCDS, status I0046 (CLSD). Zachycení Zaznamená se při změně statusu na CLSD v tabulce JCDS Typ události explicit | |||
| Nastaveno technické dokončení | Označuje, že údržba je fyzicky i technicky dokončena. Aktivita se zaznamenává při změně statusu na TECO (technicky dokončeno). | ||
| Proč je to důležité Jde o nejdůležitější koncový bod provozní analýzy. Označuje, že zařízení je opět funkční a údržba je hotová. Kde data získat Tabulka JCDS, status I0045 (TECO). Zachycení Zaznamená se při změně statusu na TECO v tabulce JCDS Typ události explicit | |||
| Potvrzena operace příkazu | Zaznamenává skutečný čas, který technik strávil konkrétní operací. Zachycuje tak skutečně provedenou práci na zařízení. | ||
| Proč je to důležité Tato aktivita je hlavním zdrojem dat pro výpočet střední doby opravy a nákladů na práci. Kde data získat Tabulka AFRU (potvrzení příkazů). Zachycení Zaznamená se při provedení transakce IW41 Typ události explicit | |||
| Uvolněn příkaz údržby | Označuje dokončení plánování a uvolnění příkazu k realizaci. Aktivita se zaznamenává při změně systémového statusu na REL. | ||
| Proč je to důležité Tento milník odděluje fázi plánování od realizace a je zásadní pro měření doby plánování a odhadu. Kde data získat Tabulka JCDS (dokumenty změn statusu), status I0002 (REL). Zachycení Zaznamená se při změně statusu na REL v tabulce JCDS Typ události explicit | |||
| Vytvořen příkaz údržby | Označuje vytvoření objektu pracovního příkazu údržby v systému. Aktivita se zaznamenává podle časového razítka vytvoření v tabulce kmenových dat příkazů. | ||
| Proč je to důležité Jde o hlavní událost případu, která označuje přechod od požadavku k plánování a realizaci. Kde data získat Tabulka AUFK, pole ERDAT (datum) a ERFZEIT (čas). Zachycení Zaznamená se při provedení transakce IW31 Typ události explicit | |||
| Zaúčtován výdej materiálu | Zaznamenává fyzickou spotřebu náhradních dílů nebo materiálu na pracovním příkazu. Aktivita se odvozuje z hlaviček materiálových dokladů propojených s příkazem. | ||
| Proč je to důležité Potvrzuje, že jsou díly k dispozici a byly vyskladněny. Přímo tak ovlivňuje analýzu čekání na dostupnost dílů. Kde data získat Tabulky MSEG/MKPF, druh pohybu 261 (výdej materiálu na příkaz). Zachycení Zaznamená se při provedení transakce MIGO/MB1A Typ události explicit | |||
| Naplánován pracovní příkaz | Označuje konkrétní naplánování operací na kapacitu nebo termín. Odvozuje se z přiřazení statusu Dispatch k operacím. | ||
| Proč je to důležité Měří efektivitu přidělování zdrojů a podporuje dashboard Resource Utilization and Scheduling. Kde data získat Tabulka JCDS (dokumenty změn statusu) pro operace (typ objektu OV), status I0009 (DSPT). Zachycení Porovnejte hodnotu statusu před změnou a po ní Typ události inferred | |||
| Přidána materiálová položka | Zaznamenává přidání náhradních dílů nebo materiálu do seznamu komponent pracovního příkazu. Aktivita se odvozuje od vytvoření položky rezervace. | ||
| Proč je to důležité Označuje začátek nákupu potřebných dílů a podporuje dashboard Spare Parts Procurement Lead Times. Kde data získat Tabulka RESB, pole BDTER (datum potřeby) nebo časové razítko vytvoření. Zachycení Zaznamená se při přidání položky do tabulky RESB Typ události explicit | |||
| Vytvořena nákupní žádanka | Označuje vytvoření požadavku na externí nákup nebo služby. Propojuje interní příkaz údržby s externím dodavatelským řetězcem. | ||
| Proč je to důležité Je důležitá pro analýzu prodlev způsobených externími dodavateli nebo nákupem materiálu, který není skladem. Kde data získat Tabulka EBAN, propojení přes přiřazení účtu k AUFK-AUFNR. Zachycení Zaznamená se při vytvoření záznamu v tabulce EBAN Typ události explicit | |||
| Vytvořeno oznámení údržby | Zaznamenává vytvoření oznámení údržby, které často spouští vznik pracovního příkazu. Aktivita se odvozuje z časového razítka vytvoření záznamu v tabulce QMEL a propojuje původní požadavek s příkazem k provedení. | ||
| Proč je to důležité Tato aktivita označuje začátek celého procesu údržby a umožňuje vypočítat dobu reakce od zjištění závady po vytvoření příkazu. Kde data získat Tabulka QMEL, pole ERDAT (datum vytvoření) a MZEIT (čas). Propojení s příkazem přes QMEL-AUFNR. Zachycení Zaznamená se při vytvoření záznamu v tabulce QMEL Typ události explicit | |||
| Vyúčtovány náklady příkazu | Označuje převod nákladů shromážděných na příkazu na objekt controllingového účetnictví, například nákladové středisko. Aktivita se odvozuje z controllingového dokladu. | ||
| Proč je to důležité Sleduje finanční uzavření a podporuje KPI doby finančního vyúčtování. Kde data získat Tabulka COBK (hlavička dokladu CO), propojená s příkazem. Zachycení Zaznamená se při provedení vyúčtovací transakce KO88 Typ události explicit | |||
| Zaznamenán údaj měření | Zaznamenává vložení měřicího dokladu, například odečtu počítadla nebo posouzení stavu. Často slouží jako událost technické kontroly. | ||
| Proč je to důležité Je nezbytná pro údržbu podle stavu zařízení a sledování doby trvání technických kontrol. Kde data získat Tabulka IMRG (měřicí doklad), propojená se zařízením nebo technickým místem. Zachycení Zaznamená se při vytvoření měřicího dokladu Typ události explicit | |||
| Změněna priorita údržby | Zaznamenává změnu priority pracovního příkazu, například zvýšení na úroveň „Nouzová“. Údaj se odvozuje z dokumentů změn souvisejících s kmenovými daty příkazu. | ||
| Proč je to důležité Sledování změn priorit objasňuje odchylky v procesu a podporuje dashboard Emergency Work Order Impact Monitor tím, že odhaluje neplánované zvýšení priority. Kde data získat Tabulky CDPOS/CDHDR, třída objektu AUFTRAG, pole PRIOK. Zachycení Zaznamenáno v dokumentech změn (CDPOS) Typ události explicit | |||
| Zrušeno technické dokončení | Zaznamenává zrušení statusu technického dokončení, které znamená, že byl příkaz znovu otevřen. V modelu procesu tak vzniká opakovaný cyklus práce. | ||
| Proč je to důležité Hlavní ukazatel KPI míry opakované práce při údržbě. Upozorňuje na předčasné uzavření příkazů nebo problémy s kvalitou. Kde data získat Tabulka JCDS, změna statusu I0045 (TECO) na neaktivní. Zachycení Zaznamená se při deaktivaci statusu TECO Typ události explicit | |||
Návody k extrakci
Kroky
Určete rozhraní zdroje dat: Zjistěte, jak získáte přístup k rozhraní SQL v SAP S/4HANA. Obvykle se používá SAP HANA Studio, ABAP Development Tools (ADT) v Eclipse nebo připojovací řetězec DBaaS, pokud je databáze HANA zpřístupněna analytické vrstvě.
Ověřte dostupnost CDS pohledů: Zkontrolujte, zda jsou ve vašem systému S/4HANA aktivní standardní pohledy Core Data Services (CDS). Potřebujete zejména pohledy I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation a I_MeasurementDocument. Pro sestavení úplné historie událostí budete potřebovat také přístup k tabulce historie systémových stavů JCDS a k tabulkám změnových dokumentů (CDHDR/CDPOS). Standardní CDS pohledy totiž často zobrazují pouze aktuální stav.
Připravte prostředí SQL: Otevřete editor SQL. Ověřte, že má váš uživatel oprávnění SELECT k pohledům DDL SQL, obvykle ve schématu SAPABAP1 nebo podobném, pro výše uvedené objekty.
Spusťte dotaz pro extrakci dat: Zkopírujte dodaný skript SQL do editoru. Nahraďte zástupný text [Your Client Number] konkrétním ID klienta SAP, například 100. Pokud chcete data omezit na určité období, upravte ve výrazech WHERE filtry EventTimestamp.
Transformujte data: Dotaz provádí většinu transformací, například převod časových razítek a mapování kódů stavů na srozumitelný text. Pokud to cílový systém vyžaduje, při exportu nastavte sloupec EventTimestamp do formátu ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Exportujte výsledek: Spusťte dotaz a exportujte výsledky do souboru CSV nebo Parquet. Nastavte kódování UTF-8, aby se správně zobrazily speciální znaky v uživatelských jménech a popisech.
Ověřte mapování sloupců: Otevřete vzorek exportovaných dat a zkontrolujte, že sloupce MaintenanceWorkOrder, Activity a EventTimestamp obsahují hodnoty. Ověřte také, že sloupec Activity obsahuje konkrétní názvy uvedené v požadavcích, například Maintenance Order Created a Goods Issue Posted.
Nahrajte data do ProcessMind: Importujte ověřený soubor do ProcessMind. Namapujte sloupec Activity na pole Activity ID, MaintenanceWorkOrder na pole Case ID a EventTimestamp na pole Timestamp.
Konfigurace
- Filtr klienta: Systémy SAP podporují více klientů. Vždy filtrujte podle
MANDTneboClient(například '100'), abyste předešli duplicitám a úniku dat mezi klienty. - Časové období: Doporučujeme filtrovat
CreationDatezakázky údržby na posledních 6 až 12 měsíců. Dotazování celé historieJCDS(statusy) neboCDPOS(změnové doklady) bez časového filtru může vést k překročení časového limitu. - Jazykový klíč: Dotaz ve výchozím nastavení používá angličtinu ('E'). Pokud vaše organizace používá pro textové popisy jiný hlavní jazyk, upravte jazykový filtr.
- Přístup k systému: Je nutný přístup ke schématu ABAP Core Data Services nebo k podkladovým tabulkám HANA. Pro analýzu historie statusů je zásadní přístup k nezpracovaným tabulkám JCDS a CDHDR, protože samotné CDS View často zachycují pouze stav v určitém okamžiku.
- Typy zakázek: Dotaz načítá všechny typy zakázek. Pokud chcete analyzovat jen určité scénáře údržby, můžete filtrovat
MaintenanceOrderType, například pouze na PM01 a PM02.
Ukázkový dotaz 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 = ' ' Kroky
- Ověřte, že máte přímý přístup pro čtení tabulek AUFK, AFVC, JEST, QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG a příslušných tabulek změnových a controllingových dokumentů. Zjistěte přesné fyzické názvy a mapování polí ve své databázi SAP, protože dostupnost polí a replikovaná struktura tabulek se liší podle nasazení.
- Nastavte připojení pro extrakci, přihlašovací údaje, počáteční a koncové datum extrakce a případné filtry podle společnosti. Při prvotním ověření použijte klouzavé období tří až šesti měsíců. Po úspěšné kontrole výkonu a úplnosti období prodlužte.
- Z tabulky AUFK extrahujte atributy hlavičky zakázky, z AFVC atributy operací a z JEST záznamy stavů. Záznamy související se zakázkou propojte pomocí čísla zakázky používaného ve vašem schématu SAP. V mnoha implementacích SAP obsahuje JEST pouze aktuální stav, takže pro historická časová razítka změn stavů potřebujete zdroj historie stavů nebo změnových dokumentů. Pokud JEST historii změn stavů neuchovává, nastavte [Your status history table] a příslušná pole časových razítek.
- Extrahujte vytvoření oznámení z QMEL, vytvoření komponent z RESB, vytvoření nákupních požadavků z EBAN, informace o výdeji materiálu z MSEG a MKPF, potvrzení z AFRU, naměřené hodnoty z IMRG a záznamy o zúčtování z [Your controlling document table]. Změny priorit extrahujte z [Your order change document table] a [Your change document item table]. Tyto zdroje jsou nutné, protože samotné tabulky AUFK, AFVC a JEST neposkytují všech 14 požadovaných aktivit.
- Sjednoťte časová razítka ze všech zdrojů do jednoho časového pásma a jednoho datového typu. Převeďte datum a čas SAP nebo časová razítka databáze na EventTimestamp. Zachovejte přesnost časových razítek dostupnou v systému. Nastavené období extrakce aplikujte na EventTimestamp, nejen na datum vytvoření zakázky.
- Pro každý výskyt ve zdroji vytvořte samostatný řádek události. Nespoléhejte na to, že ProcessMind události odvodí. Nastavte přesnou hodnotu Activity uvedenou v dotazu, vyplňte MaintenanceWorkOrder, EventTimestamp, SourceSystem, LastDataUpdate a dostupné doporučené atributy. Pro případné prověřování duplicit ponechte identifikátory zdrojových záznamů.
- Odstraňujte pouze totožné zdrojové události, které lze určit pomocí stabilních zdrojových klíčů. Neslučujte samostatné změny stavů, potvrzení, pohyby materiálu, naměřené hodnoty ani doklady o zúčtování, k nimž došlo v různou dobu. Pokud více zdrojových záznamů představuje jednu obchodní událost, popište v zadání extrakce, který zdroj má přednost.
- Ověřte, že všech 14 hodnot aktivit je uvedeno jako samostatné řádky, každý řádek obsahuje ID případu a časové razítko a časová razítka spadají do požadovaného období extrakce. Porovnejte počty se sestavami SAP nebo počty záznamů ve zdrojových tabulkách při použití stejných filtrů.
- Exportujte výsledek jako soubor CSV v kódování UTF-8 nebo v jiném podporovaném formátu záznamu událostí ProcessMind. Použijte jeden řádek na událost, zahrňte povinné sloupce s přesně nastavenými názvy, zachovejte časová razítka ISO 8601, pokud je formát podporuje, a nahrajte soubor nebo nastavte připojení k databázi v ProcessMind. Nastavte MaintenanceWorkOrder jako identifikátor případu, Activity jako sloupec aktivity a EventTimestamp jako sloupec časového razítka.
Konfigurace
- Zdrojové tabulky a mapování: AUFK obsahuje údaje v hlavičce zakázky, AFVC údaje o operacích a JEST údaje o systémových stavech. Pro získání všech 14 aktivit jsou potřeba také QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG, zdroje změnových dokumentů a zdroje controllingových dokumentů. Před spuštěním ověřte přesné názvy polí ve své databázi SAP.
- Povinné výstupní sloupce: Každý řádek události musí obsahovat MaintenanceWorkOrder, Activity, EventTimestamp, SourceSystem a LastDataUpdate.
- Doporučené výstupní sloupce: Pokud jsou dostupné, vyplňte MaintenanceOrderType, MaintenancePriority, EquipmentNumber, FunctionalLocation, MaintenancePlant, ResponsiblePlannerGroup, MainWorkCenter, NotificationNumber, TargetFinishDate, CreatedByUser a SystemStatus.
- Období: Začněte třemi až šesti měsíci. Použijte včetně počátečního data a bez koncového data, abyste předešli duplicitním událostem při postupných bězích extrakce. Při zpětném doplnění historických dat rozdělte extrakci po měsících nebo na jiná období podporovaná databází.
- Filtry: Podle rozsahu sestavy nastavte [Company Code filter], [Order Type filter], [Maintenance Plant filter], [Notification Type filter] a [Document Type filter]. Nepoužívejte filtry, které vyloučí zakázky bez oznámení, operací, komponent, nákupních požadavků, potvrzení, měření nebo dokladů o zúčtování.
- Historie stavů: JEST obvykle obsahuje přiřazení stavů, ale pro historické změny stavů může být potřeba [Your status history table] nebo změnové dokumenty. Nastavte zdroj, který obsahuje časové razítko změny stavu a historii přechodů mezi stavy.
- Historie priorit: Pro změny priorit jsou potřeba [Your order change document table] a [Your change document item table] s příslušným identifikátorem objektu, názvem pole, původní a novou hodnotou a časovým razítkem změny.
- Hodnota zdrojového systému: Nahraďte [Your SAP system identifier] stálým názvem zdrojového systému používaným ve vaší organizaci.
- Poslední aktualizace dat: Nahraďte [Your extraction timestamp] časovým razítkem vytvořeným na začátku nebo na konci běhu extrakce. Pro všechny řádky v daném běhu použijte stejnou hodnotu.
- Výkon: Pokud to prostředí umožňuje, indexujte nebo rozdělte sloupce používané pro spojování a filtrování. Omezte období extrakce, vybírejte pouze potřebné sloupce, zpracovávejte dlouhá období po dávkách a při pomalém přímém spojování napříč schématy připravte mezivýstupy ze zdrojových dat.
- Předpoklady: Potřebujete připojení k databázi, oprávnění pro čtení všech nastavených zdrojových tabulek, přístup k příslušným datům údržby, správy materiálu, controllingu a měření a schválení extrakce provozních dat. Ověřte případná omezení replikace nebo licencování databázové platformy.
Ukázkový dotaz sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_ts,
CAST('[End date and time]' AS TIMESTAMP) AS end_ts,
CAST('[Your SAP system identifier]' AS VARCHAR(100)) AS source_system,
CAST('[Your extraction timestamp]' AS TIMESTAMP) AS last_data_update
),
order_base AS (
SELECT
a.[Order number field] AS MaintenanceWorkOrder,
a.[Order type field] AS MaintenanceOrderType,
a.[Priority field] AS MaintenancePriority,
a.[Equipment field] AS EquipmentNumber,
a.[Functional location field] AS FunctionalLocation,
a.[Maintenance plant field] AS MaintenancePlant,
a.[Planner group field] AS ResponsiblePlannerGroup,
a.[Main work center field] AS MainWorkCenter,
a.[Notification number field] AS NotificationNumber,
a.[Target finish date field] AS TargetFinishDate,
a.[Created by field] AS CreatedByUser,
a.[System status field] AS SystemStatus,
a.[Creation date field] AS OrderCreationDate,
a.[Creation time field] AS OrderCreationTime
FROM AUFK a
WHERE a.[Order number field] IS NOT NULL
AND a.[Company code field] = '[Your company code filter]'
),
base_events AS (
SELECT
o.MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
CAST(q.[Notification creation timestamp field] AS TIMESTAMP) AS EventTimestamp,
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN QMEL q ON q.[Notification number field] = o.NotificationNumber
CROSS JOIN params p
WHERE q.[Notification creation timestamp field] >= p.start_ts
AND q.[Notification creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Created',
CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o CROSS JOIN params p
WHERE CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) >= p.start_ts
AND CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Priority Changed',
CAST(c.[Change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, c.[New priority value field], o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your order change document table] h ON h.[Order object identifier field] = o.MaintenanceWorkOrder
JOIN [Your change document item table] c ON c.[Change document number field] = h.[Change document number field]
CROSS JOIN params p
WHERE c.[Changed field name field] = '[Your priority field name]'
AND CAST(c.[Change timestamp field] AS TIMESTAMP) >= p.start_ts
AND CAST(c.[Change timestamp field] AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Released',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'REL'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'REL'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Material Component Added',
CAST(r.[Reservation creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN RESB r ON r.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE r.[Reservation line creation timestamp field] >= p.start_ts
AND r.[Reservation line creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Purchase Requisition Created',
CAST(e.[Purchase requisition creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN EBAN e ON e.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE e.[Purchase requisition creation timestamp field] >= p.start_ts
AND e.[Purchase requisition creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Goods Issue Posted',
CAST(m.[Material document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN MSEG m ON m.[Order number field] = o.MaintenanceWorkOrder
JOIN MKPF k ON k.[Material document number field] = m.[Material document number field]
AND k.[Material document year field] = m.[Material document year field]
CROSS JOIN params p
WHERE m.[Movement type field] IN ('201', '261')
AND k.[Material document timestamp field] >= p.start_ts
AND k.[Material document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Work Order Scheduled',
CAST(v.[Dispatch status timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFVC v ON v.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE v.[Dispatch status field] = '[Your dispatch status value]'
AND v.[Dispatch status timestamp field] >= p.start_ts
AND v.[Dispatch status timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Operation Confirmed',
CAST(f.[Confirmation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFRU f ON f.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE f.[Confirmation timestamp field] >= p.start_ts
AND f.[Confirmation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Measurement Reading Recorded',
CAST(i.[Measurement document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN IMRG i ON i.[Equipment field] = o.EquipmentNumber
CROSS JOIN params p
WHERE i.[Measurement document timestamp field] >= p.start_ts
AND i.[Measurement document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'TECO'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Reversed',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, s.[Resulting system status field]
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Previous status code field] = 'TECO'
AND s.[Status code field] <> 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Cost Settled',
CAST(c.[Controlling document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your controlling document table] c ON c.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE c.[Controlling document timestamp field] >= p.start_ts
AND c.[Controlling document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Business Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'CLSD'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'CLSD'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
)
SELECT
e.MaintenanceWorkOrder,
e.Activity,
e.EventTimestamp,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaintenanceOrderType,
e.MaintenancePriority,
e.EquipmentNumber,
e.FunctionalLocation,
e.MaintenancePlant,
e.ResponsiblePlannerGroup,
e.MainWorkCenter,
e.NotificationNumber,
e.TargetFinishDate,
e.CreatedByUser,
e.SystemStatus
FROM base_events e
CROSS JOIN params p
WHERE e.MaintenanceWorkOrder IS NOT NULL
AND e.EventTimestamp IS NOT NULL
AND e.EventTimestamp >= p.start_ts
AND e.EventTimestamp < p.end_ts
ORDER BY e.MaintenanceWorkOrder, e.EventTimestamp, e.Activity; Chcete začít?
Pomocí těchto zdrojů začněte mapovat workflow údržby a hledat možnosti, jak snížit náklady. Naše metodika vám pomůže připravit správnou strukturu dat a získat přehled o provozu.
Odhalte úzká místa údržby zařízení v SAP
Zkraťte dobu cyklu údržby o 30 %
Bez platební karty. Nastavení za 5 minut.