Update as of October 1, 2024:
All settings mentioned in the original blog pertain to a direct connection to the SAP server. A new section has been added at the end of the post, detailing the differences when connecting via a load balancer.
Introduction:
The SAP Integration Suite provides a comprehensive set of tools and services for integrating different systems and applications. While SOAP or OData services cover a wide range of functionality, there are still instances where the good old RFC function modules in the ABAP system offer unique capabilities.
In this blog post, we will explore how to call RFC function modules from the SAP Integration Suite using the RFC receiver adapter, providing you with the necessary steps to set up the integration.
Overall setup
To successfully call RFC function modules from the SAP Integration Suite, there are three main parts that need to be configured:
- setting up the RFC connection and resource on the SAP Cloud Connector
- creating a destination
- configuring the iFlow (XML + Adapter)
Let’s delve into each of these parts in detail.
Setting up RFC Connection and Resource on SAP Cloud Connector:
Direct connection
Start by creating a new RFC connection on the SAP Cloud Connector (SCC), which will establish a new endpoint to the connected subaccount.
System mapping for RFC Connection — direc connection
Tip: To easily identify the correct connection, it is advisable to include the term “RFC” in the URL.
Load Balancer
System mapping through load balancer
Once the RFC connection is created, add a new system connection to the subaccount using the RFC protocol.
Additionally, create a resource within this connection, naming it either after the exact function module or using a prefix if desired. Remember to add all the required function modules as resources.
Creating the Destination:
The next step involves creating a destination, which provides the connection data to the backend system.
Direct connection
RFC Destination for direct connection
This is a standard RFC destination with the following essential properties:
- jco.client.ashost (URL from the cloud connector)
- jco.client.client (ABAP system client)
- jco.client.lang (language of the connection)
- jco.client.sysnr (system number).
Load Balancer
RFC Destination for load balancer connection
- jco.client.mshost (URL from the cloud connector)
- jco.client.client (ABAP system client)
- jco.client.lang (language of the connection)
- jco.client.msserv (aka port)
- jco.client.r3name (id of the system — same as msserv part after sapms###)
These properties must be configured accordingly to ensure successful communication with the backend system.
iFlow Configuration:
The final step focuses on the iFlow configuration, which requires several actions to be performed.
First, obtain the WSDL/XSD file that describes the interface of the targeted function module. This file can be accessed as the output of a service hosted on the ABAP server.
To retrieve it, use the following URL format:
https://<host>:<port>/sap/bc/soap/wsdl11?services=<FM name>
Tip: Replace <host> and <port> with the appropriate values, which can be obtained by running a webdynpro tcode like SOAMANAGER and modifying the path accordingly.
Once you have the WSDL/XSD, you can proceed to prepare the XML with the input data.
This can be done through mapping or by hardcoding the XML structure.
Tip: Alternatively, you can import the WSDL into a SOAP tool like SOAPUI, which can generate a sample XML from it.
Tip: Another option is to leverage the WSDL for message mapping, which will generate a valid XML input automatically.
The final step is to configure the RFC adapter in the iFlow and set the RFC destination that was created earlier.
Tip: To achieve dynamic destination naming, you can utilize the expression ${property.<name>}.
Conclusion:
In this blog post, we explored the process of calling RFC function modules from the SAP Integration Suite. By setting up the RFC connection and resource on the SAP Cloud Connector, creating the necessary destination, and configuring the iFlow, you can seamlessly integrate the functionality provided by RFC function modules into your integration scenarios.