Wskaźnik w raporcie magazynowym jest wart tyle, ile jego definicja. Czas kompletacji liczony od wydania zadania do skanu daje inny wynik niż czas liczony od pierwszego kroku operatora. SQL Server Reporting Services pozwala zapisać definicję w zapytaniu raz i uruchamiać ją z tego samego źródła każdemu odbiorcy.

Dane magazynowe jako źródło raportów

Każda operacja w Studio WMS.net zapisuje się w bazie z czasem wykonania i lokalizacją. Zapis zawiera też operatora. Raport nie tworzy tych danych. Odczytuje je i grupuje. Z jednej historii ruchów palet powstają zestawienia stanów oraz produktywności zmian. Od zapytania zależy, czy wynikiem jest obłożenie ramp, czy lista palet do przesunięcia.

Zapytania raportowe agregują duże zakresy wierszy, więc mogą kolidować z zapisami z terminali. Jeśli raport czyta dane na poziomie READ COMMITTED bez wersjonowania wierszy, ciężkie zestawienie zakłada blokady współdzielone i opóźnia zapisy. Poziom SNAPSHOT albo opcja READ_COMMITTED_SNAPSHOT w bazie pozwala czytać wersję spójną bez czekania na blokady, a kosztem jest większe użycie bazy tymczasowej. Poziomy opisuje dokumentacja SET TRANSACTION ISOLATION LEVEL.

Reguła: definicję wskaźnika zapisuje się w zapytaniu i opisuje w nagłówku raportu. Dwa raporty produktywności z różnym początkiem odliczania czasu prowadzą do sporów, którego z nich użyć przy ocenie zmiany.

Przy dużym obciążeniu zapisami raporty można kierować do osobnej kopii bazy tylko do odczytu. SQL Server ma kilka mechanizmów replikacji i kopii czytelnych, a wybór zależy od edycji i wymagań dotyczących aktualności danych. Raport o stałych parametrach, na przykład zestawienie za wczorajszy dzień, można też zbuforować na serwerze raportów i otwierać z pamięci podręcznej.

Wskaźniki w raportach magazynowych

Raporty obsługują codzienne decyzje kierownika magazynu, więc ich zawartość wynika z pytań zadawanych na odprawie. Poniższa tabela zestawia wskaźniki najczęściej wymagane od raportu kompletacji i obłożenia.

WskaźnikCo mierzyDane źródłoweRytm odczytu
Średni czas kompletacji zleceniatempo realizacji zamówieńczas zadania i skan zakończeniacodziennie
Linie na godzinęproduktywność operatoraskany pobrań z godzinąpo każdej zmianie
Dokładność pickinguodsetek pozycji bez błędukorekty i reklamacjeco tydzień
Zapełnienie strefprocent pustych lokalizacjimapa lokalizacjico tydzień
Rotacja grup produktowychtowary wolno rotującewydania z ostatnich miesięcyco miesiąc

Rotację i zaleganie omawia strona o rotacji i zaleganiu towarów. Osobną grupę stanowią raporty kosztowe, które korzystają z cenników usług. Pokazuje to widok rozliczania kosztów poniżej.

Studio WMS.net - sekcja Magazyn, rozliczanie kosztów magazynowania z zestawieniem stawek i zleceń
Moduł rozliczania kosztów w Studio WMS.net - zestawienie usług magazynowych i należności kontrahentów

Zapytanie dla raportu produktywności

Raport produktywności zlicza pobrania w przedziale godzinowym i porównuje wynik operatora ze średnią całej zmiany. Przykład jest ilustracyjny. Nazwy tabel i kolumn nie pochodzą ze schematu produktu. Klauzula OVER pozwala policzyć średnią bez grupowania i bez podzapytania.

WITH godziny AS (
    SELECT OperatorId,
           CAST(DataPobrania AS date)     AS Dzien,
           DATEPART(HOUR, DataPobrania)   AS Godzina,
           COUNT(*)                       AS Linie
    FROM dbo.PobraniaLinii
    WHERE DataPobrania >= @DataOd
      AND DataPobrania <  DATEADD(DAY, 1, @DataDo)
    GROUP BY OperatorId, CAST(DataPobrania AS date), DATEPART(HOUR, DataPobrania)
)
SELECT OperatorId, Dzien, Godzina, Linie,
       AVG(Linie * 1.0) OVER (PARTITION BY Dzien, Godzina) AS SredniaGodziny
FROM godziny
ORDER BY Dzien, Godzina, Linie DESC;

Kolumna SredniaGodziny trafia do wykresu jako druga seria, więc odchylenie operatora od zmiany widać bez dodatkowych obliczeń w raporcie. Składnię funkcji okna opisuje dokumentacja klauzuli OVER.

Indeks pod zapytanie raportowe

