ERP planuje i rozlicza, MES wykonuje i raportuje przebieg na hali. Integracja SAP Business One z MES polega najpierw na uzgodnieniu, które dane ma który system i kto je zapisuje. Dopiero potem wybiera się technikę połączenia.
Piszę jako inżynier produkcji, który zbudował panel czytający jednocześnie SAP Business One i system MES jednego klienta, Kocher+Beck Polska. Nie podaję nazwy ani producenta MES, a opisane zasady dotyczą dowolnego systemu, który trzyma dane w bazie SQL albo udostępnia API. Co mam wdrożone, oznaczam jako dowód. Czego nie mam, oznaczam jako ofertę.
Kto jest właścicielem jakich danych?
Każdy rodzaj danych powinien mieć jednego właściciela, który go tworzy i zmienia. Drugi system tylko go czyta. Zwykle ERP trzyma wyrób, strukturę i zamówienie klienta, a MES trzyma to, co dzieje się na hali: kolejkę, potwierdzenia operacji i czasy. Konkretny podział ustala się w firmie, dokumentacja żadnego z systemów go nie rozstrzyga.
Ramę do tej rozmowy daje norma ISA-95, międzynarodowo także jako IEC 62264. Według strony ISA to zestaw standardów do integracji systemów logistyki i systemów sterowania produkcją, który opisuje wymianę informacji między funkcjami sterowania produkcją a funkcjami biznesowymi. W modelu poziomów systemy typu MES leżą na poziomie 3 (zarządzanie operacjami produkcyjnymi), a planowanie biznesowe z ERP na poziomie 4. Norma dotyczy przede wszystkim styku tych dwóch poziomów. Jej część 2 opisuje obiekty i atrybuty integracji, a część 5 transakcje między biznesem a produkcją. Treści samej normy nie cytuję, bo jej nie czytałem; opieram się na opisie ze strony ISA. Korzystam z niej jako ze wspólnego języka dla zespołów IT i produkcji.
Poniższa tabela to moja propozycja robocza do uzgodnienia w firmie.
| Dane | Zwykły właściciel | Kto czyta | Pytanie do uzgodnienia |
|---|---|---|---|
| Wyrób i struktura (BOM) | ERP albo CAD, zależnie od firmy | MES, panel | Gdzie powstaje nowa wersja struktury i kto ją zatwierdza? |
| Marszruta i gniazda | ERP albo MES | Drugi system, panel | Czy gniazda w obu systemach mają ten sam kod? |
| Zamówienie klienta i termin obiecany | ERP | MES, panel | Kto może zmienić termin po wydaniu zlecenia na halę? |
| Zlecenie produkcyjne | ERP albo MES | Drugi system, panel | Który numer jest numerem nadrzędnym? |
| Potwierdzenia operacji i czasy | MES | ERP, panel | Czy ERP ma je dostać, czy wystarczy panel? |
| Stany materiałów | ERP | MES, panel | Jak często się odświeżają i kto je koryguje? |
SAP Business One ma własne obiekty produkcyjne. Dokument SAP o Service Layer wylicza wśród tabel dostępnych dla zapytań SQL m.in. struktury produktów (receptury), zlecenia produkcyjne, zasoby i etapy marszruty. Jeśli firma ich nie używa, bo planowanie i wykonanie żyją w MES, to w SAP zostaje tylko część finansowa i handlowa. Odwrotna sytuacja wymaga zupełnie innej integracji. Zanim wybierzesz technikę, ustal, który z tych dwóch układów masz.
Jakie są cztery wzorce integracji z MES?
Cztery wzorce to: API systemu MES, odczyt jego bazy danych, wymiana plików albo kolejki oraz panel obok obu systemów, który tylko czyta. Wybór zależy od tego, co udostępnia producent MES, co pozwala umowa z nim i czy dane mają wracać do ERP, czy tylko trafić do raportu.
| Wzorzec | Kiedy ma sens | Ryzyko |
|---|---|---|
| API MES | MES udostępnia interfejs, a umowa pozwala go używać. | Limity wywołań, wersje interfejsu, brak niektórych danych. |
| Baza MES | Brak API albo API nie daje potrzebnych danych. | Blokady i obciążenie bazy, zmiany struktury po aktualizacji MES, zgoda dostawcy. |
| Plik lub kolejka | MES zapisuje eksport albo komunikaty, bez dostępu do bazy. | Opóźnienie, utrata komunikatu, ręczny krok. |
| Panel obok | Ludzie potrzebują jednego widoku bez zmiany procesu w systemach. | Panel staje się trzecim źródłem prawdy, jeśli nie wskaże, skąd bierze liczbę. |
W panelu dla Kocher+Beck Polska użyłem wzorca „baza MES” z panelem obok. Jeśli Twój MES ma API, które daje potrzebne dane, wybieram API, bo to droga najbezpieczniejsza dla systemu źródłowego.
Jak czytać z bazy MES bez blokad?
Czytam krótkimi zapytaniami o ograniczonym zakresie, z limitem czasu, pod własną nazwą sesji, a cięższe zapytania uruchamiam po godzinach. Co dokładnie znaczy „bez blokad”, zależy od silnika bazy. Jeśli MES działa na SQL Server, zakres blokad wynika z poziomu izolacji transakcji i wersjonowania wierszy, opisanych w dokumentacji Microsoft, a decyzję zapisuję po diagnozie. Zawsze potrzebna jest zgoda właściciela systemu, a często także dostawcy.
Krótkie zapytania o ograniczonym zakresie
Panel nie pobiera całych tabel. Każde zapytanie ma filtr po dacie lub numerze zlecenia i górny limit liczby wierszy. Dzięki temu pojedyncze odświeżenie nie konkuruje z systemem o zasoby na dłużej niż ułamek sekundy. Limit czasu po stronie klienta zrywa zapytanie, które trwa dłużej, zamiast czekać na nie bez końca.
Własna nazwa sesji
Aplikacja podpisuje swoje połączenia własną nazwą. Administrator widzi ją w monitoringu serwera bazy i od razu wie, które sesje pochodzą z panelu. To drobiazg, który oszczędza godziny, kiedy ktoś zgłasza spowolnienie systemu i trzeba wykluczyć albo potwierdzić panel.
Cięższe zapytania po godzinach
Raporty, które przeglądają dłuższą historię, uruchamiam w uzgodnionych oknach, poza szczytem pracy hali. Zakres i godziny ustalam z IT firmy przed startem i spisuję w zakresie odczytów.
Zgoda właściciela systemu i dostawcy
Umowa z dostawcą MES może ograniczać bezpośredni dostęp do bazy. Sprawdzam to przed pierwszym zapytaniem. Jeśli umowa zabrania, wybieram inny wzorzec albo mówię, że integracji nie obiecuję. Nie zakładam, że techniczna możliwość oznacza prawo.
Jak zapisywać do MES, żeby nie zepsuć jego danych?
Zapisuję wyłącznie przez własne procedury w osobnym schemacie. Procedury odtwarzają numerację i skutki uboczne zgodnie z regułami systemu, więc dokument z panelu powstaje tak, jak z samego MES. Tabel systemu producenta nie zmieniam, bo nie znam wszystkich zależności, które producent pilnuje w swoim kodzie.
Status: procedury zapisu są wdrożone u jednego klienta. Faktyczne użycie zapisów przez dział handlowy jest niepotwierdzone.
Jak wygląda odczyt SAP Business One w takim układzie?
SAP Business One czytam przez Service Layer wyłącznie metodami GET, ze wspólnym limitem równoległych żądań, żeby panel nie obciążał systemu finansowego. Drogi do danych SAP, ich ograniczenia i pułapki stronicowania opisałem w artykule Integracja z SAP Business One: Service Layer, DI API, SQL.
Efektem połączenia dwóch systemów jest ekran uzgodnienia. Zamówienia z MES i sprzedaż z faktur SAP liczą różne zdarzenia (złożenie zamówienia i wystawienie faktury), więc nie muszą być równe. Ekran pokazuje obie liczby obok siebie i dokumenty, z których powstała różnica. Raport sprzedaży po odbiorcy odwzorowany w panelu zgadza się z SAP co do grosza w sześciu ustawieniach raportu, co sprawdziłem czterema niezależnymi drogami (stan: wrzesień 2026, bez kwot).
Czy mogę zapisywać z MES do SAP Business One?
Service Layer ma metody zapisu, więc technicznie to możliwe, ale w żadnym wdrożeniu zapisu do SAP nie robiłem i nie opisuję go jako rozwiązania. Zapis do systemu finansowego wymagałby osobnej decyzji, testów na kopii, ustalenia właściciela błędu i osobnej bramki. W dokumencie SAP o Service Layer nie znalazłem opisu potwierdzania produkcji z zewnętrznego systemu do SAP Business One (nazwy zleceń produkcyjnych występują tam tylko w aneksie z nazwami kolekcji), więc takiego rozwiązania nie przedstawiam.
Gdy firma tego potrzebuje, zaczynam od pytania, czy ten zapis jest naprawdę konieczny. Czasem wystarczy, że kierownik hali widzi stan produkcji w panelu, a ERP dostaje podsumowanie raz dziennie od osoby, która i tak je przygotowuje.
Jakie pułapki spotyka się przy takiej integracji?
- Zapytanie raportowe uruchomione w szczycie potrafi spowolnić halę. Dlatego limity i okna spisuję przed startem.
- Gniazdo, wyrób lub kontrahent mają w dwóch systemach różne kody. Tabela mapowania ma właściciela, który ją aktualizuje.
- Zapis obok systemu bez odtworzenia numeracji tworzy dokumenty, które system uzna za obce.
- Gdy dane nie zgadzają się z rzeczywistością, ktoś musi wiedzieć, który system jest wzorcem. Wpisuję to do zakresu.
- Zmiana struktury bazy po aktualizacji MES może zepsuć zapytanie. Monitoring zgłasza, że zapytanie przestało działać, zamiast pokazywać puste liczby.
- Warunki dostępu do bazy i API wynikają z umów z dostawcami. Ta strona ich nie zastępuje.
Jak wygląda start takiej integracji?
Zaczynam od diagnozy: mapa systemów, droga dostępu do każdego z nich, właściciele danych i jedna liczba do poprawienia. Potem próba na kopii, w której porównuję wynik z systemem źródłowym i z niezależnym zapytaniem. Dopiero po zgodzie przechodzę do wdrożenia. Każdy krok ma bramkę, opisaną na stronie Integracje SAP, MES i CAD.
Efektu panelu dla Kocher+Beck Polska przed i po nie mierzyłem. Część modułów pracuje na serwerze firmy od września 2026 r., część jest zbudowana. Pełny opis znajdziesz w studium przypadku.
Z podobnym podziałem ról wdrażam dodatek do Autodesk Inventor, który tworzy dokumentację z parametrów zamówienia. O tym kierunku integracji piszę w artykule Autodesk Inventor i ERP: BOM do SAP i modele z zamówienia.
Najczęstsze pytania
Czy MES zastępuje ERP albo odwrotnie?
Nie. ERP planuje i rozlicza, MES wykonuje i raportuje przebieg na hali. W modelu ISA-95 systemy typu MES leżą na poziomie 3, a planowanie biznesowe z ERP na poziomie 4. Systemy zostają obok siebie, a integracja polega na uzgodnieniu, który z nich jest właścicielem jakich danych.
Jak MES zapisuje do ERP bez dublowania danych głównych (BOM, marszruty, gniazda)?
Każda dana główna ma jednego właściciela. Drugi system ją czyta i trzyma tabelę zgodności kodów, na przykład gniazd, z osobą odpowiedzialną za jej aktualizację. Zapis z MES do ERP wymaga osobnej decyzji. Zapisu do SAP Business One w żadnym wdrożeniu nie robiłem.
Czy czytanie z bazy MES może go spowolnić?
Może, jeśli zapytania są ciężkie albo szerokie. Dlatego czytam krótkimi zapytaniami o ograniczonym zakresie, z limitem czasu i pod własną nazwą sesji, a cięższe raporty uruchamiam po godzinach. Co oznacza „bez blokad”, zależy od silnika bazy i sprawdzam to w jego dokumentacji. Zgodę właściciela systemu uzyskuję przed startem.
Czy można zapisywać do bazy MES z własnej aplikacji?
Tylko przez własne procedury w osobnym schemacie, które odtwarzają numerację i skutki uboczne zgodnie z regułami systemu. Tabel systemu producenta nie zmieniam. Procedury zapisu wdrożyłem u jednego klienta, a faktyczne użycie zapisów przez dział handlowy jest niepotwierdzone. Umowa z dostawcą MES może zapis ograniczać.
Czy do integracji z SAP Business One potrzebny jest dodatek?
Nie zawsze. Odczyt danych SAP Business One do panelu realizuję przez Service Layer, bez dodatku do SAP. Dodatek jest potrzebny, gdy trzeba zmienić zachowanie okna SAP. Drogi porównuję w osobnym artykule o Service Layer i DI API.
Czego potrzebuję po stronie IT na start?
Konta do odczytu SAP i MES, adresu Service Layer, kopii lub bazy testowej, informacji o strukturze bazy MES (od dostawcy albo za jego zgodą), limitu równoległych żądań i uzgodnionych okien na cięższe zapytania. Do tego właściciela procesu po Twojej stronie, który rozstrzygnie, która liczba jest właściwa.
Źródła i aktualność
Stan dokumentacji sprawdziłem 3 listopada 2026. Datę tę zmieniam tylko wtedy, gdy zmieniam treść artykułu. Wersje oprogramowania mogą się różnić od opisanych w źródłach, więc przed decyzją sprawdź dokumentację swojej wersji.
- ISA, „ISA-95 Standard: Enterprise-Control System Integration”. Dostęp: 3 listopada 2026.
- SAP, „Working with SAP Business One Service Layer”, User Guide, wersja 1.29 z 27 lipca 2026 (PDF). Dostęp: 3 listopada 2026.
- Microsoft Learn, „Transaction locking and row versioning guide” (SQL Server). Dostęp: 3 listopada 2026.
Masz MES i SAP Business One, które nie rozmawiają ze sobą?
Umów 30 minut i opisz MES, bazę oraz jeden przepływ między halą a ERP. Pierwsza rozmowa jest bezpłatna. Powiem, jaką drogą dostępu bym poszedł i co sprawdziłbym w pierwszej próbie na kopii.