Using "Classic RFC" vs. using "Netweaver RFC" in GuiXT
the newer one. The official SAP support for Classic RFC ended in 2016,
although the interface is still contained in all SAP kernel versions including
the latest S4HANA systems (as of 2018).
For your convenience, if "librfc32.dll" is not found in a local folder, GuiXT tries to load it from the script folders, including SAP Web Repository and SAP Mime Repository. This makes it possible to store "librfc32.dll" at a central place, like the scripts, given that you want to use Classic RFC for all GuiXT users. For loading "librfc32.dll" from a script folder you need GuiXT version 2018 Q1 2 or above.
When a function is called up the first time in a process,
NWRFC reads the corresponding metadata: the function interface and the
dictionary structures for all parameters. The
metadata are read by the NWRFC layer on the caller side, using one RFC
call "RFC_GET_FUNCTION_INTERFACE" and possibly many calls
"DDIF_FIELDINFO_GET". The metadata are then cached in the process. So if
a user does not completely close SAP GUI the calls are as fast as
Classic RFC, but each first call after starting SAP GUI can take a
couple of seconds.
RFC via a LAN connection, first call takes around 2 seconds. Please note that the first call to a different function will again need new metadata.
The same Call in a new SAP GUI mode, same SAP GUI process. Even the first call is now fast.
Here via Internet connection to a different SAP system. The metadata are read again, which takes 5 seconds this time.
An RFC trace ( transaction ST01) shows that many metadata calls are executed the first time a script calls "BAPI_USER_GET_DETAIL":
Classic RFC does not show this overhead, since no metadata are needed on the client side.
The internet access with Classic RFC show she same behaviour, i.e. there is no big delay for the first call.
NWRFC you need to give the users the authorization to
read the function interface and the dictionary structures, in addition
to the authorizations for the function that you are calling.
For Classic RFC the user only needs the authorizations for the function that is called up in the script: