Szablon danych dotyczących utrzymania ruchu
Szablon danych dotyczących utrzymania ruchu
- Zalecane atrybuty do zebrania
- Najważniejsze działania konserwacyjne do śledzenia
- Wskazówki techniczne dotyczące ekstrakcji danych z SAP PM
Atrybuty utrzymania ruchu
| Nazwa | Opis | ||
|---|---|---|---|
| Nazwa działania Activity | Konkretne zadanie lub zmiana statusu, która miała miejsce. | ||
| Opis Oznacza etap procesu konserwacji, na przykład „Utworzono zlecenie konserwacyjne”, „Zaksięgowano wydanie materiałów” lub „Potwierdzono operację zlecenia”. Zdarzenia są zwykle ustalane na podstawie tabel zarządzania statusami (JEST) w przypadku zmian statusu albo tabel transakcyjnych, takich jak AFRU dla potwierdzeń i MKPF dla ruchów materiałowych. Ten atrybut określa węzły na mapie procesu. Dlaczego to ważne Określa, co dzieje się w procesie. Jest niezbędny do odkrywania przebiegu procesu i jego wariantów. Skąd pobrać Dane pochodzą z tabel JEST (status), AFRU (potwierdzenia) i QMEL (zgłoszenia) Przykłady Utworzono zlecenie konserwacyjneZwolniono zlecenieZakończono technicznie | |||
| Ostatnia aktualizacja danych LastDataUpdate | Znacznik czasu ostatniej ekstrakcji danych. | ||
| Opis Wskazuje, kiedy dane w modelu process mining zostały ostatnio odświeżone. Analitycy mogą ocenić aktualność wniosków i sprawdzić, czy dane są aktualne na potrzeby dashboardów monitorujących bieżące zaległości lub realizację SLA. Dlaczego to ważne Ma znaczenie dla zarządzania danymi i budowania zaufania do dashboardów. Skąd pobrać Znacznik czasu ETL Przykłady 2023-11-01T12:00:00Z | |||
| System źródłowy SourceSystem | System, z którego pochodzą dane. | ||
| Opis Wskazuje konkretnego klienta lub instancję SAP, na przykład „SAP_PM_PROD”. W środowisku z wieloma systemami ERP ten atrybut pozwala rozróżnić rekordy o identycznych identyfikatorach, które należą do różnych podmiotów prawnych lub środowisk systemowych. Dlaczego to ważne Zapewnia unikalność danych i możliwość śledzenia ich pochodzenia w środowiskach wielosystemowych. Skąd pobrać Konfiguracja systemu / dziennik ekstrakcji Przykłady SAP_ECC_P01SAP_S4H_100 | |||
| Zlecenie robocze konserwacji MaintenanceWorkOrder | Unikalny identyfikator zlecenia roboczego konserwacji. | ||
| Opis Zlecenie robocze konserwacji jest głównym dokumentem w SAP Plant Maintenance (tabela AUFK, pole AUFNR). Łączy zapotrzebowanie na konserwację (zgłoszenie) z zasobami, materiałami i kosztami realizacji. W analizie process mining pełni funkcję identyfikatora sprawy (Case ID), dzięki czemu można odtworzyć cały cykl życia prac konserwacyjnych, od utworzenia zlecenia po jego zakończenie techniczne i biznesowe. Dlaczego to ważne To unikalny klucz łączący wszystkie działania, koszty i znaczniki czasu, który umożliwia wizualizację przebiegu procesu. Skąd pobrać Tabela SAP AUFK, pole AUFNR Przykłady 00004001234540012345000040098765 | |||
| Znacznik czasu zdarzenia EventTimestamp | Dokładna data i godzina wystąpienia działania. | ||
| Opis Rejestruje dokładny moment wystąpienia zdarzenia. W przypadku zmian statusu dane pochodzą z czasu aktualizacji statusu systemowego, a w przypadku operacji z czasu potwierdzenia. Dokładne znaczniki czasu są niezbędne do obliczania czasu cyklu i czasu realizacji oraz wykrywania wąskich gardeł między etapami procesu, takimi jak planowanie i realizacja. Dlaczego to ważne Pozwala prawidłowo uporządkować zdarzenia i obliczyć wszystkie KPI oparte na czasie trwania. Skąd pobrać JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Przykłady 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Główne stanowisko robocze MainWorkCenter | Główne stanowisko robocze lub zespół przypisany do realizacji zlecenia. | ||
| Opis Główne stanowisko robocze (VAPLZ) oznacza grupę techników lub maszyn, które wykonają prace. Ten atrybut jest mapowany na „Zespół” i ma znaczenie przy analizie efektywności realizacji, na przykład średniego czasu naprawy dla poszczególnych ekip. Pomaga odróżnić pracę własnych pracowników od pracy zewnętrznych wykonawców. Dlaczego to ważne Umożliwia analizę wyników na poziomie zasobów. Skąd pobrać Tabela SAP AFKO, pole VAPLZ (lub AUFK-VAPLZ, zależnie od konfiguracji) Przykłady MECH_01ELEC_TEAMEXT_CONT | |||
| Grupa planistów ResponsiblePlannerGroup | Grupa planistów odpowiedzialna za obsługę zlecenia. | ||
| Opis Grupa planistów (INGRP) wskazuje zespół lub dział odpowiedzialny za planowanie prac konserwacyjnych. Jest mapowana na „Dział” i ma znaczenie dla dashboardu wykorzystania zasobów i harmonogramowania, który pomaga ustalić, które zespoły planistyczne tworzą wąskie gardła na etapie przygotowania. Dlaczego to ważne Wskazuje zespół administracyjny odpowiedzialny za planowanie. Skąd pobrać Tabela SAP AUFK, pole INGRP Przykłady M01ELEMEC | |||
| Lokalizacja funkcjonalna FunctionalLocation | Hierarchiczna lokalizacja, w której zainstalowano zasób. | ||
| Opis Wskazuje miejsce w strukturze technicznej, w którym wykonywane są prace konserwacyjne (TPLNR). W przeciwieństwie do urządzenia, które można przenieść, lokalizacja funkcjonalna jest stała. Ten atrybut wspiera dashboard czasu trwania cyklu inspekcji technicznej, umożliwiając porównanie wyników w różnych obszarach zakładu, na przykład w kotłowni i na linii pakującej. Dlaczego to ważne Umożliwia analizę wyników konserwacji według lokalizacji i hierarchii. Skąd pobrać Tabela SAP IFLOT, pole TPLNR (lub AUFK-TPLNR) Przykłady ZAKŁAD1-BUD2-LINIA01US-TX-DAL-01 | |||
| Numer urządzenia EquipmentNumber | Identyfikator konkretnego zasobu fizycznego objętego konserwacją. | ||
| Opis Numer urządzenia (EQUNR) identyfikuje konkretną maszynę lub zasób. Grupując dane według tego pola, analitycy mogą przygotować dashboard kosztów konserwacji i przepustowości zasobów, aby wykryć urządzenia wymagające częstych i kosztownych napraw. Umożliwia to analizę konserwacji ukierunkowanej na niezawodność. Dlaczego to ważne Łączy wyniki procesu z konkretnymi zasobami fizycznymi. Skąd pobrać Tabela SAP AUFK, pole EQUNR Przykłady 10004567POMPA-001HVAC-202 | |||
| Numer zgłoszenia NotificationNumber | Zgłoszenie konserwacyjne, które zainicjowało to zlecenie. | ||
| Opis Numer zgłoszenia (QMNUM) łączy zlecenie robocze z pierwotnym zgłoszeniem. To powiązanie jest niezbędne do obliczenia pełnego czasu realizacji, od otrzymania zgłoszenia konserwacyjnego do zakończenia prac. Bez niego analiza pomija początkowy etap wykrycia i zgłoszenia usterki. Dlaczego to ważne Łączy etap realizacji z etapem zgłoszenia lub wykrycia potrzeby. Skąd pobrać Tabela SAP AUFK, pole QMNUM Przykłady 1000050010000501 | |||
| Planowana data zakończenia TargetFinishDate | Planowana data zakończenia prac konserwacyjnych. | ||
| Opis Ta data (zwykle Basic Finish Date, GLTRP) wyznacza termin realizacji zlecenia. Porównuje się ją z rzeczywistym znacznikiem czasu zakończenia, aby obliczyć KPI „Wskaźnik dotrzymania SLA”. Stanowi punkt odniesienia przy ocenie, czy zlecenie wykonano terminowo. Dlaczego to ważne Punkt odniesienia dla wszystkich obliczeń terminowości dostaw (OTD). Skąd pobrać Tabela SAP AFKO, pole GLTRP Przykłady 2023-12-012023-12-15 | |||
| Priorytet konserwacji MaintenancePriority | Poziom pilności przypisany do zlecenia roboczego. | ||
| Opis Wskazuje priorytet (PRIOK) zadania konserwacyjnego, na przykład „1 - bardzo wysoki”, „2 - wysoki” lub „3 - średni”. To pole jest bezpośrednim źródłem danych dla KPI udziału zleceń awaryjnych. Analiza przebiegu procesu według priorytetu pozwala sprawdzić, czy zlecenia o wysokim priorytecie są rzeczywiście realizowane szybciej niż prace rutynowe. Dlaczego to ważne Pomaga analizować SLA i identyfikować prace awaryjne. Skąd pobrać Tabela SAP AFKO, pole PRIOK (lub AUFK przez widok) Przykłady 1 - awaryjny2 - wysoki3 - średni4 - niski | |||
| Status systemowy SystemStatus | Bieżący status techniczny zlecenia (np. REL, TECO). | ||
| Opis Połączony ciąg znaków lub lista aktywnych statusów systemowych (z JEST) przypisanych obecnie do zlecenia. Typowe wartości to CRTD (utworzone), REL (zwolnione), TECO (zakończone technicznie) i CLSD (zamknięte). Pozwala odróżnić otwarte i zamknięte sprawy w monitorze „Zaległości i prace w toku”. Dlaczego to ważne Podstawowy wskaźnik etapu cyklu życia zlecenia. Skąd pobrać Moduł funkcyjny SAP STATUS_TEXT_EDIT lub tabela JEST Przykłady REL CNFTECOCRTD MACM | |||
| Typ zlecenia konserwacyjnego MaintenanceOrderType | Określa kategorię zlecenia roboczego, na przykład konserwację zapobiegawczą lub naprawczą. | ||
| Opis Typ zlecenia (AUART) w SAP PM określa charakter prac konserwacyjnych. Do często używanych typów należą PM01 (naprawa), PM02 (konserwacja zapobiegawcza) i PM03 (regeneracja). Ten atrybut jest niezbędny w dashboardzie monitorowania wpływu zleceń awaryjnych oraz do podziału wariantów procesu, ponieważ przebieg konserwacji zapobiegawczej znacznie różni się od procesu reaktywnego. Dlaczego to ważne Pozwala rozdzielić analizę prac planowanych i nieplanowanych. Skąd pobrać Tabela SAP AUFK, pole AUART Przykłady PM01PM02PM03 | |||
| Użytkownik, który utworzył zlecenie CreatedByUser | Nazwa użytkownika, który utworzył zlecenie. | ||
| Opis Wskazuje użytkownika (ERNAM), który zainicjował zlecenie. W modelu ogólnym jest mapowany na pole „Użytkownik”. Umożliwia analizę zleceń tworzonych ręcznie i automatycznie oraz audyt działania „Utworzono zlecenie konserwacyjne”. Dlaczego to ważne Umożliwia analizę działań użytkowników i audyt. Skąd pobrać Tabela SAP AUFK, pole ERNAM Przykłady JSMITHBSERVICEDDAVIS | |||
| Zakład odpowiedzialny za konserwację MaintenancePlant | Zakład logistyczny odpowiedzialny za konserwację. | ||
| Opis Zakład (WERKS) to podstawowa jednostka organizacyjna w logistyce. Pozwala rozdzielać dane według lokalizacji fizycznej. Ten atrybut jest niezbędny do porównywania wyników różnych zakładów i jest mapowany na „Jednostkę biznesową”, co umożliwia filtrowanie danych na wysokim poziomie organizacyjnym w dashboardach. Dlaczego to ważne Podstawowy filtr organizacyjny do porównywania wyników zakładów. Skąd pobrać Tabela SAP AUFK, pole WERKS Przykłady 100020003000 | |||
| Czy praca jest awaryjna IsEmergencyWork | Flaga wskazująca, czy zlecenie dotyczy pracy awaryjnej. | ||
| Opis Atrybut logiczny wyliczany na podstawie priorytetu konserwacji. Jeśli priorytet wynosi „1” (lub ma kod przypisany w konfiguracji do sytuacji awaryjnej), flaga przyjmuje wartość prawda. Ułatwia to filtrowanie i obliczanie KPI „Udział zleceń awaryjnych” bez stosowania złożonej logiki w warstwie dashboardu. Dlaczego to ważne Ułatwia filtrowanie danych na potrzeby analizy pilnych napraw. Skąd pobrać Wyliczane na podstawie MaintenancePriority Przykłady truefalse | |||
| Czy wykonano poprawkę IsRework | Flaga wskazująca, czy zlecenie obejmowało poprawki. | ||
| Opis Wyliczany atrybut logiczny wskazujący, czy w procesie wystąpiła pętla. Flaga jest ustawiana, gdy działanie „Wykonano zadanie konserwacyjne” wystąpiło więcej niż raz lub gdy status zmienił się z „Zakończone technicznie” na „W toku”. Atrybut wspiera KPI „Wskaźnik poprawek w utrzymaniu ruchu” i pomaga wykrywać problemy z jakością. Dlaczego to ważne Bezpośrednio wspiera analizę kontroli jakości. Skąd pobrać Wyliczane na podstawie przebiegu procesu Przykłady truefalse | |||
| Łączny koszt rzeczywisty TotalActualCost | Łączny koszt rzeczywisty zaksięgowany na zleceniu. | ||
| Opis Łączne koszty robocizny, materiałów i usług (z tabeli PMCO). Ten atrybut zasila dashboard „Koszty i przepustowość utrzymania ruchu”, który pozwala kierownikom ocenić finansowy wpływ prac konserwacyjnych. Jest niezbędny do porównania opłacalności naprawy i wymiany zasobów. Dlaczego to ważne Uzupełnia dane operacyjne procesu o wymiar finansowy. Skąd pobrać Tabela SAP PMCO (suma wartości typu 04, rzeczywistej) Przykłady 150.002500.500.00 | |||
| Planowana liczba roboczogodzin PlannedLaborHours | Szacowana liczba roboczogodzin dla zlecenia. | ||
| Opis Łączna planowana praca (ARBEI) dla operacji zlecenia. Porównanie tej wartości z rzeczywistym czasem trwania działania pozwala ocenić dokładność planowania konserwacji w dashboardzie „Skuteczność planowania i szacowania”. Dlaczego to ważne Podstawowa miara do analizy dokładności planowania. Skąd pobrać Tabela SAP AFKO (suma planowanej pracy dla operacji) Przykłady 4.08.512.0 | |||
Działania związane z utrzymaniem ruchu
| Działanie | Opis | ||
|---|---|---|---|
| Potwierdzono operację zlecenia | Oznacza zarejestrowanie rzeczywistego czasu pracy technika nad konkretną operacją. Odzwierciedla faktyczne prace wykonane przy zasobie. | ||
| Dlaczego to ważne To główne źródło danych do obliczania średniego czasu naprawy i kosztów pracy. Skąd pobrać Tabela AFRU (potwierdzenia zleceń). Rejestrowanie Rejestrowane po wykonaniu transakcji IW41 Typ zdarzenia explicit | |||
| Ustawiono status zakończenia biznesowego | Oznacza ostateczne zamknięcie administracyjne zlecenia roboczego, po którym nie można już księgować kosztów. Zdarzenie jest rejestrowane przy zmianie statusu na CLSD (zamknięte). | ||
| Dlaczego to ważne Oznacza definitywny koniec cyklu życia zlecenia. Ma znaczenie dla dokładności danych i zgodności dokumentacji. Skąd pobrać Tabela JCDS, status I0046 (CLSD). Rejestrowanie Rejestrowane po zmianie statusu na CLSD w tabeli JCDS Typ zdarzenia explicit | |||
| Ustawiono status zakończenia technicznego | Oznacza fizyczne i techniczne zakończenie prac konserwacyjnych. Zdarzenie jest rejestrowane przy zmianie statusu na TECO (zakończono technicznie). | ||
| Dlaczego to ważne To najważniejszy punkt końcowy analizy operacyjnej. Oznacza przywrócenie zasobu do działania i zakończenie konserwacji. Skąd pobrać Tabela JCDS, status I0045 (TECO). Rejestrowanie Rejestrowane po zmianie statusu na TECO w tabeli JCDS Typ zdarzenia explicit | |||
| Utworzono zlecenie konserwacyjne | Oznacza utworzenie w systemie zlecenia roboczego dotyczącego konserwacji. Zdarzenie jest odczytywane bezpośrednio ze znacznika czasu utworzenia rekordu w tabeli danych podstawowych zlecenia. | ||
| Dlaczego to ważne To główne zdarzenie identyfikujące sprawę. Oznacza przejście od zgłoszenia do planowania i realizacji. Skąd pobrać Tabela AUFK, pola ERDAT (data) i ERFZEIT (godzina). Rejestrowanie Rejestrowane po wykonaniu transakcji IW31 Typ zdarzenia explicit | |||
| Zaksięgowano wydanie materiałów | Rejestruje fizyczne zużycie części zamiennych lub materiałów przypisanych do zlecenia. Zdarzenie jest odczytywane z nagłówków dokumentów materiałowych powiązanych ze zleceniem. | ||
| Dlaczego to ważne Potwierdza dostępność i pobranie części, co bezpośrednio wpływa na analizę czasu oczekiwania na części. Skąd pobrać Tabele MSEG/MKPF, rodzaj ruchu 261 (wydanie materiałów na zlecenie). Rejestrowanie Rejestrowane po wykonaniu transakcji MIGO/MB1A Typ zdarzenia explicit | |||
| Zwolniono zlecenie konserwacyjne | Oznacza zakończenie planowania i zwolnienie zlecenia do realizacji. Zdarzenie jest wykrywane na podstawie zmiany statusu systemowego na REL. | ||
| Dlaczego to ważne Ten etap oddziela planowanie od realizacji i jest niezbędny do pomiaru czasu planowania i przygotowania wyceny. Skąd pobrać Tabela JCDS (dokumenty zmian statusu), status I0002 (REL). Rejestrowanie Rejestrowane po zmianie statusu na REL w tabeli JCDS Typ zdarzenia explicit | |||
| Cofnięto zakończenie techniczne | Rejestruje cofnięcie statusu zakończenia technicznego, co oznacza ponowne otwarcie zlecenia. W modelu procesu powstaje pętla poprawek. | ||
| Dlaczego to ważne To główny wskaźnik KPI odsetka poprawek w konserwacji. Wskazuje przedwczesne zamknięcia lub problemy z jakością. Skąd pobrać Tabela JCDS, zmiana statusu I0045 (TECO) na nieaktywny. Rejestrowanie Rejestrowane po dezaktywacji statusu TECO Typ zdarzenia explicit | |||
| Dodano materiał do zlecenia | Rejestruje dodanie części zamiennych lub materiałów do listy komponentów zlecenia. Zdarzenie jest odczytywane z utworzenia pozycji rezerwacji. | ||
| Dlaczego to ważne Wskazuje początek procesu zaopatrzenia w wymagane części i wspiera dashboard czasu realizacji zamówień na części zamienne. Skąd pobrać Tabela RESB, pole BDTER (data zapotrzebowania) lub znacznik czasu utworzenia. Rejestrowanie Rejestrowane po dodaniu pozycji do tabeli RESB Typ zdarzenia explicit | |||
| Rozliczono koszty zlecenia | Oznacza przeniesienie kosztów zgromadzonych na zleceniu na obiekt kontrolingowy, na przykład centrum kosztów. Zdarzenie jest odczytywane z dokumentu kontrolingowego. | ||
| Dlaczego to ważne Pozwala śledzić finansowe zamknięcie zlecenia i wspiera KPI czasu rozliczenia finansowego. Skąd pobrać Tabela COBK (nagłówek dokumentu obiektu CO), powiązana ze zleceniem. Rejestrowanie Rejestrowane po wykonaniu transakcji rozliczeniowej KO88 Typ zdarzenia explicit | |||
| Utworzono zapotrzebowanie zakupu | Oznacza utworzenie zapotrzebowania na zakup zewnętrzny lub usługi. Łączy wewnętrzne zlecenie konserwacyjne z zewnętrznym łańcuchem dostaw. | ||
| Dlaczego to ważne Zdarzenie jest niezbędne do analizy opóźnień spowodowanych przez zewnętrznych dostawców lub zakup materiałów niedostępnych w magazynie. Skąd pobrać Tabela EBAN, powiązanie przez przypisanie konta z AUFK-AUFNR. Rejestrowanie Rejestrowane przy utworzeniu rekordu w tabeli EBAN Typ zdarzenia explicit | |||
| Utworzono zgłoszenie konserwacyjne | Rejestruje utworzenie zgłoszenia konserwacyjnego, które często inicjuje zlecenie robocze. Zdarzenie jest odczytywane ze znacznika czasu utworzenia rekordu w tabeli QMEL i łączy zgłoszenie z poprzedniego etapu ze zleceniem realizacyjnym. | ||
| Dlaczego to ważne To zdarzenie wyznacza początek całego procesu konserwacji i pozwala obliczyć czas reakcji od wykrycia usterki do utworzenia zlecenia. Skąd pobrać Tabela QMEL, pola ERDAT (data utworzenia) i MZEIT (godzina). Powiązanie ze zleceniem przez QMEL-AUFNR. Rejestrowanie Rejestrowane przy utworzeniu rekordu w tabeli QMEL Typ zdarzenia explicit | |||
| Zaplanowano zlecenie robocze | Oznacza zaplanowanie operacji na określony termin lub dla określonych zasobów. Zdarzenie jest wnioskowane na podstawie przypisania operacjom statusu Dispatch. | ||
| Dlaczego to ważne Pozwala mierzyć efektywność przydziału zasobów i wspiera dashboard wykorzystania zasobów i harmonogramowania. Skąd pobrać Tabela JCDS (dokumenty zmian statusu) dla operacji (typ obiektu OV), status I0009 (DSPT). Rejestrowanie Porównanie pola statusu przed zmianą i po niej Typ zdarzenia inferred | |||
| Zarejestrowano odczyt pomiaru | Rejestruje wprowadzenie dokumentu pomiarowego, na przykład odczytu licznika lub oceny stanu. Często odpowiada zdarzeniu inspekcji technicznej. | ||
| Dlaczego to ważne Zdarzenie jest niezbędne w konserwacji opartej na stanie technicznym oraz do śledzenia czasu trwania cyklu inspekcji technicznej. Skąd pobrać Tabela IMRG (dokument pomiarowy), powiązana z urządzeniem lub lokalizacją funkcjonalną. Rejestrowanie Rejestrowane przy utworzeniu dokumentu pomiarowego Typ zdarzenia explicit | |||
| Zmieniono priorytet konserwacji | Rejestruje zmianę priorytetu zlecenia, na przykład podniesienie go do poziomu awaryjnego. Zdarzenie jest ustalane na podstawie dokumentów zmian powiązanych z danymi podstawowymi zlecenia. | ||
| Dlaczego to ważne Śledzenie zmian priorytetu pomaga wyjaśnić odstępstwa od przebiegu procesu i wspiera dashboard monitorowania wpływu zleceń awaryjnych, wskazując pilne zmiany priorytetu. Skąd pobrać Tabele CDPOS/CDHDR, klasa obiektu AUFTRAG, pole PRIOK. Rejestrowanie Rejestrowane w dokumentach zmian (CDPOS) Typ zdarzenia explicit | |||
Instrukcje ekstrakcji
Kroki
Wybierz interfejs źródła danych: Ustal, jak uzyskasz dostęp do interfejsu SQL SAP S/4HANA. Zwykle służy do tego SAP HANA Studio, ABAP Development Tools (ADT) w Eclipse lub ciąg połączenia DBaaS, jeśli baza HANA jest udostępniona warstwie analitycznej.
Sprawdź dostępność widoków CDS: Upewnij się, że standardowe widoki Core Data Services (CDS) są aktywne w systemie S/4HANA. Potrzebne będą przede wszystkim widoki I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation i I_MeasurementDocument. Do odtworzenia pełnej historii zdarzeń potrzebny jest również dostęp do tabeli historii statusów JCDS oraz tabel dokumentów zmian (CDHDR/CDPOS), ponieważ standardowe widoki CDS często pokazują tylko bieżący stan.
Przygotuj środowisko SQL: Otwórz edytor SQL. Sprawdź, czy użytkownik ma uprawnienia SELECT do widoków DDL SQL (zwykle w schemacie SAPABAP1 lub podobnym) dla wymienionych obiektów.
Uruchom zapytanie ekstrakcyjne: Skopiuj dostarczony skrypt SQL do edytora. Zastąp symbol zastępczy [Your Client Number] identyfikatorem klienta SAP (np. 100). Jeśli dane mają być ograniczone do określonego zakresu dat, zaktualizuj filtry EventTimestamp w klauzulach WHERE.
Przekształć dane: Zapytanie wykonuje większość przekształceń, takich jak konwersja znaczników czasu i mapowanie kodów statusów na czytelne opisy. Jeśli system docelowy tego wymaga, podczas eksportu ustaw format kolumny EventTimestamp na ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Wyeksportuj wyniki: Uruchom zapytanie i wyeksportuj wyniki do pliku CSV lub Parquet. Ustaw kodowanie UTF-8, aby poprawnie zapisać znaki specjalne w nazwach użytkowników i opisach.
Sprawdź mapowanie kolumn: Otwórz próbkę eksportu i upewnij się, że kolumny MaintenanceWorkOrder, Activity i EventTimestamp są wypełnione. Sprawdź, czy kolumna Activity zawiera wymagane wartości, np. Maintenance Order Created i Goods Issue Posted.
Prześlij dane do ProcessMind: Zaimportuj sprawdzony plik płaski do ProcessMind. Zmapuj kolumnę Activity na pole Activity ID, MaintenanceWorkOrder na pole Case ID, a EventTimestamp na pole Timestamp.
Konfiguracja
- Filtr klienta: Systemy SAP obsługują wielu klientów. Zawsze filtruj dane według
MANDTlubClient(np. '100'), aby uniknąć duplikatów i przenikania danych między klientami. - Zakres dat: Zaleca się ograniczenie danych do zleceń konserwacyjnych utworzonych w ciągu ostatnich 6–12 miesięcy, na podstawie
CreationDate. Odczyt pełnej historii zJCDS(statusy) lubCDPOS(dokumenty zmian) bez filtra dat może spowodować przekroczenie limitu czasu zapytania. - Klucz języka: Domyślnie zapytanie używa języka angielskiego ('E'). Jeśli w organizacji opisy są przechowywane w innym języku, zmień filtr języka.
- Dostęp do systemu: Wymagany jest dostęp do schematu ABAP Core Data Services lub bazowych tabel HANA. Dostęp do surowych tabel JCDS i CDHDR jest niezbędny do analizy historycznych zmian statusów, ponieważ widoki CDS często pokazują tylko migawkę bieżącego stanu.
- Typy zleceń: Zapytanie pobiera wszystkie typy zleceń. Jeśli analiza ma obejmować tylko wybrane scenariusze utrzymania ruchu, można filtrować według
MaintenanceOrderType(np. tylko PM01 i PM02).
Przykładowe zapytanie 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 = ' ' Kroki
- Potwierdź, że dostępny jest bezpośredni odczyt tabel AUFK, AFVC, JEST, QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG oraz odpowiednich tabel dokumentów zmian i dokumentów kontrolingowych. Sprawdź dokładne nazwy fizyczne i mapowania pól w bazie SAP, ponieważ dostępność pól i struktura replikowanych tabel zależą od wdrożenia.
- Skonfiguruj połączenie ekstrakcyjne, dane uwierzytelniające, początkową i końcową datę ekstrakcji oraz filtry dotyczące firmy. Do wstępnej walidacji użyj okresu od trzech do sześciu miesięcy. Wydłuż go po pomyślnym sprawdzeniu wydajności i kompletności danych.
- Pobierz atrybuty nagłówka zlecenia z AUFK, atrybuty operacji z AFVC i rekordy statusów z JEST. Łącz powiązane rekordy zlecenia za pomocą numeru zlecenia używanego w schemacie SAP. W wielu wdrożeniach SAP JEST zawiera bieżące statusy, dlatego do uzyskania historycznych znaczników czasu zmian statusów potrzebne jest źródło historii statusów lub dokumentów zmian. Jeśli JEST nie przechowuje historii zmian statusów, skonfiguruj [Your status history table] i pola znaczników czasu.
- Pobierz utworzenie zgłoszeń z QMEL, utworzenie komponentów z RESB, utworzenie zapotrzebowań zakupowych z EBAN, informacje o wydaniach materiałów z MSEG i MKPF, potwierdzenia z AFRU, odczyty pomiarów z IMRG oraz rozliczenia kontrolingowe z [Your controlling document table]. Pobierz zmiany priorytetu z [Your order change document table] i [Your change document item table]. Te źródła są niezbędne, ponieważ same AUFK, AFVC i JEST nie zawierają danych o wszystkich 14 wymaganych działaniach.
- Ujednolić strefę czasową i typ danych wszystkich znaczników czasu ze źródeł. Przekształć pola daty i czasu SAP lub znaczniki czasu z bazy danych na EventTimestamp. Zachowaj precyzję znaczników czasu dostępną w systemie. Zastosuj skonfigurowane okno ekstrakcji do EventTimestamp, a nie tylko do daty utworzenia zlecenia.
- Utwórz osobny wiersz zdarzenia dla każdego wystąpienia w źródle. Nie polegaj na tym, że ProcessMind sam odtworzy zdarzenia. Ustaw dokładną wartość Activity podaną w zapytaniu, wypełnij MaintenanceWorkOrder, EventTimestamp, SourceSystem, LastDataUpdate i dostępne zalecane atrybuty. Zachowaj identyfikatory źródłowe, jeśli mogą pomóc w analizie duplikatów.
- Usuwaj wyłącznie identyczne zdarzenia źródłowe, korzystając ze stabilnych kluczy źródłowych. Nie łącz odrębnych zmian statusu, potwierdzeń, przesunięć materiałowych, odczytów pomiarów ani dokumentów rozliczeniowych, które wystąpiły w różnym czasie. Jeśli kilka rekordów źródłowych opisuje jedno zdarzenie biznesowe, określ w specyfikacji ekstrakcji, które źródło ma pierwszeństwo.
- Sprawdź, czy wszystkie 14 wartości Activity występuje w osobnych wierszach, każdy wiersz zawiera identyfikator sprawy i znacznik czasu, a znaczniki czasu mieszczą się w wymaganym okresie ekstrakcji. Porównaj liczbę rekordów z raportami SAP lub liczbą rekordów w tabelach źródłowych dla tych samych filtrów.
- Wyeksportuj wyniki do pliku CSV w kodowaniu UTF-8 lub innego obsługiwanego przez ProcessMind formatu dziennika zdarzeń. Zapisz jedno zdarzenie w każdym wierszu, uwzględnij wymagane kolumny pod dokładnie skonfigurowanymi nazwami i zachowaj znaczniki czasu ISO 8601, jeśli format na to pozwala. Prześlij plik lub skonfiguruj połączenie z bazą danych w ProcessMind. Ustaw MaintenanceWorkOrder jako identyfikator sprawy, Activity jako kolumnę działania, a EventTimestamp jako kolumnę znacznika czasu.
Konfiguracja
- Tabele źródłowe i mapowania: AUFK zawiera dane nagłówka zlecenia, AFVC dane operacji, a JEST dane statusów systemowych. Do wygenerowania wszystkich 14 działań potrzebne są również QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG, źródła dokumentów zmian i źródła dokumentów kontrolingowych. Przed uruchomieniem sprawdź dokładne nazwy pól w bazie SAP.
- Wymagane kolumny wynikowe: Każdy wiersz zdarzenia musi zawierać MaintenanceWorkOrder, Activity, EventTimestamp, SourceSystem i LastDataUpdate.
- Zalecane kolumny wynikowe: Jeśli dane są dostępne, wypełnij MaintenanceOrderType, MaintenancePriority, EquipmentNumber, FunctionalLocation, MaintenancePlant, ResponsiblePlannerGroup, MainWorkCenter, NotificationNumber, TargetFinishDate, CreatedByUser i SystemStatus.
- Zakres dat: Zacznij od trzech do sześciu miesięcy. Użyj przedziału z włączoną datą początkową i wyłączoną datą końcową, aby uniknąć duplikatów między kolejnymi ekstrakcjami. Przy uzupełnianiu danych historycznych podziel ekstrakcję na miesiące lub inne okresy obsługiwane przez bazę danych.
- Filtry: Skonfiguruj [Company Code filter], [Order Type filter], [Maintenance Plant filter], [Notification Type filter] i [Document Type filter] zgodnie z zakresem raportowania. Nie stosuj filtrów, które wykluczają zlecenia bez zgłoszeń, operacji, komponentów, zapotrzebowań, potwierdzeń, pomiarów lub dokumentów rozliczeniowych.
- Historia statusów: JEST zwykle zawiera przypisania statusów, ale do odtworzenia historycznych zmian może być potrzebna tabela [Your status history table] lub dokumenty zmian. Skonfiguruj źródło zawierające znaczniki czasu zmian statusów i historię przejść między statusami.
- Historia priorytetów: Do pobrania zmian priorytetu potrzebne są [Your order change document table] i [Your change document item table], wraz z odpowiednim identyfikatorem obiektu, nazwą pola, starą i nową wartością oraz znacznikiem czasu zmiany.
- Wartość systemu źródłowego: Zastąp [Your SAP system identifier] stałą nazwą systemu źródłowego używaną w organizacji.
- Ostatnia aktualizacja danych: Zastąp [Your extraction timestamp] znacznikiem czasu wygenerowanym na początku lub końcu ekstrakcji. Użyj tej samej wartości we wszystkich wierszach z danego przebiegu.
- Wydajność: Jeśli to dozwolone, indeksuj lub partycjonuj kolumny używane do łączenia i filtrowania. Ogranicz zakres ekstrakcji, wybieraj tylko wymagane kolumny, przetwarzaj dłuższe okresy partiami i zapisuj pośrednie ekstrakty, jeśli bezpośrednie łączenie schematów działa wolno.
- Wymagania wstępne: Łączność z bazą danych, uprawnienia do odczytu wszystkich skonfigurowanych tabel źródłowych, dostęp do odpowiednich danych Plant Maintenance, Materials Management, Controlling i pomiarów oraz zgoda na ekstrakcję danych operacyjnych. Sprawdź ograniczenia dotyczące replikacji i licencjonowania platformy bazodanowej.
Przykładowe zapytanie 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; Gotowi do rozpoczęcia?
Skorzystaj z tych materiałów, aby rozpocząć mapowanie workflow utrzymania ruchu i znaleźć możliwości ograniczenia kosztów. Nasza struktura danych zapewnia przejrzysty obraz operacji.
Usuń wąskie gardła w utrzymaniu ruchu w SAP
Już teraz skróć czas cyklu utrzymania ruchu o 30 procent
Karta kredytowa nie jest wymagana. Konfiguracja zajmuje 5 minut.