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.

PolePlik przyjęciaPlik wydania
SSCCtaknie
Numer dostawytaktak
Numer transportunietak
Kierowcanietak
Numer autanietak
Planowana data i godzina załadunkunietak
Indekstaktak
Partiataktak
Opistaknie
Ilośćtaktak
Jednostkataktak
Magazyntaktak

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.

Schemat wymiany plików CSV między ERP klienta a WMS przez serwer SFTP: import w dwóch etapach i potwierdzenia
Górny rząd schematu pokazuje import w dwóch etapach, a dolny potwierdzenia wracające do ERP klienta. Przerywana linia prowadzi od kontroli do maila z błędami ERR.

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.

TypKomunikatPrzyczyna
ERRNieprawidłowy indeksIndeksu z pliku nie ma w kartotece danego magazynu.
ERRBrak identyfikatora kontrahentaZ kartoteki asortymentu nie da się ustalić kontrahenta.
ERRBrak kodu magazynuKodu magazynu z pliku nie ma w skorowidzu magazynów.
WARIndeks OPWiersz 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.