Code Generator for the Invoke Code Activity to use SAP RFC Function Modules Easily

Complex activities can be simplified considerably by using of clever selection criteria. One example is the UiPath BAPI activity, for the SAP remote enabled function modules (RFM), with a business application programming interface. This inspired me to program a tool that offers a similar approach, but for all RFMs which are available in an SAP system.

Hint: You can find more technical information about RFC in my knowledge document, on side 9.

The interface between UiPath and an SAP system is the SAP dotNET Connector (NCo) via the Invoke Code activity.

Hint: You can find more information how to use NCo here.

Based on this knowledge, I programmed an RFM Code Generator. With this tool you can generate C# or VBdotNET code to use RFMs of an SAP back-end system. You can easily detect and select the RFM you need. With a few mouse clicks you can generate the code to call the RFM. All descriptions and interfaces, with its technical details, are visible and you can put together exactly what you need.

After starting the generator, the connection data must be entered first at the Connection tab.

After the connection has been successfully established, you can switch to the Selection tab. Here the desired function module can be easily selected and the code generated in a few steps.

  1. Type a pattern or the name of the RFM you want to use. In this example RFC*.
  2. Press this button to get all RFMs from the connected SAP system, with the pattern.
  3. Double click on the RFM name you want to use. In this example RFC_SYSTEM_INFO.
  4. Here you see the name of the RFM which was selected and the available descriptions in all languages.
  5. The RFM interface, in our case it contains only export parameters. Here you can find Import, Export, Exception and Changing parameters of the RFM.
  6. Select the programming language in which the code is to be generated. In this example VBdotNET.
  7. Press the Generate Code button to generate the code in the Code tab

If a function documentation is available, you can find it in the tab of the same name. But in the most cases RFMs are not documented.

With five tiny clicks you generate code to call an RFM in an SAP system.

With a double click on a structure you jump into the Structure Definition tab and you can see all details, in this example RFCSI_EXPORT.

This can be used to generate code for deeper structures.

  1. Select the fields you are interested in. In this example RFCHOST, RFCSYSID, RFCDBHOST and RFCDBSYS.
  2. Select Set, if you want to set the content of the fields, or Get, if you want to get the content of the fields. In this example Get.
  3. Press Generate Code to Clipboard button. The additional VBdotNET code to get the content of the selected fields is now in the clipboard available

Paste it into your code.

I invoke the code on an independent way, like I described here.

Now the code can be copied into the Invoke Code activity …

… and executed.

With this RFM Code Generator you can create C# or VBdotNET code sequences, to call SAP RFMs, easily. You very quickly gain an overview of the technical interface and can just as quickly create the basis for use. However, you must also know exactly what you are doing. The generated code can be easily transfer and use in the UiPath Invoke Code activity. This approach should reduce development times.

You can find the RFM Code Generator here, with a detailed user manual.


HI @StefanSchnell

:heart: AMAZING WORK DONE! :heart:

Let me try it out, looking forward to investigate this on my own!

Thank you very much for contribution!

Best regards, Lev

1 Like


Thanks a lot Lev, I’m looking forward to your results.

The current version of the RFM Code Generator contains now two search methods to find a remote enable function module.

  1. By technical name, like RFC* to find e.g. RFC_READ_TABLE

  2. Be description
    This is a reverse search via the description of the remote enabled function module. On this way, the RFM can be determined via the descriptive text, the short text of the function module.


With this approach, the search can be extended on another level. Depending on the quality of the description, a business perspective may be considered.

Furthermore I added two additional fields in the selection perspective, the package, aka development class and the function group.



On this way you can open the package in ABAP for Eclipse or the SE80 very fast, to find other function modules.

You can find the RFM Code Generator at my home page.

Thank you very much to @LevKushnir and @robert.wagner for the great discussions. :slightly_smiling_face:

1 Like

Great work @StefanSchnell
You are saving SAP - RPA Developers thousands of hours!

I think I told you about my testing and QA background and so of course I tried to break your tool!
Forgive me Muha ha ha

Here is what I did:
I connected with our largest/slowest SAP instance and performed a rather complex search with wildcards and specific language → I know, this was against your recommendation! :slight_smile:

While I was doing this, following things came to my mind which I thought would make the tool perfect:

  1. The search took about 20+minutes
    → so I thought a “Cancel Search” button would be awesome
  2. I had to kill the process and after restart, I had to insert connection params again
    → persist connection params would be awesome?
  3. In another search it stopped responding after about 30 minutes
    → Show some progress bar would be awesome to see if it is still active
  4. It seems the search results of “technical names” and “description” is an OR expression? I ended up sometimes with many search results
    → Would it be feasible to set the search results to an AND, OR expression? Maybe this will become very quick very complex?

This is just nice to haves - thank you so much again for this fantastic tool!
Looking forward to our next session!