Odkrycie możliwości automatyzacji SAP było dla mnie prawdziwym “objawieniem”. Odkąd pamiętam, szukałem w swojej pracy zawodowej możliwości automatyzacji procesów. Wszystko zaczęło się od szkolenia VBA, które otworzyło mi możliwości na automatyzowanie Excela, jeszcze jako specjalista ds. planowania produkcji. Cała ta droga, to być może temat na osobny wpis.
W każdym razie, będąc już kierownikiem odpowiedzialnym za cały proces planowania produkcji, miałem wrażenie, że po stronie Excela “zautomatyzowaliśmy wszystko, co się rusza”. I właśnie wtedy na jednej z ostatnich edycji Konferencji Lean Management “I ❤️ Lean” organizowanej przez Lean Enterprise Institute Polska (swoją drogą serdecznie polecam te konferencje) usłyszałem o tzw. RPA (ang. Robotic Process Automation). To zainspirowało mnie do zgłębienia tematu automatyzacji poza samym Excelem.
W efekcie natknąłem się na materiały pokazujące w jaki sposób można zautomatyzować pracę z SAP-em za pomocą języka VBS lub Python. Jak tylko przekonałem się, że “to działa!” – rozpocząłem swoją przygodę z automatyzowaniem powtarzalnych czynności wykonywanych przez mój świetny zespół w systemie SAP. W ten właśnie sposób przez ostatnich kilka miesięcy (od jesieni 2024 do czerwca 2025) powstało kilkanaście mniejszych lub większych projektów, które znacznie skracają czas oraz pozwalają skoncentrować się na tym, co najważniejsze.
Automatyzacja SAP – od czego zacząć?
W tym wpisie – pierwszym z czterech poświęconych automatyzacji SAP – przedstawię podstawy pracy z SAP GUI Scripting. Dowiesz się, jak nagrywać i uruchamiać skrypty automatyzujące.
W kolejnej części tej mini serii przejdziemy już krok dalej. Pokażę Ci jak budować z tych skryptów nieco bardziej złożone programy. Posłużę się tutaj przykładem narzędzia, nad którym pracowałem na samym początku swojej przygody z automatyzacją SAP-a. Jest to prosty program, który za pomocą “jednego kliknięcia”:
- uruchamia system SAP,
- otwiera zdefiniowaną ilość transakcji oraz
- wczytuje określone warianty w tych transakcjach.
Pozwala więc szybko i sprawnie rozpocząć pracę. Wykorzystywane jest przez mój zespół do dzisiaj. W kolejnych częściach pokażę Ci jak pracować na kilku oknach SAP-a jednocześnie, a także w jaki sposób połączyć automatyzację SAP z automatyzacjami zbudowanymi w VBA.
Myślę, że ta seria może być szczególnie wartościowa dla:
- użytkowników SAP, którzy codziennie wykonują wiele powtarzalnych czynności,
- osób odpowiedzialnych za automatyzowanie procesów biznesowych,
- managerów, którzy szukają inspiracji i chcą zrozumieć, jakie możliwości daje automatyzacja operacji w SAP-ie.
Zaznaczam też, że nie jest to pełnowymiarowy kurs programowania, a niektóre prezentowane przykłady będą uproszczone tak, żeby miały jak największą wartość dydaktyczną. Staram się, aby treści były przystępne dla każdego — nawet dla osób, które nie mają doświadczenia programistycznego.
Jeśli jednak temat automatyzacji SAP zainteresuje Cię na tyle, że chciałbyś rozwijać swoje kompetencje techniczne — warto będzie sięgnąć do dodatkowych źródeł i poznawać dobre praktyki kodowania.
Dlatego, jeśli dopiero zaczynasz i nie masz doświadczenia w programowaniu, polecam Ci moją mini-serię kursów wprowadzających:
- Nauka VBA z AI – idealne na start, jeśli chcesz szybko tworzyć własne makra i usprawniać codzienną pracę.
- Nauka Pythona z AI – świetny wybór, jeśli myślisz o bardziej zaawansowanej automatyzacji i integracji z SAP w przyszłości.
To dobry punkt startowy, który pomoże Ci złapać podstawy i pewniej wejść w świat automatyzacji SAP.
Czym jest SAP GUI Scripting?
SAP GUI (ang. Graphical User Interface) Scripting to technologia, która pozwala na stworzenie programu komputerowego odtwarzającego interakcje użytkownika z systemem SAP. Innymi słowy — program może “kliknąć” w SAP dokładnie tak samo, jak robisz to Ty.
Możesz więc na przykład:
- wypełnić pole danymi,
- kliknąć dowolny przycisk,
- przewinąć tabelę (np. z wynikami zapytania lub miejscem do wprowadzania danych).
I tak naprawdę — w większości przypadków — Twoja codzienna praca operacyjna w SAP sprowadza się właśnie do tych trzech czynności, które wykonujesz z określoną logiką. Niezależnie od tego, czy pracujesz w dziale księgowości, sprzedaży, planowania czy logistyki — mechanizm jest zawsze podobny.
A skoro istnieje logika, którą powtarzasz, to można ją odtworzyć w formie programu komputerowego.
Oczywiście — czasem logika ta może być bardziej złożona, a wdrażanie automatyzacji nie zawsze będzie miało sens (np. gdy operacje są zbyt unikalne lub nieregularne). Ale w ogromnej liczbie przypadków — automatyzacja powtarzalnych czynności daje konkretne, wymierne korzyści.
Kiedy to działa, a kiedy nie?
Trzeba jednak pamiętać, że SAP GUI Scripting nie jest technologią “magiczną”. Ma swoje ograniczenia i warto je znać.
Przede wszystkim należy nadmienić, że taki skrypt nie może działać w tle (ang. background processing) – działa on na pierwszym planie z widoczną interakcją graficznego interfejsu użytkownika. Ale nic też nie stoi na przeszkodzie, aby okno z SAP-em podczas pracy skryptu było zminimalizowane.
Sam program może być podatny na błędy – zależy od rozmieszczenia elementów na ekranie (ang. screen layout) oraz np. okienek z wiadomościami (ang. pop-up messages) wysyłanych przez SAP-a do użytkownika. Mogą one spowodować, że skrypt się zatrzyma lub “zgubi”. Z tego względu bardziej złożone programy muszą mieć dobrze przemyślaną obsługę błędów (ang. error handling) oraz trzeba je dobrze przetestować przed wdrożeniem do codziennej pracy.
Kluczowym wymaganiem technicznym jest włączenie skryptów zarówno na kliencie, jak i na serwerze (można to sprawdzić w opcjach SAP GUI – wszystko pokażę w części praktycznej wpisu).
Dlaczego warto się tym zainteresować?
Pomimo tych ograniczeń — SAP GUI Scripting jest jednym z najprostszych i najszybszych sposobów na automatyzowanie powtarzalnych czynności w SAP. Nie wymaga specjalnych dostępów do baz danych ani zaawansowanej infrastruktury IT. Działa “od ręki”, niemal wszędzie tam, gdzie masz dostęp do SAP GUI.
I właśnie dlatego od tej technologii zaczniemy.
Nagraj swój pierwszy skrypt automatyzujący SAP – część praktyczna
Nagrywanie skryptów w SAP-ie działa analogicznie do nagrywania makr VBA. Jeśli miałeś styczność z VBA w Excelu, z pewnością odnajdziesz się w SAP GUI Scripting. Wygląda to mniej więcej tak:
- Uruchamiamy nagrywanie skryptu (oraz wybieramy lokalizację, w której ma zostać zapisany).
- Wykonujemy w SAP-ie czynności, które mają zostać zarejestrowane w naszym skrypcie.
- Zatrzymujemy nagrywanie.
- Możemy po prostu uruchomić nagrany w ten sposób program.
Zacznijmy jednak od wymagań wstępnych, aby mieć pewność, że wszystko zadziała poprawnie.
Wymagania wstępne
Zanim zaczniemy nagrywać nasze pierwsze skrypty, musimy spełnić kilka podstawowych warunków. Na szczęście lista nie jest długa:
- system Windows + SAP GUI — SAP GUI Scripting działa tylko w wersji desktopowej SAP GUI uruchamianej na systemie Windows.
- włączony SAP GUI Scripting — zarówno po stronie klienta (Twoje urządzenie), jak i po stronie serwera (ustawienia administracyjne).
Jeżeli korzystasz z SAPa na co dzień, to punkt pierwszy masz już najprawdopodobniej “odhaczony”. Teraz czas sprawdzić, czy SAP GUI Scripting jest aktywny.
Włączenie ustawień SAP GUI Scripting
Aby upewnić się, że na Twoim komputerze jest włączona obsługa skryptów, wykonaj następujące kroki:
- Uruchom system SAP i zaloguj się.
- Wybierz z górnego menu: Dostosuj układ lokalny (Ctrl+F12) → Opcje…
- Przejdź do: Dostępność i obsługa skryptów → Obsługa skryptów.
W wyświetlonym panelu ustawień, zaznacz tylko jedną opcję “Aktywacja obsługi skryptów” – dokładnie tak, jak pokazałem to na poniższej grafice (rys. 1).

