Lukardi

Automatyzacja analizy systemu dzięki skryptom SAP GUI

Udostępnij

Skrypty SAP GUI

SAP umożliwia automatyzację powtarzalnych procesów dzięki odpowiednio pisanym skryptom.
Aby możliwe było ich uruchomienie na systemie, należy odpowiednio przygotować środowisko:

  • SAP GUI – włączenie obsługi skryptów w ustawieniach
  • system SAP – należy ustawić na systemie parametr sapgui/user_scripting na wartość TRUE

Tworzenie skryptów SAP GUI

Standardowo skrypty SAP GUI pisane są w języku VBA (Visual Basic for Applications). VBA pozwala na nawiązanie sesji z SAP GUI, a następnie wykonywanie na nim odpowiednich operacji. Taki skrypt składa się z linii odnajdujących odpowiedni element w SAP GUI według jego z góry ustalonej ścieżki, a następnie wykonanie na takim elemencie akcji, np. wpisanie tekstu lub kliknięcie przycisku.

Przykładowo ścieżka może wyglądać w następujący sposób:

wnd[0]/tbar[0]/okcd

Pierwszym elementem jest wnd (okno). Indeks zerowy oznacza główne okno aplikacji, kolejne indeksy mogą być na przykład pop-upami pojawiającymi się po wykonaniu jakichś działań. Po znaku ‘/’ znajduje się tbar[0], który jest pierwszym paskiem narzędzi w SAP GUI. Po kolejnym znaku ‘/’ znajduje się już konkretny element, w tym przypadku okcd, który jest polem, do którego wpisuje się TCODE.

Automagica

Czy w takim razie, do pisania skryptów do SAP GUI trzeba się nauczyć języka VBA? Odpowiedź brzmi: nie. Z pomocą przychodzi nam opensource’owa biblioteka Automagica. Automagica pozwala na wykonywanie tych samych działań na SAP GUI przy pomocy języka Python.

Oprócz obsługi SAP GUI, Automagica pozwala także na wykonywanie ruchów myszką, korzystanie z Microsoft Excel, wysyłanie maili i wiele innych.

Zastosowanie

Dzięki bibliotece Automagica, możliwe jest zautomatyzowanie wielu powtarzalnych procesów.

Przykładowo, w połączeniu z narzędziem SAST można zautomatyzować analizę transakcji wykorzystywanych przez użytkownika. Automatycznie można uruchomić przeznaczoną do tego funkcjonalność SAST, a następnie pobrać dane do Excela. Poniżej znajduje się przykładowy kod, który to realizuje:

#init SAPGUI
sap = SAPGUI()
#login
sap.login(sap_system_name, sap_mandant, sap_username, sap_pass)

#enter tcode
sap.set_text(‘/app/con[0]/ses[0]/wnd[0]/tbar[0]/okcd’, ‘/n/sast/us_user_activ’)
#run transaction
sap.click(‘/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[0]’)

#input user name
sap.set_text(‘/app/con[0]/ses[0]/wnd[0]/usr/ctxtSO_USER-LOW’, ‘suspect’)
#execute
sap.click(“/app/con[0]/ses[0]/wnd[0]/tbar[1]/btn[8]”)

#result to spreadsheet
sap.click(“/app/con[0]/ses[0]/wnd[0]/tbar[1]/btn[46]”)
sap.click(“/app/con[0]/ses[0]/wnd[0]/tbar[1]/btn[43]”)
press_key(‘enter’)
sap.click(“/app/con[0]/ses[0]/wnd[1]/tbar[0]/btn[11]”)

Następnie taki skrypt mógłby uruchomić kolejną funkcjonalność SAST, pokazującą wykorzystane przez tego samego użytkownika konflikty SoD i pobrał je do kolejnego pliku Excela.

Na końcu, operując już na samym tylko Excelu, skrypt mógłby wykonując operacje na komórkach wygenerować ostateczny raport o skonfliktowanych transakcjach w formie umożliwiającej zespołowi autoryzacyjnemu w wygodny i przejrzysty sposób przejrzenie konfliktów i podjęcie decyzji o odebraniu uprawnień lub mitygacji konfliktu.

Filip Starobrat