Szablon danych do zarządzania magazynem
Szablon danych do zarządzania magazynem
- Zalecane atrybuty do szczegółowej analizy
- Najważniejsze działania do śledzenia w procesie
- Wskazówki dotyczące ekstrakcji danych z SAP EWM
Atrybuty zarządzania magazynem
| Nazwa | Opis | ||
|---|---|---|---|
| Warehouse Order WarehouseOrder | Unikalny identyfikator zlecenia magazynowego, które grupuje zadania do wykonania przez pracownika lub inny zasób. | ||
| Opis Warehouse Order to główny identyfikator case, który pozwala śledzić cały proces obsługi towaru w magazynie. Oznacza pakiet pracy, na przykład kompletację produktów do dostawy wychodzącej lub odkładanie przyjętego towaru na miejsce składowania. Każdy Warehouse Order obejmuje co najmniej jedno zadanie magazynowe. Analiza według Warehouse Order daje pełny obraz cyklu życia konkretnego pakietu pracy. Pomaga wykrywać wąskie gardła, mierzyć całkowity czas realizacji od utworzenia do zakończenia oraz poznać pełny przebieg działań związanych z pojedynczym zleceniem logistycznym. Dlaczego to ważne To główny identyfikator łączący wszystkie powiązane działania magazynowe. Umożliwia analizę całego procesu i pomiar czasu realizacji pojedynczego zadania. Skąd pobrać Ten identyfikator znajduje się zwykle w tabeli nagłówkowej zleceń magazynowych SAP EWM, na przykład /SCWM/WHO. Przykłady 200000145200000146200000147 | |||
| Czas rozpoczęcia EventTime | Znacznik czasu wskazujący, kiedy rozpoczęło się działanie lub wystąpiło zdarzenie. | ||
| Opis Ten atrybut zapisuje dokładną datę i godzinę wykonania konkretnego działania magazynowego. Służy przede wszystkim do ustalania kolejności zdarzeń i obliczania czasu między nimi. W process mining czas rozpoczęcia pozwala ustalić chronologiczną kolejność zdarzeń dla każdego case. Na jego podstawie oblicza się całkowity czas realizacji, czas oczekiwania i czas przetwarzania. Wskaźniki te są niezbędne do analizy wydajności, wykrywania wąskich gardeł i monitorowania SLA. Dlaczego to ważne Ten znacznik czasu pozwala ustalić chronologiczną kolejność zdarzeń i obliczyć wszystkie wskaźniki wydajności oparte na czasie, takie jak czas realizacji i czas trwania. Skąd pobrać Zwykle znajduje się w tabelach zdarzeń lub potwierdzeń, takich jak /SCWM/ORDIM_C (np. w polu CONF_TIMESTAMP), albo w dziennikach zmian statusu powiązanych ze zleceniami i zadaniami magazynowymi. Przykłady 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Nazwa działania ActivityName | Nazwa konkretnego działania lub zdarzenia w zarządzaniu magazynem, na przykład „Utworzono zadanie kompletacji” lub „Zaksięgowano wydanie towaru”. | ||
| Opis Ten atrybut opisuje pojedynczy krok lub zdarzenie w procesie zarządzania magazynem. Działania te składają się na mapę procesu i obejmują takie czynności jak tworzenie i potwierdzanie zadań, pakowanie, załadunek oraz przemieszczanie towarów. Analiza kolejności i częstotliwości tych działań jest podstawą process mining. Pozwala zobrazować przebieg procesu, wykryć typowe i rzadkie ścieżki, znaleźć odstępstwa od standardowej procedury oraz wskazać kroki powodujące opóźnienia lub konieczność poprawek. Dlaczego to ważne Określa kroki procesu i stanowi podstawę mapy procesu. Umożliwia analizę przebiegu procesu, odstępstw i wąskich gardeł. Skąd pobrać Dane można uzyskać ze zmian statusu, komunikatów o zdarzeniach lub dzienników transakcji dotyczących zleceń i zadań magazynowych w tabelach takich jak /SCWM/ORDIM_C (potwierdzenia). Można też interpretować pola statusu w tabelach /SCWM/WHO i /SCWM/ORDIM_O. Przykłady Potwierdzono zadanie kompletacjiUtworzono zadanie odkładania towaruZaksięgowano przyjęcie towaruZakończono Warehouse Order | |||
| Ostatnia aktualizacja danych LastDataUpdate | Znacznik czasu wskazujący, kiedy ostatnio odświeżono dane tego rekordu z systemu źródłowego. | ||
| Opis Ten atrybut zapisuje czas ostatniego pobrania danych z systemu źródłowego. Informuje, jak aktualne są analizowane dane. W każdej analizie lub na dashboardzie znajomość aktualności danych pomaga podejmować świadome decyzje. Ten znacznik czasu pozwala ustalić, czy wyświetlane są informacje bieżące, czy migawka z określonego momentu, i odpowiednio ocenić ich aktualność. Dlaczego to ważne Informuje o aktualności danych, dzięki czemu można ocenić, na ile bieżąca jest analiza procesu. Skąd pobrać To pole metadanych jest zwykle generowane i dodawane podczas ekstrakcji danych (ETL). Zawiera znacznik czasu załadowania danych. Przykłady 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| System źródłowy SourceSystem | Określa system, z którego pobrano dane, na przykład produkcyjną instancję SAP EWM. | ||
| Opis Ten atrybut wskazuje system, w którym powstały dane dotyczące zarządzania magazynem. W organizacji korzystającej z wielu systemów oznaczenie źródła danych jest niezbędne do zapewnienia identyfikowalności i właściwego kontekstu. W analizie pomaga rozróżniać procesy obejmujące kilka systemów oraz porównywać procesy z różnych instancji, na przykład używanych w poszczególnych regionach. Zapewnia też przejrzystość i możliwość audytu pochodzenia danych. Dlaczego to ważne Zapewnia identyfikowalność i kontekst, szczególnie w środowiskach z wieloma instancjami SAP lub zintegrowanymi systemami. Ułatwia też weryfikację pochodzenia danych. Skąd pobrać Zwykle jest to stała wartość dodawana podczas ekstrakcji, transformacji i ładowania danych (ETL), która wskazuje konkretną instancję SAP S/4HANA lub EWM. Przykłady SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| Czas zakończenia EventEndTime | Znacznik czasu wskazujący, kiedy zakończyło się działanie lub wystąpiło zdarzenie. | ||
| Opis Ten atrybut zapisuje datę i godzinę zakończenia konkretnego działania magazynowego. W przypadku zdarzeń punktowych często jest taki sam jak czas rozpoczęcia, ale może się różnić dla działań o mierzalnym czasie trwania, takich jak pakowanie lub załadunek. Osobny czas zakończenia pozwala dokładnie obliczyć czas realizacji poszczególnych działań. Jest to ważne na dashboardach wydajności, które pokazują czas trwania konkretnych etapów, na przykład efektywność kompletacji i pakowania. Dzięki temu można ustalić, które zadania zajmują najwięcej czasu. Dlaczego to ważne Pozwala dokładnie obliczyć czas trwania poszczególnych działań, co pomaga wykryć czasochłonne etapy i zadania wymagające dużych nakładów zasobów. Skąd pobrać W przypadku zdarzeń punktowych często jest taki sam jak znacznik czasu rozpoczęcia. Dla zadań trwających dłużej może być zapisany w osobnym polu tabeli, takiej jak /SCWM/ORDIM_C, albo ustalony na podstawie późniejszej zmiany statusu. Przykłady 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| Identyfikator użytkownika User | Identyfikator pracownika magazynu lub użytkownika, który potwierdził albo wykonał działanie. | ||
| Opis Ten atrybut zawiera identyfikator użytkownika odpowiedzialnego za wykonanie zadania magazynowego. Może to być osoba, która potwierdziła kompletację, pracownik pakujący towar na stanowisku lub operator wózka widłowego potwierdzający odłożenie towaru. Dane te są niezbędne na dashboardzie wykorzystania zasobów i sprzętu. Umożliwiają analizę wyników poszczególnych osób i zespołów, pomagają określić potrzeby szkoleniowe oraz ułatwiają równomierne rozłożenie pracy wśród personelu magazynu. Dlaczego to ważne Przypisuje pracę konkretnej osobie, umożliwiając analizę wyników użytkowników i zespołów oraz wspierając zarządzanie zasobami i równoważenie obciążenia pracą. Skąd pobrać Zwykle znajduje się w danych potwierdzeń zadania magazynowego, na przykład w polu UNAME tabeli /SCWM/ORDIM_C. Przykłady JSMITHARODRIGUEZOPERATOR_05 | |||
| Numer materiału MaterialNumber | Unikalny identyfikator produktu lub materiału obsługiwanego w ramach zadania magazynowego. | ||
| Opis Ten atrybut wskazuje materiał, który jest przemieszczany, kompletowany, pakowany lub przyjmowany. To ważny wymiar analizy wyników pracy magazynu według cech produktów. Analiza według numeru materiału pomaga ustalić, które produkty najdłużej czekają na odłożenie na miejsce składowania, najczęściej powodują błędy kompletacji lub wymagają kontroli jakości. Jest to niezbędne na dashboardach dotyczących efektywności przyjęcia i odkładania towaru oraz czasu kontroli jakości. Dlaczego to ważne Pozwala filtrować i segmentować dane procesu według produktu, co pomaga wykrywać problemy związane z obsługą, składowaniem lub kontrolą jakości konkretnych produktów. Skąd pobrać Informacje te są zwykle dostępne w tabelach zadań magazynowych, takich jak /SCWM/ORDIM_O, i powiązane z danymi podstawowymi materiału. Przykłady FIN-1001RAW-2050SFIN-300-A | |||
| Priorytet Priority | Poziom pilności zlecenia magazynowego, na przykład wysoki, średni lub niski. | ||
| Opis Ten atrybut klasyfikuje zlecenia magazynowe według ich znaczenia dla firmy lub pilności. Zlecenia o wysokim priorytecie mogą dotyczyć na przykład wysyłek ekspresowych lub dostaw niezbędnych do utrzymania produkcji, dlatego wymagają szybszej obsługi. Priorytet jest ważnym wymiarem w dashboardzie i KPI „Terminowość realizacji zleceń priorytetowych”. Pozwala filtrować i dzielić wyniki, aby sprawdzić, czy najpilniejsze zlecenia są realizowane w wymaganym czasie, zgodnie z celami firmy. Dlaczego to ważne Pozwala skupić analizę i monitoring na pilnych zleceniach oraz sprawdzić, czy spełniają wymagany poziom obsługi. Ma to bezpośredni wpływ na zadowolenie klientów. Skąd pobrać Priorytet można ustawić w powiązanym dokumencie dostawy, a następnie przenieść do zlecenia magazynowego. Informacja może znajdować się w tabelach takich jak /SCWM/WHO. Przykłady WysokiŚredniNiski | |||
| Status Warehouse Order WarehouseOrderStatus | Bieżący lub końcowy status zlecenia magazynowego, na przykład „Completed” lub „Canceled”. | ||
| Opis Ten atrybut określa końcowy wynik zlecenia magazynowego. Informacja, czy zlecenie zostało zrealizowane, czy anulowane, pozwala ocenić skuteczność procesu i ustalić przyczyny braku realizacji. To ważny filtr w wielu analizach. Na przykład przy obliczaniu całkowitego czasu realizacji zlecenia magazynowego analizuje się zwykle tylko zlecenia zakończone. Atrybut pomaga też sprawdzić, jak często zlecenia są anulowane i z jakich powodów. Dlaczego to ważne Określa wynik sprawy i pozwala odfiltrować zlecenia zakończone lub anulowane. Jest to niezbędne do rzetelnej analizy czasu realizacji i przepustowości. Skąd pobrać Pole statusu znajduje się zwykle w tabeli nagłówków zleceń magazynowych /SCWM/WHO. Przykłady ZakończoneW tokuAnulowane | |||
| Typ Warehouse Order WarehouseOrderType | Określa cel zlecenia magazynowego, na przykład odkładanie towaru, kompletację lub uzupełnianie zapasów. | ||
| Opis Typ Warehouse Order klasyfikuje zlecenia według ich funkcji logistycznej. To ważne rozróżnienie, ponieważ różne typy zleceń przebiegają innymi ścieżkami i podlegają innym oczekiwaniom dotyczącym wyników. W analizie ten atrybut służy przede wszystkim do filtrowania i porównywania danych. Na przykład dashboard przepustowości i wolumenu zleceń magazynowych wykorzystuje go do porównania procesów przychodzących (odkładanie towaru) z wychodzącymi (kompletacja), co daje bardziej miarodajny obraz operacji magazynowych. Dlaczego to ważne Pozwala podzielić analizę według kategorii procesu, na przykład przychodzącego i wychodzącego, oraz porównywać dane i wnioski w odpowiednim kontekście. Skąd pobrać Typ określa się na podstawie typu procesu magazynowego, który zwykle znajduje się w tabeli nagłówkowej Warehouse Order, /SCWM/WHO. Przykłady PICKPUTWREPLSTGE | |||
| Całkowity czas realizacji EndToEndCycleTime | Łączny czas od utworzenia zlecenia magazynowego do jego zakończenia. | ||
| Opis Ten KPI mierzy cały czas trwania zlecenia magazynowego, od jego utworzenia do zakończenia. Jest ogólnym wskaźnikiem sprawności i tempa pracy magazynu. Miara ta stanowi podstawę dashboardu „Całkowity czas realizacji zlecenia magazynowego”. Śledzenie KPI w czasie i podział wyników według takich wymiarów jak typ zlecenia lub materiał pomagają wykrywać powtarzające się nieefektywności i oceniać wpływ zmian w procesie na pracę magazynu. Dlaczego to ważne To podstawowy KPI do oceny ogólnej sprawności procesu magazynowego i wyników operacyjnych. Skąd pobrać Obliczany dla każdej sprawy przez odjęcie znacznika czasu pierwszego zdarzenia („Utworzono zlecenie magazynowe”) od znacznika czasu ostatniego zdarzenia („Zakończono zlecenie magazynowe”). Przykłady 8640017280043200 | |||
| Ilość rzeczywista ActualQuantity | Rzeczywista ilość materiału potwierdzona przez użytkownika dla zadania magazynowego. | ||
| Opis Ten atrybut określa ilość faktycznie obsłużoną i potwierdzoną przez pracownika magazynu. Może to być ilość pobrana z miejsca składowania, odłożona na miejsce lub policzona podczas przyjęcia towaru. Porównanie ilości rzeczywistej z planowaną jest podstawą „Analizy rozbieżności w zapasach”. Różnica między tymi wartościami wskazuje na wyjątek w procesie, który wymaga sprawdzenia. To bezpośrednia miara dokładności operacji i ważna dana przy obliczaniu KPI „Wskaźnik dokładności zapasów” oraz „Wskaźnik błędów kompletacji”. Dlaczego to ważne To rzeczywista ilość obsłużonego materiału. Porównanie jej z ilością planowaną pozwala bezpośrednio ocenić dokładność operacji i wykryć błędy. Skąd pobrać Dane można znaleźć w potwierdzeniach zadań magazynowych, na przykład w tabeli /SCWM/ORDIM_C, często w polu takim jak NDIFF (ilość różnicy) lub wyliczyć na podstawie potwierdzonych ilości. Przykłady 10049250 | |||
| Miejsce składowania StorageLocation | Konkretne miejsce w magazynie, na przykład gniazdo, z którego towary są pobierane lub do którego są przemieszczane. | ||
| Opis Ten atrybut wskazuje fizyczne miejsce związane z zadaniem magazynowym, na przykład gniazdo źródłowe przy kompletacji lub docelowe przy odkładaniu towaru. Może określać zarówno ogólną strefę, jak i dokładne położenie na regale. Analiza według miejsc składowania pozwala wykryć zależności operacyjne, na przykład wskazać strefy o wysokiej liczbie pobrań lub miejsca, w których często występują opóźnienia i błędy. Można ją też wykorzystać do analizy zgodności z trasą kompletacji i sprawdzić, jak pracownicy przemieszczają się po magazynie. Dlaczego to ważne Pokazuje, gdzie w magazynie odbywają się operacje, co pozwala analizować sprawność przemieszczania, dostępność gniazd i optymalizować trasy kompletacji. Skąd pobrać Informacje te znajdują się zwykle w tabelach zadań magazynowych, takich jak /SCWM/ORDIM_O, w polach dotyczących gniazda źródłowego (VLPLA) i docelowego (NLPLA). Przykłady 01-02-03STACJA-PAKOWANIA-01STREFA-WYDANIA-A | |||
| Planowana godzina odjazdu PlannedDepartureTime | Planowana godzina wyjazdu przesyłki z magazynu. | ||
| Opis Ten atrybut określa docelową godzinę wysyłki po zakończeniu kompletacji, pakowania i załadunku. Stanowi punkt odniesienia przy ocenie terminowości ostatniego etapu procesu wysyłki. Znacznik czasu jest potrzebny w dashboardzie „Terminowość wysyłki”. Porównanie faktycznej godziny wysyłki z planowaną pozwala wykryć opóźnienia związane z załadunkiem, koordynacją przewoźnika lub dokumentacją. Dostarcza też informacji o sprawności planowania logistyki i transportu. Dlaczego to ważne Stanowi punkt odniesienia przy ocenie terminowości wysyłek, co pomaga planować logistykę i dotrzymywać harmonogramów przewoźników. Skąd pobrać Informacje te znajdują się zwykle w dokumencie transportowym lub dokumencie przesyłki powiązanym ze zleceniami magazynowymi. Więcej informacji można znaleźć w dokumentacji SAP Extended Warehouse Management. Przykłady 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Planowana ilość PlannedQuantity | Oczekiwana ilość materiału dla danego zadania magazynowego. | ||
| Opis Ten atrybut określa docelową ilość materiału, którą należy przemieścić, pobrać lub przyjąć zgodnie z instrukcją zadania magazynowego. Stanowi punkt odniesienia przy porównaniu z ilością faktycznie obsłużoną. Planowana ilość jest potrzebna w dashboardzie „Analiza rozbieżności w zapasach” oraz przy obliczaniu KPI „Wskaźnik dokładności zapasów”. Porównanie jej z ilością rzeczywistą pozwala wykryć rozbieżności, które mogą wynikać z błędów kompletacji, przyjęcia towaru lub wprowadzania danych. Dzięki temu można poprawić dokładność ewidencji zapasów. Dlaczego to ważne Stanowi punkt odniesienia przy obliczaniu dokładności zapasów i wykrywaniu rozbieżności, co pomaga utrzymać prawidłowe stany magazynowe. Skąd pobrać Dane można znaleźć w tabelach zadań magazynowych, na przykład /SCWM/ORDIM_O, często w polu takim jak NISTA (ilość docelowa). Przykłady 10050250 | |||
| Różnica ilościowa QuantityVariance | Różnica między ilością planowaną a ilością faktycznie potwierdzoną dla zadania. | ||
| Opis Ta wyliczana miara określa rozbieżność wykrytą podczas zadania magazynowego. Wartość różna od zera oznacza, że stan faktyczny nie zgadza się z danymi w systemie. Może to wskazywać na błąd kompletacji, pomyłkę przy przyjęciu towaru lub uszkodzenie produktu. Atrybut ten wspiera dashboard „Analiza rozbieżności w zapasach”, pokazując skalę błędów. Analiza częstotliwości i wielkości różnic pomaga wykrywać powtarzające się problemy w zarządzaniu zapasami i realizacji operacji, a następnie poprawiać dokładność. Dlaczego to ważne Bezpośrednio pokazuje niezgodności w zapasach i operacjach, ułatwiając wykrywanie i analizę skali rozbieżności. Skąd pobrać Obliczana dla każdego odpowiedniego zadania przez odjęcie PlannedQuantity od ActualQuantity. Przykłady 0-15 | |||
| Używany sprzęt EquipmentUsed | Identyfikator sprzętu użytego do wykonania zadania magazynowego, na przykład wózka widłowego lub wózka paletowego. | ||
| Opis Ten atrybut określa sprzęt do transportu materiałów przypisany do zadania magazynowego lub użyty przy jego realizacji. Może to być konkretny wózek widłowy, autonomiczny pojazd transportowy (AGV) albo określony typ wózka. Dane te stanowią podstawę dashboardu „Wykorzystanie zasobów i sprzętu” oraz KPI „Wskaźnik wykorzystania sprzętu”. Śledzenie sprzętu używanego do poszczególnych zadań i czasu jego pracy pozwala analizować wykorzystanie, planować konserwację oraz podejmować decyzje dotyczące wielkości i składu floty. Dlaczego to ważne Pozwala analizować wykorzystanie i sprawność sprzętu, usprawniać zarządzanie flotą oraz wykrywać ograniczenia zasobów. Skąd pobrać Jeśli w SAP EWM skonfigurowano zarządzanie zasobami, informacje te mogą być zapisane w szczegółach zadania lub zlecenia magazynowego. Więcej informacji można znaleźć w dokumentacji SAP Extended Warehouse Management. Przykłady WÓZEK-WIDŁOWY-07AGV-02WÓZEK-15 | |||
| Warehouse Task WarehouseTask | Unikalny identyfikator pojedynczego zadania magazynowego, które jest częścią Warehouse Order. | ||
| Opis Warehouse Task to polecenie wykonania konkretnego przemieszczenia towaru, na przykład przeniesienia produktu z miejsca składowania na stanowisko pakowania. Warehouse Order grupuje co najmniej jedno takie zadanie. Analiza na poziomie zadań daje bardziej szczegółowy obraz operacji magazynowych. Pomaga ocenić pracę zasobów przy konkretnych przemieszczeniach, wykryć trudno dostępne miejsca składowania oraz przeanalizować efektywność poszczególnych działań związanych z kompletacją lub odkładaniem towaru. Dlaczego to ważne Zapewnia szczegółowe dane do analizy pojedynczych przemieszczeń i kroków w ramach większego zlecenia magazynowego. Skąd pobrać Dane znajdują się w tabelach zadań magazynowych, takich jak /SCWM/ORDIM_O (dane zadań) i /SCWM/ORDIM_C (dane potwierdzeń). Przykłady 300000451300000452300000453 | |||
| Wymagana data zakończenia RequestedCompletionDate | Data, do której należy zakończyć zlecenie magazynowe o wysokim priorytecie. | ||
| Opis Ten atrybut określa uzgodniony poziom obsługi (SLA) lub docelową datę zakończenia zlecenia magazynowego. Jest to termin, z którym porównuje się faktyczny czas realizacji, aby ustalić, czy zlecenie zakończono na czas. Data ta jest potrzebna do obliczania KPI „Wskaźnik terminowej realizacji zleceń priorytetowych”. Porównanie faktycznego znacznika czasu zakończenia z wymaganą datą pozwala ocenić dotrzymanie poziomu obsługi i wskazać zlecenia zagrożone opóźnieniem lub już opóźnione. Dlaczego to ważne Określa SLA dla zlecenia i stanowi punkt odniesienia przy ocenie terminowości realizacji, szczególnie w przypadku pilnych pozycji. Skąd pobrać Data ta często wynika z planowanej daty wydania towaru lub daty dostawy w zleceniu dostawy wychodzącej, które uruchomiło zlecenie magazynowe. Więcej informacji można znaleźć w dokumentacji SAP Extended Warehouse Management. Przykłady 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Zrealizowano na czas IsOnTime | Wartość logiczna wskazująca, czy zlecenie magazynowe zakończono najpóźniej w wymaganym terminie. | ||
| Opis Ta flaga w prosty, jednoznaczny sposób pokazuje, czy dotrzymano SLA. Określa, czy ostatnie zdarzenie zlecenia magazynowego wystąpiło w wymaganej dacie zakończenia lub wcześniej. Atrybut ten jest potrzebny w dashboardzie „Terminowość realizacji zleceń priorytetowych”. Ułatwia tworzenie KPI i wizualizacji, ponieważ pozwala szybko policzyć i odfiltrować zlecenia zrealizowane na czas oraz opóźnione. Dzięki temu można ocenić wyniki względem celów obsługi bez skomplikowanych obliczeń dat w warstwie analitycznej. Dlaczego to ważne Ułatwia analizę realizacji SLA, pokazując dla każdego zlecenia, czy zostało wykonane na czas, czy z opóźnieniem. Skąd pobrać To atrybut wyliczany. Logika porównuje znacznik czasu zdarzenia „Zakończono zlecenie magazynowe” z atrybutem „RequestedCompletionDate”. Przykłady truefalse | |||
Działania w procesie zarządzania magazynem
| Działanie | Opis | ||
|---|---|---|---|
| Potwierdzono zadanie kompletacji | Pracownik magazynu potwierdza wykonanie Warehouse Task dotyczącego kompletacji, czyli fizyczne pobranie towaru z miejsca składowania. Zwykle robi to za pomocą skanera RF. | ||
| Dlaczego to ważne To ważny etap realizacji zamówienia, który bezpośrednio wpływa na czas od złożenia zamówienia do wysyłki. Analiza tego zdarzenia pomaga mierzyć wydajność pracowników kompletujących zamówienia i wykrywać wąskie gardła w kompletacji. Skąd pobrać Dane pochodzą ze znacznika czasu potwierdzenia (pole CONFIRMED_AT) w tabeli Warehouse Task, /SCWM/WT. Status zadania (STAT) zmienia się na „Confirmed”. Rejestrowanie Użyj znacznika czasu potwierdzenia z tabeli /SCWM/WT dla zadań kompletacji powiązanych z Warehouse Order. Typ zdarzenia explicit | |||
| Potwierdzono zadanie odkładania towaru | Pracownik magazynu potwierdza wykonanie Warehouse Task dotyczącego odkładania towaru, czyli fizyczne umieszczenie towaru w wyznaczonym miejscu składowania. Potwierdzenie aktualizuje lokalizację zapasów w czasie rzeczywistym. | ||
| Dlaczego to ważne To ważny etap procesu przychodzącego, który potwierdza dostępność zapasów do kompletacji. Opóźnienia bezpośrednio wpływają na KPI czasu od przyjęcia towaru do odłożenia na miejsce składowania. Skąd pobrać Dane pochodzą ze znacznika czasu potwierdzenia (pole CONFIRMED_AT) w tabeli Warehouse Task, /SCWM/WT. Status zadania (STAT) zmienia się również na „Confirmed”. Rejestrowanie Użyj znacznika czasu potwierdzenia z tabeli /SCWM/WT dla zadań odkładania towaru powiązanych z Warehouse Order. Typ zdarzenia explicit | |||
| Utworzono Warehouse Order | To zdarzenie oznacza utworzenie Warehouse Order (WO), czyli pakietu pracy obejmującego kilka zadań magazynowych. System tworzy WO, aby grupować i porządkować pracę personelu magazynu według takich kryteriów jak obszar operacyjny, kolejka lub produkt. | ||
| Dlaczego to ważne To główne zdarzenie rozpoczynające proces realizacji zadań magazynowych. Analiza czasu od utworzenia zlecenia do pierwszego działania pomaga wykryć opóźnienia w przydzielaniu pracy i zasobów. Skąd pobrać Zdarzenie jest rejestrowane na podstawie znacznika czasu utworzenia (pole CREATED_AT) w tabeli nagłówkowej Warehouse Order, /SCWM/WHO. Rejestrowanie Pobierz znacznik czasu utworzenia z tabeli /SCWM/WHO dla każdego numeru Warehouse Order (WHO). Typ zdarzenia explicit | |||
| Zakończono pakowanie | To zdarzenie oznacza, że wszystkie produkty w przesyłce zostały zapakowane do jednostki logistycznej, która jest teraz zamknięta i oznakowana. Towar jest gotowy do kolejnego etapu, na przykład odstawienia do strefy wysyłki lub załadunku. | ||
| Dlaczego to ważne To zdarzenie kończy etap pakowania. Jest on warunkiem rozpoczęcia przygotowania do wysyłki i załadunku, dlatego opóźnienia bezpośrednio wydłużają całkowity czas realizacji oraz czas pakowania i przygotowania do wysyłki. Skąd pobrać Zdarzenie można zarejestrować, gdy status jednostki logistycznej (HU) zmieni się na „Closed” lub po potwierdzeniu ostatniego zadania magazynowego związanego z pakowaniem dla WO. Informacje o statusie HU znajdują się w tabeli /SCWM/HUHDR. Rejestrowanie Ustal znacznik czasu zamknięcia lub zakończenia ostatniej jednostki logistycznej wysyłki powiązanej ze zleceniem. Typ zdarzenia inferred | |||
| Zakończono Warehouse Order | Status Warehouse Order zmienia się na „Completed” po potwierdzeniu wszystkich powiązanych zadań magazynowych. Z punktu widzenia realizacji oznacza to zamknięcie pakietu pracy. | ||
| Dlaczego to ważne To główne zdarzenie oznaczające pomyślne zakończenie procesu. Jest niezbędne do obliczenia całkowitego czasu realizacji zadań magazynowych i pomiaru ogólnej przepustowości. Skąd pobrać Zdarzenie można zarejestrować, śledząc zmianę pola statusu (STAT) na „Completed” w tabeli nagłówkowej Warehouse Order, /SCWM/WHO. Można użyć dziennika zmian tej tabeli (DBTABLOG) lub dedykowanego pola znacznika czasu. Rejestrowanie Ustal znacznik czasu, w którym status w /SCWM/WHO zmienia się na „C” (Completed). Typ zdarzenia inferred | |||
| Zaksięgowano wydanie towaru | To ostatni etap logistyczny i finansowy w systemie, który formalnie usuwa towar ze stanów magazynowych. Oznacza przeniesienie prawa własności i oficjalne wysłanie przesyłki. | ||
| Dlaczego to ważne To ważny punkt końcowy procesu wychodzącego, który uruchamia fakturowanie i aktualizację zapasów. Jest też istotny przy pomiarze terminowości wysyłek oraz KPI czasu załadunku i wysyłki. Skąd pobrać Zdarzenie można wywnioskować z zaksięgowania dokumentu dostawy wychodzącej powiązanego ze zleceniem magazynowym. Sprawdź przepływ dokumentów lub pola statusu, np. DGI_STAT, w tabeli /SCDL/DB_PROCH_O. Rejestrowanie Ustal znacznik czasu, w którym status wydania towaru dla powiązanej dostawy wychodzącej zmienia się na „Completed”. Typ zdarzenia explicit | |||
| Anulowano Warehouse Order | Warehouse Order zostaje anulowany przed ukończeniem wszystkich zadań, co uniemożliwia dalszą realizację. Może się tak stać z powodu braku zapasów, zmian w zamówieniu klienta lub innych wyjątkowych sytuacji. | ||
| Dlaczego to ważne To ścieżka błędu lub wyjątku. Analiza częstotliwości i przyczyn anulowania pomaga wykryć problemy na wcześniejszych etapach planowania, kontroli stanów magazynowych lub zarządzania zamówieniami. Skąd pobrać Zdarzenie można zarejestrować, śledząc zmianę pola statusu (STAT) na „Canceled” w tabeli nagłówkowej Warehouse Order, /SCWM/WHO. Rejestrowanie Ustal znacznik czasu, w którym status w /SCWM/WHO zmienia się na wartość oznaczającą anulowanie. Typ zdarzenia inferred | |||
| Potwierdzono zadanie odstawienia do strefy wysyłki | Pracownik magazynu potwierdza przeniesienie zapakowanej jednostki logistycznej ze stanowiska pakowania lub strefy konsolidacji do wyznaczonej strefy wysyłkowej. Towar jest teraz gotowy do załadunku. | ||
| Dlaczego to ważne To przejście od operacji wewnętrznych do logistyki wychodzącej. Opóźnienia w przygotowaniu towaru do wysyłki mogą powodować chaos przy rampach i sprawić, że przewoźnik nie odbierze towaru o czasie. Skąd pobrać Dane pochodzą ze znacznika czasu potwierdzenia (pole CONFIRMED_AT) Warehouse Task (/SCWM/WT), którego typ procesu oznacza przemieszczenie do strefy wysyłkowej. Rejestrowanie Ustal znacznik czasu potwierdzenia zadania magazynowego dotyczącego odstawienia do strefy wysyłkowej, powiązanego z jednostką logistyczną lub dostawą. Typ zdarzenia explicit | |||
| Rozpoczęto pakowanie | Oznacza rozpoczęcie pakowania, podczas którego skompletowane produkty są łączone i umieszczane w opakowaniach wysyłkowych lub jednostkach logistycznych. Często jest to pierwszy etap pracy w stacji pakowania. | ||
| Dlaczego to ważne To początek etapu usług dodatkowych. Pomiar czasu pakowania pomaga usprawnić układ stanowisk, obsadę i zaopatrzenie w materiały. Skąd pobrać To zdarzenie może wymagać wywnioskowania. Można je ustalić na podstawie pierwszego skanu produktu lub jednostki logistycznej na stanowisku pakowania. Informacje te są często rejestrowane w dziennikach stanowisk roboczych lub jednostek logistycznych. Źródłem mogą być tabele takie jak /SCWM/PACKSPEC oraz powiązane dzienniki realizacji. Rejestrowanie Użyj znacznika czasu pierwszego potwierdzenia Warehouse Task związanego z pakowaniem dla danej dostawy albo czasu utworzenia końcowej jednostki logistycznej wysyłki (HU). Typ zdarzenia inferred | |||
| Rozpoczęto załadunek | To zdarzenie oznacza rozpoczęcie fizycznego załadunku towaru ze strefy wysyłkowej na ciężarówkę lub jednostkę transportową. Często jest rejestrowane po wykonaniu działania przez użytkownika w systemie. | ||
| Dlaczego to ważne To początek ostatniego fizycznego etapu pracy w magazynie. Analiza czasu załadunku pomaga lepiej wykorzystać bramy załadunkowe i skrócić czas obsługi przewoźnika. Skąd pobrać Zdarzenie można wywnioskować ze zmiany statusu powiązanej jednostki transportowej (TU) lub zlecenia dostawy wychodzącej na „Loading Started”. Można sprawdzić tabelę /SCWM/TU_STATUS. Rejestrowanie Zarejestruj znacznik czasu zmiany statusu TU lub zlecenia dostawy, która oznacza rozpoczęcie załadunku. Typ zdarzenia inferred | |||
| Utworzono zadanie kompletacji | System generuje Warehouse Task (WT) dotyczące pobrania towaru z miejsca składowania w celu realizacji dostawy wychodzącej. To polecenie systemowe dla pracownika, aby pobrał produkt. | ||
| Dlaczego to ważne To początek fizycznej realizacji procesu wychodzącego. Czas między utworzeniem a potwierdzeniem zadań kompletacji ma duże znaczenie przy analizie efektywności kompletacji i dostępności zasobów. Skąd pobrać Dane pochodzą ze znacznika czasu utworzenia (pole CREATED_AT) odpowiedniego Warehouse Task w tabeli /SCWM/WT, którego typ procesu wskazuje na kompletację. Rejestrowanie Wybierz Warehouse Task powiązane z Warehouse Order, których typ procesu oznacza kompletację, i użyj ich znaczników czasu utworzenia. Typ zdarzenia explicit | |||
| Utworzono zadanie odkładania towaru | System generuje konkretne polecenie, Warehouse Task (WT), dotyczące przeniesienia przyjętego towaru ze strefy przyjęć do docelowego miejsca składowania. To zdarzenie oznacza, że system jest gotowy do realizacji przemieszczenia. | ||
| Dlaczego to ważne Śledzenie czasu od utworzenia zadania do jego potwierdzenia pokazuje, jak długo trwa podjęcie i wykonanie polecenia odkładania przez pracowników magazynu. Pozwala też wykryć możliwe braki kadrowe lub niedobór sprzętu. Skąd pobrać Dane pochodzą ze znacznika czasu utworzenia (pole CREATED_AT) odpowiedniego Warehouse Task w tabeli /SCWM/WT, którego typ procesu wskazuje na odkładanie towaru. Rejestrowanie Wybierz Warehouse Task powiązane z Warehouse Order, których typ procesu oznacza odkładanie towaru, i użyj ich znaczników czasu utworzenia. Typ zdarzenia explicit | |||
| Zakończono załadunek | Oznacza fizyczne załadowanie całego towaru z przesyłki na jednostkę transportową. Jest to warunek zaksięgowania wydania towaru i wysłania pojazdu. | ||
| Dlaczego to ważne To ważny etap przed wysyłką. Opóźnienie między zakończeniem załadunku a zaksięgowaniem wydania towaru może wskazywać na problemy z dokumentacją lub systemem, które wstrzymują przewoźnika. Skąd pobrać Zdarzenie można wywnioskować ze zmiany statusu powiązanej jednostki transportowej (TU) lub zlecenia dostawy wychodzącej na „Loading Completed”. Znaczenie mają statusy w tabelach /SCWM/TU i /SCDL/DB_PROCH_O. Rejestrowanie Zarejestruj znacznik czasu zmiany statusu TU lub zlecenia dostawy, która oznacza zakończenie załadunku. Typ zdarzenia inferred | |||
| Zaksięgowano przyjęcie towaru | Oznacza formalne przyjęcie towarów do zapasów magazynowych od zewnętrznego dostawcy lub z produkcji. To ważne księgowanie finansowe i magazynowe, które sprawia, że zapasy są widoczne i dostępne dla kolejnych procesów, takich jak odkładanie na miejsce składowania. | ||
| Dlaczego to ważne To ważny etap procesu przychodzącego. Czas między dostawą towaru a zaksięgowaniem przyjęcia może wskazywać na zaległości w strefie przyjęć, które ograniczają dostępność zapasów. Skąd pobrać Zdarzenie można wywnioskować z zaksięgowania dokumentu dostawy przychodzącej powiązanego ze zleceniem magazynowym. Sprawdź przepływ dokumentów lub pola statusu, np. DGRSTAT, w tabeli /SCDL/DB_PROCH_I. Rejestrowanie Ustal znacznik czasu, w którym status przyjęcia towaru dla powiązanej dostawy przychodzącej zmienia się na „Completed”. Typ zdarzenia inferred | |||
Instrukcje ekstrakcji danych
Kroki
- Warunek wstępny: znajdź lub utwórz widoki CDS: Głównym źródłem danych są standardowe widoki CDS systemu SAP S/4HANA do zarządzania magazynem. Najważniejsze z nich to
I_WarehouseOrder, zawierający zdarzenia na poziomie zlecenia, orazI_WarehouseTask, zawierający zdarzenia na poziomie zadania. Do powiązanych zdarzeń logistycznych potrzebne są też widoki takie jakI_OutboundDeliveryItem,I_InboundDeliveryItemiI_EWMTransportationUnit. Sprawdź, czy te widoki są aktywne w systemie. - Utwórz własny widok CDS: Aby połączyć dane z wielu źródeł w jeden dziennik zdarzeń, należy utworzyć własny widok CDS. W Eclipse użyj ABAP Development Tools (ADT), aby utworzyć nową definicję danych. Widok powinien łączyć rekordy z różnych źródeł za pomocą
UNION ALL, przy czym każdy rekord będzie odpowiadał odrębnej czynności biznesowej. - Zdefiniuj strukturę dziennika zdarzeń: Własny widok CDS powinien zawierać pola, które utworzą kolumny dziennika zdarzeń. Uwzględnij
WarehouseOrder,ActivityName,EventTimeoraz pozostałe wymagane i zalecane atrybuty. Przypisz im pola z bazowych standardowych widoków CDS. - Zamodeluj zdarzenia zlecenia magazynowego: Dodaj pierwsze instrukcje
SELECTdo unii. Pobierz dane zI_WarehouseOrder, aby utworzyć zdarzenie „Utworzono zlecenie magazynowe”, korzystając ze znacznika czasu utworzenia. Dodaj kolejne instrukcjeSELECTdla zdarzeń „Zakończono zlecenie magazynowe” i „Anulowano zlecenie magazynowe”. Filtruj według statusu zlecenia i użyj odpowiednich znaczników czasu potwierdzenia lub zmiany. - Zamodeluj zdarzenia zadań magazynowych: Dodaj instrukcje
SELECTpobierające dane zI_WarehouseTask. Utwórz zdarzenia „Utworzono zadanie odłożenia” i „Potwierdzono zadanie odłożenia”, filtrując według kategorii procesów magazynowych związanych z odkładaniem. Podobnie utwórz zdarzenia „Utworzono zadanie kompletacji”, „Potwierdzono zadanie kompletacji” i „Potwierdzono zadanie odstawienia”, korzystając z odpowiednich kategorii procesów oraz znaczników czasu utworzenia i potwierdzenia. - Zamodeluj zdarzenia przesunięć towarów: Połącz widoki dotyczące dostaw z zadaniami magazynowymi, aby uwzględnić przesunięcia towarów. Dla zdarzenia „Zaksięgowano przyjęcie towaru” pobierz dane z
I_InboundDeliveryItem, używając polaActualGoodsMovementDateTime. Dla zdarzenia „Zaksięgowano wydanie towaru” użyj tego samego pola zI_OutboundDeliveryItemi powiąż je z odpowiednim zleceniem lub zadaniem magazynowym. - Zamodeluj zdarzenia załadunku i pakowania: Pobierz dane z
I_EWMTransportationUnit, aby uwzględnić zdarzenia „Rozpoczęto załadunek” i „Zakończono załadunek”, korzystając z przypisanych im znaczników czasu. Pakowanie może być bardziej złożone, dlatego można użyć danych zastępczych z widoku jednostki ładunkowej. Czas utworzenia może oznaczać „Rozpoczęto pakowanie”, a czas zmiany statusu „Zakończono pakowanie”. Ten krok może wymagać dostosowania do konkretnego procesu pakowania. - Dodaj adnotacje udostępniające widok CDS: Dodaj adnotację
@OData.publish: truedo definicji własnego widoku CDS. Dzięki temu SAP automatycznie wygeneruje usługę OData na podstawie struktury widoku. - Aktywuj widok CDS i usługę OData: Aktywuj nową definicję danych w ADT. Następnie przejdź do systemu SAP Gateway Hub i użyj transakcji
/IWFND/MAINT_SERVICE, aby znaleźć i aktywować nowo wygenerowaną usługę OData. Dane będą wtedy dostępne przez punkt końcowy REST API. - Wyodrębnij dane: Połącz docelową platformę danych lub narzędzie ETL z aktywną usługą OData. Zastosuj filtry bezpośrednio w URI OData, na przykład filtr
EventTime, aby ograniczyć zakres danych (np.?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Przygotuj dane do process mining: Zapisz wyodrębnione dane w pliku płaskim, na przykład CSV, z nagłówkami kolumn odpowiadającymi wymaganym atrybutom ProcessMind (
WarehouseOrder,ActivityName,EventTimeitd.). Prześlij gotowy plik do narzędzia process mining.
Konfiguracja
- Własny widok CDS: Należy utworzyć dedykowany widok CDS, na przykład
Z_C_EWM_EVENTLOG_CDS, który połączy dane o zdarzeniach. To główny obiekt używany do ekstrakcji. - Usługa OData: Należy aktywować usługę OData wygenerowaną na podstawie własnego widoku CDS. Nazwa usługi zwykle odpowiada nazwie widoku CDS z przyrostkiem
_CDS. - Filtrowanie według zakresu dat: Podczas wywoływania OData API należy koniecznie filtrować pole
EventTimewedług daty. Na potrzeby wstępnej analizy warto pobrać dane z 3 do 6 miesięcy. Bez filtra zapytanie może przekroczyć limit czasu lub obciążyć system. - Filtrowanie według obiektów: Aby dodatkowo ograniczyć zakres danych, można filtrować według atrybutów takich jak numer magazynu (
Warehouse), typ zlecenia magazynowego (WarehouseOrderType) lub konkretne materiały (MaterialNumber). - Uprawnienia systemowe: Osoba tworząca widok CDS potrzebuje uprawnień programisty SAP w ADT. Użytkownik lub konto usługi wywołujące OData API musi mieć uprawnienia do odczytu danych z systemu zarządzania magazynem.
Przykładowe zapytanie sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate Kroki
- Potwierdź, że bezpośredni dostęp tylko do odczytu do schematu bazy danych SAP EWM jest zatwierdzony. Ustal fizyczne obiekty bazy danych odpowiadające nagłówkom zleceń magazynowych, zadaniom magazynowym, historii statusów zleceń, księgowaniom przyjęć i wydań towarów, pakowaniu, odstawianiu oraz załadunkowi. Logiczne odwołania /SCWM/WHO i /SCWM/WT są często używane jako punkt wyjścia, ale w danym systemie należy zweryfikować rzeczywiste obiekty, pola, kody statusów, znaczenie znaczników czasu i schemat bazy danych.
- Uzyskaj potwierdzone mapowanie pól od właściciela technicznego SAP EWM lub z słownika danych. Zmapuj identyfikator i typ zlecenia magazynowego, status, priorytet, identyfikator zadania magazynowego, kategorię zadania lub typ procesu, materiał, użytkownika, znaczniki czasu utworzenia i potwierdzenia, znaczniki czasu pakowania, odstawienia i załadunku, znacznik czasu przyjęcia i wydania towaru, system źródłowy oraz znacznik czasu ostatniego odświeżenia. Nie zakładaj, że pole znajduje się w tej samej tabeli ani że kod statusu ma takie samo znaczenie we wszystkich wdrożeniach.
- Skonfiguruj połączenie ekstrakcyjne z kontem bazy danych tylko do odczytu, schematem produkcyjnym lub raportowym oraz parametrami określającymi datę początkową i końcową ekstrakcji, nazwę systemu źródłowego i filtry specyficzne dla firmy. Filtruj według znacznika czasu właściwego dla danego zdarzenia, a nie tylko według czasu utworzenia zlecenia magazynowego. Dzięki temu nie zostaną pominięte zdarzenia z późniejszych etapów realizacji zlecenia.
- Utwórz wiersze zdarzeń, wybierając po jednym wierszu dla każdej wymaganej czynności. Zapytanie musi korzystać ze zweryfikowanych pól źródłowych dla każdej czynności. Nie należy polegać na tym, że ProcessMind sam rozpozna zdarzenia. Jeśli czynność jest zapisana w historii statusów lub dzienniku aplikacji, a nie w bieżącym polu nagłówka, użyj historii lub dziennika i zachowaj znacznik czasu zdarzenia oraz użytkownika, który je wykonał.
- Ujednolić strefę czasową wszystkich znaczników czasu, najlepiej do UTC, albo udokumentuj strefę czasową serwera aplikacyjnego SAP. Przekształć kody statusów i procesów specyficzne dla źródła na dokładne nazwy czynności wymagane w dzienniku zdarzeń: Utworzono zlecenie magazynowe, Zaksięgowano przyjęcie towaru, Utworzono zadanie odłożenia, Potwierdzono zadanie odłożenia, Utworzono zadanie kompletacji, Potwierdzono zadanie kompletacji, Rozpoczęto pakowanie, Zakończono pakowanie, Potwierdzono zadanie odstawienia, Rozpoczęto załadunek, Zakończono załadunek, Zaksięgowano wydanie towaru, Zakończono zlecenie magazynowe i Anulowano zlecenie magazynowe.
- Upewnij się, że każdy wiersz wynikowy zawiera pola WarehouseOrder, ActivityName, EventTime, SourceSystem i LastDataUpdate. Wypełnij EventEndTime, jeśli dostępny jest wiarygodny znacznik czasu zakończenia. W przypadku zdarzeń na poziomie zadania powiąż zadanie z jego zleceniem magazynowym. Jeśli jedno zlecenie obejmuje kilka powiązanych zadań, zachowaj osobny wiersz dla każdego zdarzenia zadania, a jako identyfikatora sprawy użyj zlecenia magazynowego. Jeśli docelowy format importu na to pozwala, zastosuj stabilne kryterium rozstrzygające kolejność, na przykład identyfikator zadania lub zdarzenia źródłowego.
- Przed eksportem sprawdź wyniki. Upewnij się, że wszystkie 14 nazw czynności występuje tam, gdzie dane źródłowe zawierają odpowiadające im zdarzenia biznesowe, znaczniki czasu mieszczą się w żądanym zakresie, pola zlecenia magazynowego nie są nieoczekiwanie puste, a duplikaty można wyjaśnić wieloma zadaniami lub powtarzającymi się zmianami statusu. Porównaj liczby z raportami operacyjnymi SAP lub niezależnie zatwierdzonym wyciągiem danych.
- Wyeksportuj wynik do pliku rozdzielanego zgodnego z ProcessMind lub jako wynik zapytania do bazy danych, z jednym zdarzeniem w każdym wierszu. Zachowaj dokładne wymagane nazwy kolumn, użyj jednoznacznego formatu znaczników czasu, na przykład ISO 8601, ujmij wartości tekstowe w cudzysłowy, jeśli wymaga tego format, i dodaj wiersz nagłówka. Prześlij plik do ProcessMind lub skonfiguruj połączenie z bazą danych. Ustaw WarehouseOrder jako identyfikator sprawy, ActivityName jako czynność, EventTime jako znacznik czasu rozpoczęcia, a EventEndTime jako znacznik czasu zakończenia, jeśli jest dostępny.
Konfiguracja
- Mapowanie obiektów źródłowych: Zweryfikuj fizyczne obiekty bazy danych i pola dotyczące zleceń magazynowych, zadań magazynowych, historii statusów, przesunięć towarów, pakowania, odstawiania i załadunku. /SCWM/WHO i /SCWM/WT mogą odpowiadać właściwym obiektom logicznym, ale przed wdrożeniem należy potwierdzić ich reprezentację w używanej bazie danych.
- Zakres dat: Zacznij od kontrolowanego okresu od trzech do sześciu miesięcy. Do wstępnych testów wybierz krótszy okres, a po uzgodnieniu wyników go wydłuż. Między kolejnymi uruchomieniami pozostaw niewielki okres nakładania się, aby uwzględnić opóźnione księgowania i korekty.
- Wybór znacznika czasu zdarzenia: Dla utworzonych czynności używaj znaczników czasu utworzenia, dla potwierdzonych czynności znaczników czasu potwierdzenia, dla przyjęcia i wydania towaru znaczników czasu księgowania, a dla pakowania, odstawiania i załadunku zweryfikowanych znaczników czasu wykonania. Nie zastępuj wszystkich znaczników czasu czasem utworzenia zlecenia magazynowego.
- Filtry: Stosuj wyłącznie zweryfikowane filtry biznesowe, takie jak numer magazynu, kod firmy, typ dokumentu, typ zlecenia magazynowego, obszar czynności, kolejka, zakład lub system źródłowy. Pola kodu firmy i typu dokumentu mogą znajdować się w powiązanych obiektach, dlatego trzeba je zmapować w systemie docelowym.
- Mapowanie statusów: Skonfiguruj dokładne kody statusów lub procesów SAP oznaczające zakończenie i anulowanie zleceń magazynowych. Zweryfikuj mapowanie z właścicielem funkcjonalnym EWM, ponieważ kody statusów i sposób ich przechowywania mogą się różnić w zależności od wersji i wdrożenia.
- SourceSystem: Ustaw stałą wartość identyfikującą produkcyjną lub raportową instancję EWM. Nie wyprowadzaj jej z pola biznesowego, które może być puste.
- LastDataUpdate: Dla każdego wiersza w danym uruchomieniu konsekwentnie zapisuj czas ekstrakcji lub odświeżenia danych źródłowych.
- Ekstrakcja przyrostowa: Używaj zapisanego punktu kontrolnego opartego na najnowszym pomyślnie wyodrębnionym znaczniku czasu źródłowego. Uwzględnij okres nakładania się, aby wychwycić spóźnione rekordy. Jeśli są dostępne, usuwaj duplikaty na podstawie zweryfikowanych identyfikatorów źródłowych.
- Wydajność: Ograniczaj zakres dat na wczesnym etapie, wybieraj tylko wymagane kolumny, filtruj według indeksowanych pól, nie stosuj funkcji do indeksowanych kolumn ze znacznikami czasu w warunkach zapytania i przetwarzaj duże zakresy w partiach dziennych lub tygodniowych. Jeśli jest to dozwolone, korzystaj z repliki raportowej.
- Strategia łączenia: Sprawdź krotność relacji między zleceniami magazynowymi a zadaniami magazynowymi. Zapobiegaj przypadkowemu zwielokrotnieniu rekordów podczas łączenia danych o zadaniach, statusach, materiałach i jednostkach ładunkowych. Przed połączeniem zagreguj dane lub wybierz właściwy rekord zdarzenia.
- Strefy czasowe: Skonfiguruj strefę czasową źródła i regułę konwersji. Zapisuj znaczniki czasu w spójny sposób i udokumentuj obsługę czasu letniego.
- Wymagania wstępne: Uprawnienia do odczytu bazy danych, zatwierdzony dostęp do schematu EWM, zweryfikowane mapowanie ze słownikiem danych, uprawnienia do odczytu odpowiednich obiektów operacyjnych i historycznych oraz zatwierdzona konfiguracja importu ProcessMind. Wymagane moduły SAP, licencje i uprawnienia zależą od wdrożonej architektury EWM. Powinien je potwierdzić właściciel systemu.
Przykładowe zapytanie sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_time,
CAST('[End date and time]' AS TIMESTAMP) AS end_time,
CAST('[Source system name]' AS VARCHAR(255)) AS source_system,
CAST(CURRENT_TIMESTAMP AS TIMESTAMP) AS last_data_update
),
warehouse_orders AS (
SELECT
CAST(wo.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wo.[Warehouse order type field] AS VARCHAR(255)) AS WarehouseOrderType,
CAST(wo.[Warehouse order status field] AS VARCHAR(255)) AS WarehouseOrderStatus,
CAST(wo.[Priority field] AS VARCHAR(255)) AS Priority,
CAST(wo.[Warehouse order creation timestamp field] AS TIMESTAMP) AS WarehouseOrderCreatedTime,
CAST(wo.[Warehouse order completion timestamp field] AS TIMESTAMP) AS WarehouseOrderCompletedTime,
CAST(wo.[Warehouse order cancellation timestamp field] AS TIMESTAMP) AS WarehouseOrderCanceledTime,
CAST(wo.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wo.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse order header table] wo
),
warehouse_tasks AS (
SELECT
CAST(wt.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wt.[Warehouse task ID field] AS VARCHAR(255)) AS WarehouseTask,
CAST(wt.[Task category or process type field] AS VARCHAR(255)) AS TaskType,
CAST(wt.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wt.[Task creation timestamp field] AS TIMESTAMP) AS TaskCreatedTime,
CAST(wt.[Task confirmation timestamp field] AS TIMESTAMP) AS TaskConfirmedTime,
CAST(wt.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse task table] wt
),
events AS (
SELECT wo.WarehouseOrder, 'Warehouse Order Created' AS ActivityName, wo.WarehouseOrderCreatedTime AS EventTime, CAST(NULL AS TIMESTAMP) AS EventEndTime, wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo
UNION ALL
SELECT gr.[Warehouse order ID field], 'Goods Receipt Posted', CAST(gr.[Goods receipt posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gr.[Material number field] AS VARCHAR(255)), CAST(gr.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods receipt posting table] gr LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gr.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Started', CAST(pk.[Packing start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Completed', CAST(pk.[Packing completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT st.[Warehouse order ID field], 'Staging Task Confirmed', CAST(st.[Staging confirmation timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(st.[Material number field] AS VARCHAR(255)), CAST(st.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your staging event table] st LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(st.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Started', CAST(ld.[Loading start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Completed', CAST(ld.[Loading completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT gi.[Warehouse order ID field], 'Goods Issue Posted', CAST(gi.[Goods issue posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gi.[Material number field] AS VARCHAR(255)), CAST(gi.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods issue posting table] gi LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gi.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Completed', wo.WarehouseOrderCompletedTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCompletedTime IS NOT NULL
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Canceled', wo.WarehouseOrderCanceledTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCanceledTime IS NOT NULL
)
SELECT
e.WarehouseOrder,
e.ActivityName,
e.EventTime,
e.EventEndTime,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaterialNumber,
e.[User],
e.WarehouseOrderType,
e.WarehouseOrderStatus,
e.Priority
FROM events e
CROSS JOIN params p
WHERE e.WarehouseOrder IS NOT NULL
AND e.EventTime IS NOT NULL
AND e.EventTime >= p.start_time
AND e.EventTime < p.end_time
ORDER BY e.WarehouseOrder, e.EventTime, e.ActivityName; Gotowi do rozpoczęcia?
Już dziś zacznij usprawniać operacje magazynowe. Skorzystaj z tego szablonu, aby poprawić sprawność pracy i przyspieszyć realizację zleceń.
Ogranicz błędy kompletacji i usprawnij zarządzanie magazynem
Osiągnij 99,5% zgodności stanów magazynowych i wyeliminuj opóźnienia w realizacji zamówień w ciągu kilku tygodni.
Nie trzeba podawać danych karty. Konfiguracja zajmuje kilka minut.