Jeśli nie odznaczysz tych trzech ustawień, SAP będzie przy każdym uruchomieniu skryptu wyświetlał irytujące komunikaty, które trzeba ręcznie potwierdzać.
A co jeśli nie masz dostępu do edytowania powyżej opisanych ustawień? W takim przypadku nie pozostaje nic innego jak tylko skontaktować się z administratorem SAP-a i poprosić o włączenie scriptingu. Aby ułatwić Ci to zadanie, poniżej wklejam gotową treść takiej wiadomości.
Temat: Prośba o włączenie SAP GUI Scripting
Szanowni Państwo,
Zwracam się z uprzejmą prośbą o weryfikację możliwości korzystania z funkcji SAP GUI Scripting dla mojego konta użytkownika w systemie SAP.
Planuję wdrożyć automatyzację wybranych, powtarzalnych czynności w SAP przy wykorzystaniu języka Python oraz biblioteki pywin32. Celem tych działań jest usprawnienie codziennych zadań operacyjnych i ograniczenie manualnych błędów.
Obecnie opcja włączenia SAP GUI Scripting w ustawieniach klienta SAP GUI jest dla mnie niedostępna (wyszarzona), a skrypty nie mają możliwości połączenia z interfejsem SAP.
Uprzejmie proszę o sprawdzenie następujących kwestii:
- Czy parametr systemowy
sapgui/user_scriptingjest aktywny (wartośćTRUE) w systemie, z którego korzystam- Czy moje konto posiada uprawnienia do korzystania z SAP GUI Scripting
- Czy nie obowiązują polityki bezpieczeństwa, które blokują tę funkcjonalność po stronie klienta
Będę wdzięczny za informację, czy istnieje możliwość aktywacji tej funkcji, a jeśli nie — jakie warunki musiałyby zostać spełnione, aby uzyskać zgodę.
Z góry dziękuję za pomoc i poświęcony czas.
Z poważaniem,
[Twoje imię i nazwisko]
Nagrywanie skryptu SAP
Jeśli SAP GUI scripting masz już dostępny oraz zadbałeś o poprawne ustawienia, które opisałem wyżej – możesz rozpocząć nagrywanie swojego pierwszego skryptu automatyzującego system SAP. Na początek nagrajmy skrypt, który uruchamia transakcję MD04 oraz wczytuje w niej artykuł z konkretnym numerem SAP oraz numerem zakładu, u mnie będzie to odpowiednio: 991111 oraz 2101 – Ty możesz oczywiście podstawić swoje dane.
W tym celu postępuj zgodnie z poniższymi krokami:
- Uruchom system SAP oraz zaloguj się, jeśli nie używasz logowania SSO (ang. Single Sign-on). Możesz to zrobić również w systemie testowym, jeśli masz do takiego dostęp.
- Kliknij w ikonkę “Skrypt SAP GUI: …” – która znajduje się w prawym dolnym rogu ekranu (rys. 2).
- W tym momencie powinno pojawić się okno dialogowe, w którym (rys. 3):
- wybieramy lokalizację dla naszego skryptu – plik z rozszerzeniem “.vbs”,
- kodowanie pozostawiamy bez zmian,
- i fire, czyli włączamy nagrywanie skryptu klikając ikonę “Zapisz skrypt” – ta z czerwoną kropką.


