Witam serdecznie,
mam problem z debuggowaniem modułu funkcyjnego, który jest wywoływany jako Webservice z zewnętrznej aplikacji. W SOA Management w konfiguracji logs and traces dodaję rekord na użytkownika XXXX za pomocą odbywa się komunikacja aplikacja zewnętrzna - SAP.
W module funkcyjnym, który jest odpalany ustawiam break-pointa również na tego samego usera, ale niestety nie uruchamia mi się debugger abym mógł przejść krok po kroku zawartość modułu funkcyjnego. Co jeszcze powinienem uwzględniać, ustawić ?
Webservice i debugger
-
- Posty: 1058
- Rejestracja: pt mar 14, 2008 12:51 pm
- Has thanked: 71 times
- Been thanked: 313 times
Re: Webservice i debugger
Zrób taką sztuczkę - wstaw do tego modułu funkcyjnego niekończącą się pętlę while lb_bool. check. endwhile. i poszukaj w procesach to zapętlenie i stamtąd odpal debuggera, podmień zmienną na true żeby wyszło z pętli i masz debuger.
-
- Posty: 42
- Rejestracja: czw maja 13, 2010 12:33 pm
- Lokalizacja: DE
- Has thanked: 4 times
- Been thanked: 8 times
Re: Webservice i debugger
Ewentualnie spójrz na: https://blogs.sap.com/2007/02/07/how-to ... al-studio/
Korzystałem z tego debugując web service'y uruchamiane z programu SOAP UI.
Korzystałem z tego debugując web service'y uruchamiane z programu SOAP UI.
-
- Posty: 8326
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1915 times
- Been thanked: 1474 times
- Kontakt:
Re: Webservice i debugger
Dobry patent.jmar pisze: ↑czw maja 25, 2017 8:23 am Ewentualnie spójrz na: https://blogs.sap.com/2007/02/07/how-to ... al-studio/
Korzystałem z tego debugując web service'y uruchamiane z programu SOAP UI.
-
- Posty: 72
- Rejestracja: pt lip 11, 2014 1:01 pm
- Lokalizacja: Kraków
- Has thanked: 11 times
- Been thanked: 28 times
Re: Webservice i debugger
W przypadku webservice, którego endpointem w SAP jest moduł funkcyjny, najlepiej skorzystać z mechanizmu zapisywania danych testowych funkcji (niektórzy nazywają to wariantami w SE37).
Aby to uruchomić trzeba 3 kroków:
1. Znalezienie usera (ew. spytanie kolegów od szyny), na którym w SAP jest odpalany webservice.
Dla tego usera należy w SU01 wpisać ID parametru FBGENDAT z wartością X.
2. Uruchamiamy program FBGENDAT i aktywujemy wpis dla naszej funkcji podpiętej do interfejsu np ZTEST_INTERFACE.
Osobiście używam trybu B = Zapis danych test. i kontynuacja.
3. W kodzie funkcji ZTEST_INTERFACE na samym początku dodajemy linijki kodu:
INCLUDE FBGENMAC.
SET EXTENDED CHECK OFF.
fbgenmac ‘ZTEST_INTERFACE’.
SET EXTENDED CHECK ON.
Dokładnie jest to opisane tu:
https://blogs.sap.com/2014/09/05/creati ... ogramming/
Potem prosimy kolegów od szyny o odpalenie interfejsu i w SE37 pojawią nam się dane testowe, które przyszły z zewnątrz.
Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugować
Możemy również na bazie tych danych zapisać swoje dane testowe zmieniając zawartość niektórych pól itp.
Testowane na różnych projektach z różnymi szynami, np SAP PI, BizTalk, IBM WebSphere.
Znakomicie ułatwia analizowanie działania, a właściwie "niedziałania" interfejsów
Aby to uruchomić trzeba 3 kroków:
1. Znalezienie usera (ew. spytanie kolegów od szyny), na którym w SAP jest odpalany webservice.
Dla tego usera należy w SU01 wpisać ID parametru FBGENDAT z wartością X.
2. Uruchamiamy program FBGENDAT i aktywujemy wpis dla naszej funkcji podpiętej do interfejsu np ZTEST_INTERFACE.
Osobiście używam trybu B = Zapis danych test. i kontynuacja.
3. W kodzie funkcji ZTEST_INTERFACE na samym początku dodajemy linijki kodu:
INCLUDE FBGENMAC.
SET EXTENDED CHECK OFF.
fbgenmac ‘ZTEST_INTERFACE’.
SET EXTENDED CHECK ON.
Dokładnie jest to opisane tu:
https://blogs.sap.com/2014/09/05/creati ... ogramming/
Potem prosimy kolegów od szyny o odpalenie interfejsu i w SE37 pojawią nam się dane testowe, które przyszły z zewnątrz.
Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugować
Możemy również na bazie tych danych zapisać swoje dane testowe zmieniając zawartość niektórych pól itp.
Testowane na różnych projektach z różnymi szynami, np SAP PI, BizTalk, IBM WebSphere.
Znakomicie ułatwia analizowanie działania, a właściwie "niedziałania" interfejsów
-
- Posty: 8326
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1915 times
- Been thanked: 1474 times
- Kontakt:
Re: Webservice i debugger
W trace'ie w SOAMANAGER możesz zobaczyć... trace przetwarzania komunikatu. Natomiast powyższe podejście pozwala debuggować przetwarzanie komunikatu przez funkcję RFC.
-
- Posty: 42
- Rejestracja: czw maja 13, 2010 12:33 pm
- Lokalizacja: DE
- Has thanked: 4 times
- Been thanked: 8 times
Re: Webservice i debugger
Czy aby na pewno?dominik.tylczynski pisze: ↑śr cze 28, 2017 8:49 am W trace'ie w SOAMANAGER możesz zobaczyć... trace przetwarzania komunikatu. Natomiast powyższe podejście pozwala debuggować przetwarzanie komunikatu przez funkcję RFC.
co sprowadza się do tego samego, co odczytanie danych z trace'a,tylko zamiast ręcznego wklepywania ich do modułu funkcyjnego, mamy od razu zapamiętane je jako dane testowe. Czy dobrze zrozumiałem? Jeżeli tak, to w przypadku "niezbyt skomplikowanych" wywołań metoda pobrania danych z trace'a będzie szybsza.Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugować
-
- Posty: 8326
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1915 times
- Been thanked: 1474 times
- Kontakt:
Re: Webservice i debugger
Wg mojej wiedzy na pewno.jmar pisze: ↑czw cze 29, 2017 7:18 amCzy aby na pewno?dominik.tylczynski pisze: ↑śr cze 28, 2017 8:49 am W trace'ie w SOAMANAGER możesz zobaczyć... trace przetwarzania komunikatu. Natomiast powyższe podejście pozwala debuggować przetwarzanie komunikatu przez funkcję RFC.
Nie do końca - zwróć uwagę na różnicę między trace'm a debugiem. Webservice jest implementowany przez jakiś kawałek ABAP'a, zwykle funkcję RFC. To może być Twoja własna funkcja, częściej jednak jest to BAPI dostarczone przez SAP. Ten kod może być dosyć skomplikowany, zwłaszcza jeśli jest to standardowe BAPI. Trace pozwala Tobie zobaczyć dane wejściowe do tej funkcji oraz wynik działania. Nie umożliwia jednak dokładnego prześledzenia jak te dane są przetwarzane, czyli debugowania funkcji.Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugowaćjmar pisze: ↑czw cze 29, 2017 7:18 am co sprowadza się do tego samego, co odczytanie danych z trace'a,tylko zamiast ręcznego wklepywania ich do modułu funkcyjnego, mamy od razu zapamiętane je jako dane testowe. Czy dobrze zrozumiałem? Jeżeli tak, to w przypadku "niezbyt skomplikowanych" wywołań metoda pobrania danych z trace'a będzie szybsza.
Innymi słowy trace pozwala zobaczyć co zostało przetworzone i wynik przetwarzania, debug pozwala dokładnie prześledzić jak to przetwarzanie zachodzi.
Z doświadczenia wiem, że nawet przy dobrze udokumentowanych funkcjach BAPI debug bardzo pomaga. Jeśli jednak Tobie wystarcza trace to faktycznie generowanie danych testowych nie ma dla Ciebie większej wartości. Tym nie mniej warto wiedzieć jak to zrobić.
-
- Posty: 42
- Rejestracja: czw maja 13, 2010 12:33 pm
- Lokalizacja: DE
- Has thanked: 4 times
- Been thanked: 8 times
Re: Webservice i debugger
Absolutnie nie mam na celu deprecjonowania debugowania. Cały czas chodzi mi o różnicę pomiędzy ręcznym przeklepaniem wartości parametrów z trace'a a automatycznym utworzeniem danych testowych dla odpowiedniego modułu funkcyjnego.
-
- Posty: 8326
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1915 times
- Been thanked: 1474 times
- Kontakt:
Re: Webservice i debugger
W mojej ocenie różnica jest w czasie ręcznego kopiowania danych z trace'a oraz możliwości popełnienia błędów. Dla danych wejściowych zapewne można szybko skopiować dane z trace'a, pewnie szybciej niż włączyć automatyczny zapis. Natomiast dla rozbudowanych danych szybciej i bezpieczniej jest wykorzystać automat.
-
- Posty: 72
- Rejestracja: pt lip 11, 2014 1:01 pm
- Lokalizacja: Kraków
- Has thanked: 11 times
- Been thanked: 28 times
Re: Webservice i debugger
Jeśli robisz to tylko jeden raz, to może odczyt danych z trace'a będzie szybszyjmar pisze: ↑czw cze 29, 2017 7:18 amco sprowadza się do tego samego, co odczytanie danych z trace'a,tylko zamiast ręcznego wklepywania ich do modułu funkcyjnego, mamy od razu zapamiętane je jako dane testowe. Czy dobrze zrozumiałem? Jeżeli tak, to w przypadku "niezbyt skomplikowanych" wywołań metoda pobrania danych z trace'a będzie szybsza.Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugować
-
- Posty: 8326
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1915 times
- Been thanked: 1474 times
- Kontakt:
Re: Webservice i debugger
Tak może być, jeśli szybko kopiujesz i się nie mylisz. Tym nie mniej warto wiedzieć, że można ten proces zautomatyzować.