# Jak sprawnie połączyć aplikację z systemem SAP?

> Jak połączyć aplikację .NET z systemem SAP - SAP Connector wywołuje funkcje RFC i BAPI, symuluje zlecenia sprzedaży oraz spina system WMS z modułem MM.

Adres strony: https://magazyn.softwarestudio.com.pl/jak-sprawnie-polaczyc-aplikacje-z-systemem-sap/

---

SAP Connector upraszcza komunikację aplikacji .NET z systemem SAP, umożliwiając programistom łatwe wywoływanie zdalnych funkcji RFC i BAPI bez zagłębiania się w skomplikowane protokoły. Dzięki temu wdrożenie integracji WMS z modułem MM przebiega szybciej i sprawniej.
## Trzy funkcje konektora

Biblioteka SAP RFC Connector pozwala aplikacjom .NET wywoływać zdalne funkcje w systemie SAP protokołem RFC. Nakładka SoftwareStudio sprowadza całość do trzech operacji - reszta to konfiguracja i obsługa wyniku.

| Operacja | Do czego służy | Co zwraca |
| --- | --- | --- |
| Testowanie połączenia | sprawdzenie, czy dane autoryzacyjne i trasa do serwera są poprawne | status połączenia |
| Odczytywanie parametrów funkcji | dynamiczne ustalenie, jakie dane wejściowe i wyjściowe obsługuje funkcja | listę parametrów z typami |
| Wykonywanie funkcji | właściwe wywołanie z przekazaniem parametrów | struktury, tabele i komunikaty |

Parametry mogą mieć różne typy - najczęściej STRING, TABLE albo STRUCTURE. Ponieważ struktura funkcji jest dynamiczna, drugą operację warto wykonać przed pierwszym wywołaniem nowej funkcji, zamiast zgadywać nazwy pól.

## Biblioteki i sposoby nawiązania połączenia

Konektor zaimplementowano w usłudze WebService StudioSystemST, więc wywołuje się go z dowolnego miejsca, przekazując odpowiednie parametry. Do uruchomienia potrzebne są referencje do trzech bibliotek:

- SapConnector.dll - nakładka SoftwareStudio upraszczająca wywołania,
- sapnco.dll - podstawowa biblioteka SAP .NET Connector,
- sapnco_utils.dll - biblioteka pomocnicza wymagana przez sapnco.

Samo połączenie można nawiązać na trzy sposoby, a każdy wymaga innego kompletu danych:

| Sposób połączenia | Kiedy stosowany | Wymagane dane |
| --- | --- | --- |
| Bezpośrednio z serwerem | aplikacja i SAP w tej samej sieci | host serwera, numer instancji, klient, użytkownik |
| Przez SapRouter | połączenie przez granicę sieci | ciąg trasy SapRoutera plus dane serwera |
| Przez SapGateway | wywołanie kierowane przez bramę | host i usługa bramy plus dane autoryzacyjne |

## Droga wywołania z aplikacji do SAP

Warto mieć przed oczami całą ścieżkę, bo błędy integracyjne najczęściej biorą się z pomylenia warstw - problem z autoryzacją wygląda inaczej niż błąd samej funkcji w SAP.

Konektor obsługuje również konwersję zapytań SOAP: zamiast budować rozbudowane zapytanie, przekazuje się słownik parametrów. Kod jest wtedy krótszy, a zmiana sygnatury funkcji po stronie SAP nie wymaga przepisywania całej warstwy komunikacyjnej.

## Funkcje BAPI wykorzystywane w magazynie

BAPI (Business Application Programming Interface) to standardowe funkcje SAP przeznaczone do wywoływania z zewnątrz. Przy integracji WMS z modułem MM najczęściej wracają trzy z nich. Zanim wywołasz je z aplikacji, sprawdź ich sygnatury w transakcji SE37 - pokazujemy to krok po kroku w materiale o tym, jak [odczytywać i wykonywać funkcje w systemie SAP](/jak-odczytywac-i-wykonywac-funkcje-w-systemie-sap/).