Wszystko co od tej chwili zrobisz w SAP zostanie zarejestrowane. Spróbujmy więc nagrać operację, o której wspomniałem na początku tego akapitu tj. wczytanie artykułu w transakcji MD04. W tym celu:
- W lewym górnym rogu ekranu (okno wyboru transakcji – rys. 4.) wpisz nazwę transakcji poprzedzoną “/n”, a więc: “/nmd04” i wciśnij Enter (prefiks “/n” to standardowa komenda SAP oznaczająca zakończenie bieżącej transakcji i otwarcie nowej w tym samym oknie).
- W transakcji MD04 wprowadź “numer SAP” artykułu oraz “numer zakładu” i wciśnij Enter.
- Zakończ nagrywanie skryptu klikając w ikonę “Zatrzymaj zapis” w oknie dialogowym “Zapisz i odtwórz” (rys. 5). To okno – dokładnie tak jak poprzednio – wywołujemy ikoną w prawym dolnym rogu ekranu (rys. 2).


Odtwarzanie skryptu
Nasz skrypt jest nagrany i gotowy do uruchomienia. Możemy to zrobić w bardzo prosty sposób – klikając ikonę “Odtwórz skrypt”, która znajduje się obok ikon, którymi uruchomiliśmy oraz zatrzymaliśmy nagrywanie. Plik skryptu, który ma zostać odtworzony powinien zostać wybrany automatycznie, gdyby tak się nie stało, należy go wybrać manualnie (rys. 6.).

