ABAP Quick - Ping system
In today's tip, we show you how to test an RFC connection to another system before using it. This will allow you to verify if the connection is available and works.
Table of contents
You want to connect to another system because you want to read data, but you are not sure if the connection is really working or if the system is even there. To test the connection, we want to introduce today to you two simple steps.
Read the destination
As a first step, you should check if the connection is set up in the system at all. You can do this in transaction SM59 for the first check whether your ABAP connection is created correctly. You check the most important settings:
- User and password are stored correctly
- Connection test works
From the technical point of view, you check the RFCDES table to see if the connection is in place before you do the first ping. You can do this with a simple select as shown below:
" Read destination
SELECT SINGLE *
FROM rfcdes
WHERE rfcdest = 'TSTMDT999'
AND rfctype = '3'.
IF sy-subrc <> 0.
" Error handling
ENDIF.
Check connection
Use the following class/method to check if the connection to the RFC destionation works. With the different flags you can check the ping, the logon to the system and determine the latency. As you can see in the following example, you can also control and check the values individually.
" Call the method
/sdf/cl_rfc_conn_check=>check_connection(
EXPORTING
ip_destination = id_dest
ip_ping = abap_true
ip_logon = abap_true
ip_latency = abap_true
IMPORTING
ep_ping_status = DATA(ld_ping)
ep_logon_status = DATA(ld_logon)
ep_latency_in_ms = DATA(ld_latency)
).
IF ld_ping <> 1.
" no connection
ELSE.
" connection ok
ENDIF.
After calling the method do not forget to validate the individual values. In our example, we check the value from ld_ping. This can have the status 1 (connection ok) or 3 (connection failed) as well as the other values returned by the method. As a small extra we define the values directly when returning in the program and thus save ourselves the three variables in the head.
Hint: This method is the call of the function module RFCPING, which carries out the required action and prepares the data accordingly for the return. Of course, calling a method looks more elegant than calling a function module.
Conclusion
With this simple method you can check if a system still exists (system monitoring) or just test the connection properly before use. Just try it out in your system.