Filtr po zakresie dat jest szybki, gdy kolumna DataPobrania ma indeks, a kolumna OperatorId znajduje się w jego kolumnach dołączonych. Bez niego plan wykonania pokazuje przeszukiwanie całej tabeli pobrań. Taki raport przy tabeli z kilkoma milionami wierszy zaczyna być odczuwalny dla użytkownika, więc indeks wprowadza się przy projekcie raportu, a nie po skargach.

Wynik zapytania ma po jednym wierszu na operatora i godzinę, co daje wykresowi gotowe dane. Wartość SredniaGodziny jest identyczna dla każdego operatora w danym przedziale. Rozrzut wokół niej pokazuje więc, kto pracuje szybciej od zmiany, a kto wolniej. Gdy w godzinie jest mało pobrań, na przykład w czasie przerwy, średnia nie jest reprezentatywna. Raport powinien ukrywać takie przedziały.

Koszty usług magazynowych w raporcie

Magazyn kontraktowy rozlicza klientów za przyjęcie i wydanie jednostki oraz za dobę składowania. Osobną pozycją jest obsługa specjalna. Widok rozliczania kosztów w sekcji Magazyn zestawia okresy rozliczeniowe z kontrahentami i wolumenami operacji. Ostatnia kolumna zawiera kwoty należności. Wynik można wyeksportować do arkusza kalkulacyjnego albo przekazać do ERP, gdzie powstaje faktura.

Pozycja cennikaJednostka rozliczeniaSkąd pochodzi ilość
Przyjęciepaleta albo sztukadokumenty przyjęcia w okresie
Wydaniepaleta albo linia zamówieniadokumenty wydania w okresie
Składowaniedoba na paletęstan lokalizacji z każdego dnia
Obsługa specjalnazleceniezadania oznaczone w systemie

Najtrudniejsza jest pozycja składowania, bo wymaga stanu z każdego dnia okresu, a nie samej sumy dokumentów. Zapytanie liczące dobę po dobie opiera się zwykle na tabeli dat i złączeniu z historią ruchów. Rozliczenie warto sprawdzić na jednym kliencie ręcznie, zanim zostanie uruchomione dla wszystkich.

Wykonanie raportu na serwerze

Serwer raportów odbiera żądanie z przeglądarki, pobiera dane z bazy i dopiero potem renderuje wynik do wybranego formatu. Przy dużych bazach to zapytanie decyduje o czasie wykonania, a nie sama prezentacja. Wynik można wyeksportować do Excel albo PDF. Plik trafia wtedy do osoby, która nie loguje się do systemu magazynowego.

Studio WMS.net - zestawienie dokumentów PZB z filtrem daty, kontrahenta i statusu przyjęcia
Zestawienie dokumentów magazynowych z filtrem daty, kontrahenta i statusu, gotowe do wydruku i eksportu do Excel

Co użytkownik robi z raportem

Wysyłkę według harmonogramu opisuje artykuł o subskrypcji raportów, a projektowanie wzorów dokumentów i etykiet opisuje strona o Microsoft Report Builder. Architekturę serwera i uprawnienia omawia temat serwera raportów. Dokumentacja Microsoft opisuje także raporty stronicowane SSRS.

Obłożenie ramp i trasy kompletacji

Raporty obłożenia ramp pokazują, w których oknach czasowych pojazdy czekają na przydział bramy. Dane pochodzą z awizacji dostaw, więc zestawienie można policzyć dla każdej doby i porównać z liczbą palet przyjętych. Proces opisuje strona o awizacji dostaw.

Raport tras kompletacji wskazuje listy, na których operator wracał do tej samej alejki. Taka lista jest sygnałem, że lokalizacje towarów szybko rotujących leżą zbyt daleko od strefy pakowania. Kolejność pobrań opisuje strona o komisjonowaniu, a zmiany rozmieszczenia wymagają ponownej klasyfikacji ABC.

Raporty ad hoc dla pracowników merytorycznych

Nie każde pytanie da się przewidzieć w gotowym raporcie. Pracownik działu zakupów albo sprzedaży potrzebuje własnego zestawienia, ale nie zna języka zapytań. Report Builder daje mu szablon układu i listę pól, a zapytanie generuje się z wyboru elementów.

Taki raport po publikacji zachowuje się jak każdy inny na serwerze. Wykorzystuje te same metody przeglądania i dostarczania oraz te same zabezpieczenia. Użytkownik widzi tylko dane, do których ma uprawnienia, a zmiana raportu nie wymaga udziału administratora bazy.

Aktualność danych zależy od sposobu uruchomienia. Raport otwierany na żądanie pokazuje stan z chwili zapytania, a raport z pamięci podręcznej stan z ostatniego odświeżenia. Dlatego w nagłówku raportu warto umieścić datę i godzinę wykonania, bo kierownik oceniający wynik zmiany musi wiedzieć, o której godzinie zrobiono zestawienie.

Raportowanie w ofercie SoftwareStudio

SoftwareStudio dostarcza raportowanie jako część platformy magazynowej i wdraża je razem z systemem. Zestawienia pracują na tych samych danych co aplikacja magazynowa. Rodzaje systemów magazynowych opisuje strona o systemach klasy WMS.

