Webservice i debugger

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
ODPOWIEDZ
arnonim
Posty: 170
Rejestracja: czw kwie 23, 2009 9:22 am
Has thanked: 13 times
Been thanked: 12 times

Webservice i debugger

Post autor: arnonim »

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ć ?
wojtas7
Posty: 1058
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 313 times

Re: Webservice i debugger

Post autor: wojtas7 »

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.
jmar
Posty: 42
Rejestracja: czw maja 13, 2010 12:33 pm
Lokalizacja: DE
Has thanked: 4 times
Been thanked: 8 times

Re: Webservice i debugger

Post autor: jmar »

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.
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: Webservice i debugger

Post autor: dominik.tylczynski »

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.
Dobry patent.
aszymanski
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

Post autor: aszymanski »

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 :D
jmar
Posty: 42
Rejestracja: czw maja 13, 2010 12:33 pm
Lokalizacja: DE
Has thanked: 4 times
Been thanked: 8 times

Re: Webservice i debugger

Post autor: jmar »

Jaka jest przewaga powyższego rozwiązania nad odczytem przychodzących wartości z trace'a w transakcji SOAMANAGER?
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: Webservice i debugger

Post autor: dominik.tylczynski »

W trace'ie w SOAMANAGER możesz zobaczyć... trace przetwarzania komunikatu. Natomiast powyższe podejście pozwala debuggować przetwarzanie komunikatu przez funkcję RFC.
jmar
Posty: 42
Rejestracja: czw maja 13, 2010 12:33 pm
Lokalizacja: DE
Has thanked: 4 times
Been thanked: 8 times

Re: Webservice i debugger

Post autor: jmar »

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.
Czy aby na pewno?
Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugować :)
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.
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: Webservice i debugger

Post autor: dominik.tylczynski »

jmar pisze: czw cze 29, 2017 7:18 am
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.
Czy aby na pewno?
Wg mojej wiedzy na pewno.

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.
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.
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ć.
jmar
Posty: 42
Rejestracja: czw maja 13, 2010 12:33 pm
Lokalizacja: DE
Has thanked: 4 times
Been thanked: 8 times

Re: Webservice i debugger

Post autor: jmar »

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.
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: Webservice i debugger

Post autor: dominik.tylczynski »

jmar pisze: czw cze 29, 2017 11:27 am 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.
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.
aszymanski
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

Post autor: aszymanski »

jmar pisze: czw cze 29, 2017 7:18 am
Teraz możemy sobie dokładnie z takimi samymi danymi wejściowymi odpalić funkcję i zdebugować :)
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.
Jeśli robisz to tylko jeden raz, to może odczyt danych z trace'a będzie szybszy :)
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: Webservice i debugger

Post autor: dominik.tylczynski »

Tak może być, jeśli szybko kopiujesz i się nie mylisz. Tym nie mniej warto wiedzieć, że można ten proces zautomatyzować.
ODPOWIEDZ