| Funkcja | Do czego służy | Istotne parametry |
| --- | --- | --- |
| BAPI_GOODSMVT_CREATE | księgowanie ruchów towarowych w module MM | GOODSMVT_HEADER, GOODSMVT_CODE, GOODSMVT_ITEM |
| BAPI_MATERIAL_GETLIST | wyszukanie listy materiałów według kryteriów | MATNRSELECTION, PLANTSELECTION, MATNRLIST |
| BAPI_MATERIAL_GET_DETAIL | pobranie szczegółów pojedynczego materiału | MATERIAL, PLANT, VALUATIONAREA |

Pierwsza z nich zapisuje dane, dwie pozostałe tylko czytają. To rozróżnienie ma praktyczne znaczenie, opisane w następnej sekcji.

## BAPI_GOODSMVT_CREATE i pułapka z commitem

Funkcja księguje ruchy towarowe w module Zarządzania Materiałami: przyjęcia, wydania z magazynu oraz przesunięcia międzymagazynowe. Wywołanie wygląda tak:

1. Wypełnienie nagłówkaStruktura GOODSMVT_HEADER niesie ogólne dane dokumentu materiałowego, na przykład datę księgowania.
2. Wskazanie rodzaju ruchuParametr GOODSMVT_CODE określa rodzaj operacji - przykładowo kod 03 dla wydań towarów.
3. Wypełnienie pozycjiTabela GOODSMVT_ITEM zawiera numer materiału, ilość, jednostkę miary, zakład i miejsce składowania.
4. Odczyt wynikuSystem zwraca rezultat w tabeli RETURN, a po udanym księgowaniu - numer nowego dokumentu materiałowego.
5. Zatwierdzenie transakcjiBezpośrednio po BAPI_GOODSMVT_CREATE trzeba wywołać BAPI_TRANSACTION_COMMIT. Bez tego kroku operacja zostanie cofnięta.

Ostatni punkt jest najczęstszą przyczyną zgłoszeń typu „funkcja zwraca numer dokumentu, ale w SAP nic nie ma". Numer pochodzi z bufora transakcji, a bez zatwierdzenia bufor jest odrzucany.

Studio WMS.net - dashboard operacyjny

Ekran główny Studio WMS.net prezentuje aktualny stan operacji magazynowych w formie trzech wykresów. Dwa wykresy kołowe pokazują rozkład zleceń według statusu (5374 zrealizowanych, 1104 anulowanych, 168 do realizacji, 18 w buforze) oraz strukturę typów dokumentów magazynowych (PZ, WZ, PZB, WZB, ZPZ, ZWZ i inne). Wykres słupkowy prezentuje top 10 kontrahentów z największą liczbą obsługiwanych palet. Menu główne zawiera sekcje NOWY, MAGAZYN, KARTOTEKI i INFORMACJE. Widoczna wersja systemu v2026.1.4.9500.

## Z_WS_SALESORDER_SIMULATE - symulacja zlecenia

Sama nazwa funkcji mówi o niej wszystko, bo składa się z trzech czytelnych członów:

- Z_ - prefiks obiektu niestandardowego, stworzonego na potrzeby konkretnego wdrożenia, a nie dostarczonego z systemem.
- WS_ - obiekt wystawiony jako Web Service, przeznaczony do komunikacji z systemami zewnętrznymi.
- SALESORDER_SIMULATE - symulacja procesu tworzenia zlecenia sprzedaży.

To funkcja opakowująca (wrapper) standardową logikę SAP, która pozwala sprawdzić, co by się stało, gdyby zlecenie o określonych parametrach powstało - bez zapisywania czegokolwiek w bazie. W odróżnieniu od funkcji CREATE, SIMULATE wykonuje procesy w tle i zwraca ich wyniki:

| Proces | Co sprawdza | Po co przy integracji |
| --- | --- | --- |
| ATP - Available-to-Promise | stany i planowane przyjęcia oraz wydania | czy i kiedy ilość będzie dostępna do wysyłki |
| Determinacja ceny | schemat kalkulacyjny: ceny, rabaty, podatki, wysyłka | pokazanie kwoty przed złożeniem zamówienia |
| Kompletność danych | czy przekazany zestaw wystarcza do utworzenia zlecenia | wyłapanie braków po stronie systemu wywołującego |
| Dane logistyczne | zakład wysyłkowy, trasa transportowa, terminy dostawy | przewidzenie sposobu realizacji |

W praktyce takie wywołanie stoi za komunikatem o dostępności i cenie w sklepie internetowym albo w aplikacji mobilnej - klient widzi wynik symulacji, zanim cokolwiek zostanie zapisane.