Ogólny obraz systemu daje artykuł o systemie WMS, a funkcje programu dla firm logistycznych zestawia strona o oprogramowaniu WMS. Terminale z Androidem, na których powstają skany zasilające raporty, opisuje strona WMS na Androida, a zarządzanie całym obiektem omawia zarządzanie magazynem.

Pytania i odpowiedzi o raportowanie SQL Report Server

Może obciążać, jeśli zapytanie czyta duże zakresy wierszy bez indeksu. Pomaga indeks na kolumnie daty, odczyt w poziomie SNAPSHOT oraz uruchamianie najcięższych zestawień poza godzinami szczytu. Obciążenie warto sprawdzić w dzienniku wykonań serwera raportów.

Z zapytania zbioru danych i wyrażeń w raporcie. Dlatego definicja, na przykład początek odliczania czasu kompletacji, powinna być zapisana w zapytaniu i opisana w nagłówku raportu. Zmiana definicji wymaga zmiany raportu, a nie zmiany aplikacji.

Tak. Serwer raportów eksportuje wynik do Excel, Word i PDF. Plik Excel nadaje się do dalszej analizy, a PDF do przekazania odbiorcy, który nie ma konta w systemie magazynowym.

Raport ad hoc użytkownik składa sam z gotowych pól w Report Builder, bez pisania zapytania. Raport zaprojektowany przygotowuje programista albo wdrożeniowiec dla stałej potrzeby, z zoptymalizowanym zapytaniem i parametrami. Oba działają na tym samym serwerze i podlegają tym samym uprawnieniom.

Najczęściej przyczyną jest zapytanie bez indeksu na kolumnie filtra albo filtr zastosowany po pobraniu danych. Plan wykonania pokazuje, czy silnik przeszukuje całą tabelę. Poprawa polega zwykle na przeniesieniu filtra do klauzuli WHERE i dodaniu indeksu.

Glosariusz pojęć związanych z raportowaniem w magazynie

SSRS
SQL Server Reporting Services, usługa serwerowa do tworzenia, wykonywania i dostarczania raportów stronicowanych.
Zbiór danych
Zapytanie i lista pól, z których raport czerpie dane do tabel i wykresów.
KPI
Mierzalny wskaźnik efektywności procesu, na przykład liczba linii pobranych na godzinę przez operatora.
Poziom SNAPSHOT
Poziom izolacji transakcji, w którym zapytanie czyta spójną wersję danych bez blokad współdzielonych.
Funkcja okna
Funkcja T-SQL z klauzulą OVER, która liczy wynik na zbiorze wierszy bez grupowania.
Indeks dołączony
Indeks z dodatkowymi kolumnami w liściach, dzięki któremu zapytanie nie sięga do tabeli bazowej.
Raport ad hoc
Raport zestawiany przez użytkownika z gotowych pól na doraźną potrzebę, bez udziału programisty.
Drążenie danych
Przejście z wiersza sumy do raportu szczegółowego z pojedynczymi dokumentami.

Warto przeczytać

Program do zarządzania magazynem Studio WMS.net - zakres i wybór rozwiązania
Co powinien obejmować program do zarządzania magazynem: zakres usługi, porównanie z arkuszem, numer SSCC, integracja z ERP i terminale Android. Przykład T-SQL.
Czytaj artykuł →
Weryfikacja adresu skanem i wózki VNA w obsłudze magazynu wysokiego składowania
Praca wózków VNA w magazynie wysokiego składowania: adresy lokalizacji, dwuetapowa weryfikacja skanem, przesunięcia ZL i spis ciągły. Przykład procedury T-SQL.
Czytaj artykuł →
Efektywne zarządzanie miejscami składowania i adresacja w magazynie wysokiego składowania z WMS
Jak przypisać towar do miejsca składowania: czynniki wyboru, stałe i wolne miejsca, parametry gniazda oraz kontrola odkładania skanem w Studio WMS.net.
Czytaj artykuł →
Raportowanie w systemie WMS z Microsoft Report Builder - projektowanie etykiet i dokumentów
Microsoft Report Builder w Studio WMS.net: zbiory danych, parametry, wydruki dokumentów magazynowych i etykiety z kodami kreskowymi bez zmian w kodzie programu.
Czytaj artykuł →
System magazynowy WMS dla magazynów wysokiego składowania
System magazynowy WMS dla regałów wielopoziomowych: adres lokalizacji, nośność gniazd, przydział miejsc, kompletacja i koszty. Przykład zapytania T-SQL.
Czytaj artykuł →
Sieć radiowa i skan lokalizacji w alejkach magazynu wysokiego składowania - terminal Android
Terminal radiowy w Studio WMS.net: zasięg sieci w alejkach magazynu wysokiego składowania, skan lokalizacji i nośników SSCC, kolektor Android oraz monitoring.
Czytaj artykuł →