W skrócie
Integracja z ERP klienta nie musi zaczynać się od interfejsu API. W opisywanym wdrożeniu u operatora logistycznego zadanie cykliczne pobiera uzgodniony plik CSV z serwera SFTP, zapisuje wiersze w tabeli pośredniej i dopiero w drugim etapie tworzy zlecenia. Po wydaniu na serwer wraca plik potwierdzenia z numerami palet.
Integracja z ERP klienta nie musi zaczynać się od interfejsu API. W opisywanym wdrożeniu u operatora logistycznego z południa Polski wystarcza uzgodniony plik CSV na serwerze SFTP i zadanie, które przetwarza dane w dwóch etapach, z kontrolą po każdym. Poniżej pokazujemy, co zawiera plik i w którym miejscu zatrzymuje się błędny wiersz.
Mechanizm z tego artykułu należy do warstwy dedykowanej wdrożenia, czyli do skryptów i procedur napisanych dla tego klienta na platformie Studio WMS.net, a nie do standardu produktu. Wymiana plikowa jest jedną z trzech metod łączenia WMS z ERP, a dwie pozostałe porównuje artykuł o integracji ERP z WMS. Tamten tekst opisuje inne wdrożenie, więc fakty z obu artykułów się nie mieszają.
Plik pasuje, gdy żaden interfejs nie jest dostępny albo wymiana ma być prosta. WMS nie potrzebuje wtedy dostępu do bazy ERP, a ERP do bazy WMS, bo obie strony widzą tylko uzgodniony zestaw pól.
Dwa kierunki plików
Operator wymienia z ERP klienta dwa rodzaje plików. Dostawy przychodzące tworzą w WMS zlecenia przyjęcia (ZPZ), a dostawy wychodzące zlecenia wydania z magazynu (ZWZ). Nazwa pliku niesie system, testowy albo produkcyjny, oraz kierunek wymiany. Resztę nazwy zajmują numer dostawy i znacznik czasu z datą oraz godziną.
Kanał wymiany ustala się osobno dla każdego klienta, bo w modelu 3PL każdy z kilku właścicieli towaru może mieć własny sposób przekazywania danych. Ten model opisuje strona o WMS dla operatorów logistycznych, a dokumenty, które powstają ze zleceń, strona o dokumentach magazynowych.
Zawartość plików zależy od kierunku. Plik przyjęcia identyfikuje paletę numerem SSCC, a plik wydania niesie dane transportu. Numer dostawy występuje w obu plikach, więc wiąże wiersze jednej dostawy. Zestawienie pokazuje, które pole występuje w którym pliku.
| Pole | Plik przyjęcia | Plik wydania |
|---|---|---|
| SSCC | tak | nie |
| Numer dostawy | tak | tak |
| Numer transportu | nie | tak |
| Kierowca | nie | tak |
| Numer auta | nie | tak |
| Planowana data i godzina załadunku | nie | tak |
| Indeks | tak | tak |
| Partia | tak | tak |
| Opis | tak | nie |
| Ilość | tak | tak |
| Jednostka | tak | tak |
| Magazyn | tak | tak |
SFTP z kluczem SSH zamiast hasła
Pliki leżą na serwerze SFTP klienta, a logowanie odbywa się parą kluczy SSH zamiast hasła. Klient zrezygnował wcześniej ze zwykłego FTP, więc wymiana przeszła na protokół szyfrowany.
Para kluczy składa się z klucza prywatnego i publicznego. Dostęp ma strona, która posiada klucz prywatny, a odebranie dostępu sprowadza się do usunięcia klucza publicznego z serwera. Zwykły FTP przesyła zawartość plików i dane logowania bez szyfrowania, a SFTP szyfruje całe połączenie.
Tabela pośrednia i dwa etapy importu
Zadanie cykliczne, czyli usługa w tle, pobiera pliki z serwera i usuwa je po przetworzeniu. Import składa się z dwóch etapów. W pierwszym wiersze pliku trafiają do tabeli pośredniej ze statusem 0. W drugim WMS wykonuje sprawdzenia i zapisuje dane w zleceniach, a wiersz dostaje status 1.
Rozdzielenie etapów ma praktyczny skutek. Po usunięciu pliku z serwera dane zostają w tabeli pośredniej razem z wynikiem kontroli. Zmiana statusu wiersza z 1 na 0 pozwala przegrać dane ponownie, bez ponownego pobierania pliku.
Dla serwisu status jest najkrótszą odpowiedzią na pytanie, dlaczego zlecenia nie ma w WMS. Wiersz ze statusem 0 czeka na sprawdzenia albo nie przeszedł ich pomyślnie, a przyczynę podaje wtedy kolumna błędu. Wiersz ze statusem 1 trafił już do zleceń.
Tabele pośrednie przechowują historię wymiany. Według stanu z sierpnia 2026 tabela przyjęć liczy ponad 2,3 mln wierszy, a tabela wydań ponad 0,5 mln.
Kontrole magazynu i indeksu
Przed zapisem do zleceń WMS wykonuje trzy sprawdzenia. Kod magazynu z pliku musi istnieć w skorowidzu magazynów, w kolumnie kodu importu. Indeks musi istnieć w kartotece tego magazynu. Kontrahent nie pochodzi z pliku, tylko z kartoteki asortymentu, więc indeks bez kontrahenta w kartotece kończy się błędem.
Błąd trafia do kolumny błędu w tabeli pośredniej, przy wierszu, którego dotyczy. Zestawienie opisuje komunikaty i ich przyczyny, a budowę samej kartoteki omawia strona o kartotece magazynowej.
| Typ | Komunikat | Przyczyna |
|---|---|---|
| ERR | Nieprawidłowy indeks | Indeksu z pliku nie ma w kartotece danego magazynu. |
| ERR | Brak identyfikatora kontrahenta | Z kartoteki asortymentu nie da się ustalić kontrahenta. |
| ERR | Brak kodu magazynu | Kodu magazynu z pliku nie ma w skorowidzu magazynów. |
| WAR | Indeks OP | Wiersz nie trafia na stan, a WMS zapisuje tylko ostrzeżenie. |
Indeksy pomijane przy imporcie
Plik klienta zawiera też wiersze, które nie są towarem. Indeksy z oznaczeniem OP oznaczają elementy dodatkowe, na przykład przekładki, i WMS nie przyjmuje ich na stan. Taki wiersz kończy się tylko ostrzeżeniem WAR, a nie błędem, a listę indeksów OP konfiguruje klient w roli kierownika magazynu.
Indeksy z oznaczeniem OP nie są przyjmowane na stan. Lista należy do klienta i zmienia się bez udziału programisty.
Mail z raportem błędów
Mail z raportem wychodzi do klienta tylko wtedy, gdy w imporcie wystąpi błąd typu ERR. Samo ostrzeżenie WAR nie uruchamia wysyłki. W raporcie błędy i ostrzeżenia leżą w osobnych sekcjach, więc indeks OP nie zasłania błędu, który wymaga reakcji.
Przyczynę odrzucenia pokazuje kolumna błędu w tabeli pośredniej. Dane, które przeszły już do zleceń, przegrywa się ponownie zmianą statusu z 1 na 0. Cofnięcie zlecenia, które trafiło do WMS, opisuje artykuł o wycofaniu zlecenia w WMS.
Potwierdzenie wydania z numerami palet
Po poprawnym imporcie wydania WMS zapisuje plik potwierdzenia, który wraca na serwer SFTP. Plik łączy numer dostawy i numer pozycji z numerem palety. Numery palet pochodzą z realizacji zlecenia na wózku, więc w pliku stoją palety, które operator faktycznie potwierdził. Plik wydania zawiera dane transportu, a potwierdzenie z numerami palet pokazuje klientowi, które palety wyjechały w której dostawie.
Podział pozycji wydania na palety pełne i końcówkę mix opisuje artykuł o wydaniu palet pełnych i mix, ale dotyczy on importu z arkusza Excel. Wymianę komunikatów EDI zamiast plików CSV opisujemy w tekście o integracji EDI z WMS przez SFTP, a pracę magazynu z wieloma właścicielami towaru pokazuje strona WMS dla operatora 3PL.
Pytania i odpowiedzi o wymianie CSV przez SFTP
Dlaczego SFTP z kluczem SSH, a nie FTP z hasłem?
Logowanie do serwera SFTP odbywa się parą kluczy SSH zamiast hasła. Klient zrezygnował wcześniej ze zwykłego FTP, więc wymiana plików przeszła na protokół szyfrowany.
Co dzieje się z plikiem po imporcie?
Zadanie cykliczne usuwa plik z serwera po przetworzeniu. Po poprawnym imporcie wydania na serwer wraca plik potwierdzenia, w którym każdej pozycji dostawy odpowiada numer palety.
Kto dostaje mail z błędami?
Mail z raportem dostaje klient, gdy w imporcie wystąpi błąd typu ERR. Samo ostrzeżenie WAR nie uruchamia wysyłki, a raport pokazuje błędy i ostrzeżenia w osobnych sekcjach.
Jak ponowić import poprawionych danych?
Wiersz w tabeli pośredniej ma status 0 po skopiowaniu z pliku i status 1 po zapisie do zleceń. Zmiana statusu z 1 na 0 pozwala przegrać dane ponownie, a przyczynę odrzucenia wskazuje kolumna błędu w tej samej tabeli.
Czym są indeksy OP?
To indeksy z oznaczeniem OP, czyli elementy dodatkowe, na przykład przekładki. WMS nie przyjmuje ich na stan, a wiersz z takim indeksem daje tylko ostrzeżenie WAR. Listę konfiguruje klient w roli kierownika magazynu.
Słownik pojęć o wymianie CSV przez SFTP
Terminy używane przez dział IT i kierownika projektu, gdy WMS wymienia z ERP klienta pliki przez serwer SFTP.
- SFTP
- Protokół przesyłania plików przez szyfrowane połączenie SSH. Służy jako skrzynka, na której ERP klienta zostawia pliki zleceń, a WMS pliki potwierdzeń.
- Klucz SSH
- Para złożona z klucza prywatnego i publicznego, którą strona łącząca się z serwerem SFTP stosuje zamiast hasła. Dostęp odbiera się usunięciem klucza publicznego z serwera.
- Tabela pośrednia
- Tabela w bazie WMS, do której najpierw trafiają wiersze pliku. Przechowuje status wiersza, a w kolumnie błędu przyczynę odrzucenia.
- Indeks OP
- Indeks elementu dodatkowego, na przykład przekładki, którego WMS nie przyjmuje na stan. Wiersz z takim indeksem daje tylko ostrzeżenie WAR.
- Awizacja
- Zapowiedź dostawy albo załadunku przed przyjazdem transportu. W pliku wydania zapowiedź niesie numer transportu i planowaną datę załadunku.
- Zadanie cykliczne
- Usługa w tle uruchamiana w ustalonych odstępach. Pobiera pliki z serwera SFTP i usuwa je po przetworzeniu.
- ERR i WAR
- Dwa typy komunikatów importu. ERR oznacza błąd i uruchamia mail z raportem, a WAR ostrzeżenie, które samo wysyłki nie powoduje.
Opisz nam swój kanał wymiany
Podaj, w jakim formacie Twoje ERP zapisuje pliki i czy ma serwer SFTP, a przygotujemy propozycję układu pliku i kontroli importu.
