In SOAMANAGER you can test if a web service can be reached by pressing the test connection button. Unfortunately there is no standard SAP program that performs this test in the background. So how to monitor the availability of a web service?
Solution: custom Z program that can be run online or in background.
In this case we have chosen to put the alert into SM21 system log. But you can also replace this part of the code with sending an email.
Preparation
In SE92 (see this blog) create a new message for the system log.
Z program for monitoring web service
Now create a new Z program:
REPORT z_bc_ws_check. CONSTANTS zmesid TYPE char3 VALUE 'ZZ1'. "system log message ID defined in SE92 DATA: zif_soap_ping TYPE REF TO cl_soap_ws_ping. DATA: zlv_ok TYPE boolean. PARAMETERS zservice TYPE seoclsname. "webservice name PARAMETERS zlp TYPE prx_logical_port_name. "logical port name START-OF-SELECTION. AUTHORITY-CHECK OBJECT 'S_SRT_CF_C' "check soap runtime auhtorizations. ID 'ACTVT' FIELD '03'. IF sy-subrc EQ 0. * create object for soap ping test CREATE OBJECT zif_soap_ping TYPE cl_soap_ws_ping. * initialize ok code zlv_ok = 'X'. * try the ping test TRY. CALL METHOD zif_soap_ping->if_soap_ws_ping~ping_ws EXPORTING service = zservice lp_name = zlp. CATCH cx_soap_ping. * any error, clear the ok flag zlv_ok = ' '. "not ok ENDTRY. IF zlv_ok EQ ' '. "not ok * write to SM21 system log WRITE: / TEXT-004. "ping not ok CALL FUNCTION 'RSLG_WRITE_SYSLOG_ENTRY' EXPORTING sl_message_area = zmesid(2) sl_message_subid = zmesid+2 data_word1 = zservice ##NO_TEXT. IF sy-subrc EQ 0. WRITE: / TEXT-001. "succes to write to SM21 ELSE. WRITE: / TEXT-002. "fail to write to SM21 ENDIF. ELSE. WRITE: / TEXT-003. "ping ok ENDIF. ELSE. WRITE: / TEXT-005. "not authorized ENDIF.
Create the text elements accordingly.
You can change the authorization check and in stead of writing system log message in SM21 do some other alerting like sending a mail, or pick up the entry in SAP Focused Run monitoring.
Running the program
Run the program:
Enter the webservice name and logical port. Hit execute.
You can also run the program in background mode. For example every 15 minutes. Create multiple steps for multiple web services to test.
Explanation
The program simply creates the object of type CL_SOAP_WS_PING to perform the web service ping. The ping test is then performed. Based on the result the text ok or an entry to SM21 is written.