Po uruchomieniu skryptu, powinieneś zauważyć, że system SAP automatycznie uruchomił transakcję MD04, a następnie wprowadził dane i wczytał widok wybranego artykułu w wybranym wcześniej zakładzie. To bardzo prosty program, który został odtworzony w ułamku sekundy. Aby lepiej zobaczyć efekt, możesz po prostu wyjść z transakcji MD04 przed uruchomieniem skryptu.
Skrypt można uruchomić również klikając dwa razy na utworzony plik “.vbs”. System Windows uruchomi go automatycznie, jeśli SAP jest otwarty.
Edytowanie i analiza skryptu
Sprawdźmy jak ten prosty program wygląda. W tym celu należy go otworzyć w dowolnym edytorze tekstu. Najlepiej jednak niech to będzie edytor programistyczny, który sformatuje składnię programu. Ja do szybkiego podglądu nagranych skryptów wykorzystuję edytor Notepad++.
Jak już samo rozszerzenie pliku (“.vbs”) wskazuje, program który nagraliśmy napisany jest w języku Visual Basic Script. Jest to język skryptowy opracowany przez Microsoft, będący uproszczoną wersją Visual Basica. Jeśli miałeś do czynienia z makrami VBA w Excelu, nagrany skrypt automatyzujący SAP z pewnością będzie wyglądał dla Ciebie znajomo. Powinien on wyglądać u Ciebie mniej więcej tak:
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
'---------------------------------------------------------------
' 🔽 Od tego momentu zaczyna się faktyczna interakcja z SAP GUI:
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/nmd04"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsTAB300/tabpF01/ssubINCLUDE300:SAPMM61R:0301/ctxtRM61R-MATNR").text = "991111"
session.findById("wnd[0]/usr/tabsTAB300/tabpF01/ssubINCLUDE300:SAPMM61R:0301/ctxtRM61R-WERKS").text = "2101"
session.findById("wnd[0]/usr/tabsTAB300/tabpF01/ssubINCLUDE300:SAPMM61R:0301/ctxtRM61R-WERKS").setFocus
session.findById("wnd[0]/usr/tabsTAB300/tabpF01/ssubINCLUDE300:SAPMM61R:0301/ctxtRM61R-WERKS").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
Do powyższego kodu dodałem podział na dwie części. Pierwsza część jest bardzo techniczna i odpowiada za:
- połączenie z SAP GUI,
- otwarcie aktywnej sesji,
- oraz obsługę zdarzeń systemowych.
Ten fragment kodu jest taki sam dla każdego nagranego w ten sposób skryptu. Jeżeli chcesz po prostu uruchamiać skrypty — tę część możesz uznać za “czarną skrzynkę” i nie musisz się nią przejmować.
Z punktu widzenia automatyzowania operacji w SAP, zdecydowanie bardziej interesująca jest dla nas część druga kodu. To tutaj dokonuje się faktyczna interakcja z SAP GUI. Odwołanie się do konkretnego elementu graficznego odbywa się za pomocą metody .findById() uruchomionej na obiekcie session. Jako argument przekazujemy tzw. tag, czyli unikalny identyfikator elementu GUI. Na przykład tag "wnd[0]/tbar[0]/okcd" wskazuje na pole wyboru transakcji widoczne w lewym górnym rogu ekranu, a cała instrukcja:
session.findById("wnd[0]/tbar[0]/okcd").text = "/nmd04"
to po prostu wpisanie do tego pola tekstu “/nmd04”, co oznacza uruchomienie nowej transakcji MD04.
Po tym następuje potwierdzenie naszego wyboru poprzez naciśnięcie klawisza Enter, co w naszym kodzie odbywa się przez metodę .sendVKey wywołaną z argumentem 0 – odpowiadającego właśnie klawiszowi Enter:
session.findById("wnd[0]").sendVKey 0
Myślę, że to wyjaśnienie jest wystarczające, by samodzielnie zrozumieć dalsze linie kodu. Nadmienię jedynie, że niektóre linie np.: .setFocus (ustawia fokus – zaznaczenie – na pole zakładu) lub przypisanie wartości 4 do parametru .caretPosition (ustawia pozycję kursora na końcu tekstu) – nie są niezbędne.. Te operacje faktycznie miały miejsce podczas nagrywania i zostały zarejestrowane automatycznie, natomiast nie są one istotne z punktu widzenia automatyzacji. Możesz je śmiało usunąć – kod stanie się bardziej przejrzysty, a jego funkcjonalność nie ulegnie zmianie.
Co dalej?
W tym wpisie pokazałem Ci, jak zacząć z automatyzacją SAP-a przy użyciu wbudowanego rejestratora skryptów. Wiedza, jaką właśnie zdobyłeś, to świetna podstawa do dalszej nauki i eksperymentów – do czego Cię gorąco zachęcam.
Rekomenduję, abyś samodzielnie nagrał kilka prostych skryptów i dokładnie je przeanalizował. Stopniowo zwiększaj poziom trudności – nie rzucaj się od razu na głęboką wodę, bo to może zniechęcić. Na początek spróbuj na przykład:
- nagrać procedurę eksportu danych do Excela z dowolnej transakcji,
- lub utworzyć zlecenie produkcyjne w transakcji CO01.
Druga część wpisu będzie nieco bardziej techniczna, pokażę Ci w niej:
- dlaczego do automatyzowania SAP wykorzystuję Pythona zamiast VBS,
- jak przepisać skrypt na czytelny i elastyczny kod w Pythonie,
- oraz jak stworzyć praktyczne narzędzie do uruchamiania SAP-a – idealne na start dnia pracy.
Nie musisz być programistą, żeby z tego skorzystać. Moim celem jest pokazanie Ci, że z automatyzacją SAP-a można zacząć bez wielkiej rewolucji w codziennej pracy.
Jeśli nie chcesz przegapić kolejnych wpisów, obserwuj bloga — przed nami jeszcze sporo ciekawych tematów.