Studio WMS.net - wizualizacja układu magazynu

Moduł Wizualizacja w sekcji Magazyn Studio WMS.net prezentuje graficzny rzut z góry na układ magazynu z zaznaczonymi regałami, strefami i lokalizacjami składowania. Kolory wskazują poziom zajętości: zielony - lokalizacja wolna, żółty - częściowo zajęta, czerwony - pełna lub zablokowana. Kliknięcie na lokalizację otwiera panel z aktualnym asortymentem i ilościami. Wizualizacja ułatwia zarządzanie przestrzenią, planowanie przesunięć konsolidacyjnych oraz szybkie zlokalizowanie towaru bez konieczności przeglądania list.

## Od czego zacząć integrację

Kolejność prac jest za każdym razem taka sama i warto jej nie skracać - każdy krok odsiewa inną klasę błędów.

1. Konfiguracja autoryzacjiDane dostępowe, klient SAP i sposób połączenia: bezpośrednio, przez SapRouter albo SapGateway.
2. Test połączeniaZanim zaczniesz wywoływać funkcje, potwierdź samo połączenie. Błąd na tym etapie jest sprawą sieci i uprawnień, nie kodu.
3. Odczyt parametrów funkcjiSprawdź, jakie pola wejściowe i wyjściowe funkcja faktycznie obsługuje w tej instalacji SAP.
4. Wywołanie na środowisku testowymFunkcje zapisujące uruchamiaj najpierw tam, gdzie skutki da się cofnąć.
5. Obsługa tabeli RETURNKomunikaty z RETURN trzeba czytać i logować - to jedyne miejsce, w którym SAP tłumaczy, dlaczego operacja się nie powiodła.

O tym, jak integracja WMS z SAP wygląda po stronie magazynu - już nie w kodzie, tylko w pracy hali - piszemy w artykule [WMS a SAP](/wms-a-sap/).

Studio WMS.net - lista dokumentów przyjęcia

Sekcja Przyjęcia w module Magazyn Studio WMS.net agreguje wszystkie dokumenty przyjęcia towaru: standardowe PZ (Przyjęcie Zewnętrzne) realizowane na podstawie wcześniejszego zlecenia ZPZ oraz PZB (Przyjęcie Zewnętrzne Bezpośrednie) bez zlecenia. Lista zawiera numer dokumentu, kontrahenta, datę przyjęcia, liczbę pozycji i aktualny status realizacji. Filtrowanie umożliwia szybkie odnalezienie konkretnego przyjęcia po numerze dostawcy, asortymencie lub przedziale czasowym. Podgląd szczegółów otwiera pełne zestawienie pozycji z ilościami i lokalizacjami odłożenia.

## Słownik pojęć: integracja aplikacji z SAP

Biblioteka zaimplementowana w WebService StudioSystemST, która upraszcza wywoływanie zdalnych funkcji RFC i BAPI z aplikacji .NET bez znajomości niskopoziomowych protokołów SAP.

Protokół komunikacyjny SAP wykorzystywany przez SAP Connector do odczytu i zapisu danych oraz wywoływania zdalnych funkcji w systemie.

Business Application Programming Interface - standardowy interfejs programistyczny SAP do realizacji operacji biznesowych, np. księgowania ruchów towarowych czy pobierania danych materiałowych.

Niestandardowy web service (prefiks Z_, WS_) symulujący utworzenie zlecenia sprzedaży bez trwałego zapisu w bazie danych SAP.

Sprawdzenie dostępności towaru na podstawie stanów magazynowych oraz planowanych przyjęć i wydań, wykonywane m.in. podczas symulacji zlecenia sprzedaży.

Funkcja księgująca ruchy towarowe w module MM, wywoływana przez Studio WMS.net m.in. przy przyjęciach (kod ruchu 101) i wydaniach towaru (kod ruchu 601).

Funkcja, którą trzeba wywołać bezpośrednio po BAPI_GOODSMVT_CREATE, aby trwale zapisać zaksięgowany ruch towarowy w bazie danych SAP.

Moduł SAP odpowiedzialny za zarządzanie materiałami, z którym magazyn synchronizuje dane za pośrednictwem konektora RFC.

## Pytania i odpowiedzi o integracji aplikacji z SAP
