* https://www.berater-wiki.de/RFC-Funktionsbausteine
* https://download.consolut.com/direct/SAP_PrintDoku/de/BCFESDE2/BCFESDE2.PDF
* Funktionsbaustein-Name, verwendet Suchhilfe pb_func_key
PARAMETERS: p_func TYPE rs38l_fnam MATCHCODE OBJECT pb_func_key.
* RFC-Verbindung
PARAMETERS: p_rfc TYPE rfcdest.
START-OF-SELECTION.
* Nachschauen, ob RFC-Verbindung vorhanden
SELECT SINGLE d~rfcdest, d~rfctype, d~rfcoptions, t~rfcdoc1, t~rfcdoc2, t~rfcdoc3
INTO @DATA(lv_rfc)
FROM rfcdes AS d
INNER JOIN rfcdoc AS t ON ( d~rfcdest = t~rfcdest )
WHERE d~rfcdest = @p_rfc
AND t~rfclang = @sy-langu.
IF sy-subrc = 0.
DATA: lv_err_msg TYPE char255.
* wenn RFC-Verbindung vorhanden -> anpingen und Systemfehler (Dumps) abfangen
CALL FUNCTION 'RFC_PING' DESTINATION p_rfc
EXCEPTIONS
system_failure = 1 MESSAGE lv_err_msg
communication_failure = 2 MESSAGE lv_err_msg
OTHERS = 3.
IF sy-subrc = 0.
* RFC-Ping ok
WRITE: / '[', p_rfc, '] RFC-Aufruf erfolgreich.'.
* Existenzprüfung und Funktionsgruppe zu Funktionsbaustein besorgen
CALL FUNCTION 'FUNCTION_EXISTS' DESTINATION p_rfc
EXPORTING
funcname = p_func
EXCEPTIONS
function_not_exist = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE: / 'Funktionsbaustein:', p_func, 'existiert im Zielsystem:', p_rfc.
ELSE.
WRITE: / 'Funktionsbaustein:', p_func, 'existiert nicht im Zielsystem:', p_rfc.
ENDIF.
ELSE.
* RFC-Ping fehlerhaft
WRITE: / '[', p_rfc, '] RFC-Aufruf gescheitert:', lv_err_msg.
ENDIF.
ELSE.
* RFC-Verbindung nicht vorhanden
WRITE: / '[', p_rfc, '] RFC-Verbindung nicht vorhanden.'.
ENDIF.