RFC Error : Transaction program not registered
While working with TCP/IP RFC, sometimes we face issue with RFC connection test, RFC Error : Transaction program not registered.
Typically we face this issue with program ID XI_IDOC_DEFAULT_<SID> while working with PI Connectivity for IDOCs as per help doc, Creating RFC Destinations on the Sender System for Processing IDocs.
This may happen due to below reasons.
- The program is not registered in PI/PO at all due to missing configuration.
- The program is registered on PI, but ECC/S4 back-end system cannot connect to the registered Gateway.
To use IDoc_AAE adapter, there are two RFC connections that are maintained on PI and the R/3 system respectively.
- A RFC destination is created in the R/3 system to send IDocs to PI/PO. This destination allows the IDOC layer in the R/3 to call the program ID that is registered on the RFC gateway either on the PI system or the R/3 system. The RFC destination in the R/3 system is referenced in the IDOC port configurations
- The PI system receiving the IDOC needs to query the sending R/3 system to understand the structure of the received IDOC. An RFC connection is created for this purpose on the PI system. The same RFC connection can also be used by the PI system to post IDOC acknowledgment messages to the R/3 system once the IDOC has been successfully processed or when errors are encountered by PI.The destination looks like XI_IDOC_DEFAULT_DESTINATION_<SID> which is maintained in inboundRA of PI/PO system. The PI/PO system registers a Program ID with a web application server gateway to receive RFC calls from the R/3 system. The gateway chosen is typically that of the PI server but can also be that of the R/3 system.
To solve this issue,
- Make sure that the Gateway is up and running
- Gateway service and host maintained in RFC at ABAP system end & in Destination at PI/JAVA/Portal system end is same.
- Ping test in PI /JAVA/Portal for the destination should be successful
- Check in NWA (if JAVA gateway is used in RFC) for logs specific to registered program in Log Viewer. If it shows error specific to local gateway, then mostly issue will be with reginfo file at JAVA end. Make sure that reginfo file have below entries.
- First line should be always
- Last line should be always
- P TP=* HOST=internal,local CANCEL=internal,local ACCESS=internal,local
- There should be no blank line at the end of reginfo file
- First line should be always
- After above changes, make sure to reload the file via gwmon.
- If R/3 side gateway is used, then also above reginfo rules apply, just make sure to reload file via SMGW.
In case of PI specific scenario with IDOC_AAE adapter, additionally check below.
- In NWA, under Configuration -> Infrastructure -> Application resources-> select Resource Adapters from show drop down list and filter for inboundRA in the list.
- Check the value of the Program ID field as XI_IDOC_DEFAULT_ where SID is system ID.
- Note: This is the same program id which will be used to create RFC destination (TCP/IP) in R/3 system, Program ID can be arbitrary but must be unique name for the used gateway.
- Check MaxReaderThreadCount value
- It should be between 5 – 10 (Default value is 10)
- Destination Name as XI_IDOC_DEFAULT_DESTINATION
- Check Local as true/false
- Check BindingKey as PI_AAE_IDOC
After checking and making required changes, make sure to restart the application for the inboundRA. In case issue still persist, then try to set MaxReaderThreadCount to higher value i.e. 20 and then check again after inboundRA application restart. Once RFC is working fine at R/3 end, you can revert the value to previous one, i.e. between 5-10.
Reference SAP Notes : 1906868, 2104408 & 1850230