There are different causes for ABAP errors, depending on the program. Causes include:
Incorrect or incomplete entries in the RFC destination (transaction SM59)
Error in the RFC program
Check the following:
Check all the entries made in transaction SM59. The destination used must be entered with category T. Enter a complete path name, if possible, for the program to be started. Make sure to save the destination.
Configuration on operating system level
The host name specification in the destination
A name is entered into 'host name' or a non-standard gateway is stored (in gateway options). In the latter case, the program is started by the standard gateway program of the system or by the gateway ( gwrd ) specified explicitely via 'remote shell'.
Make sure that the entered computer can be addressed by the computer of gateway process. Enter the following command on this computer:
/etc/ping <host name> or ping <host name>
To start a program with 'remote shell' on another computer, it is necessary that the user-ID of the gateway process exists on the target system and that the HOME directory of this user contains a file. rhosts in the target system. The name of the calling computer must be stored in this file. To test this, log in on the computer of the gateway process under the user ID of this process and call the command:
remsh <host name> <program name>
In this case, you have to enter the same as in transaction SM59 for <host name> and <program name> .
(If an RFC server program is called without parameters, the call RfcAccept returns an error code ( RFC_HANDLE_NULL ) in any case and the program should terminate immediately.)
No entry is made in ' host name '
In this case, the program is started from the SAP application server.
Make sure that the program can be addressed from the SAP application server.
Make sure that the SAP application server has the authorization for starting the program.
To do this, log on under the user-ID of the SAP application server (generally c11adm). Go into the 'work' directory of the application server (/usr/sap/.../D.../work), if possible, and start the RFC server program manually from there.
(If an RFC server program is called without parameters, the call RfcAccept returns an error code (RFC_HANDLE_NULL) in any case and the program should terminate immediately.)
Problems in the RFC server program itself
To pick up stderr output of the RFC server program, you can enter a control program instead of the actual server program into the destination which in turn starts the actual server program with the same command line and which in this case redirects the standard output of the program into a file.
RFC server program is /xxx/xxxx.
However, the C script is called (do not forget the specification of the shell in the first line):
date >> /tmp/rfclog
/xxx/xxxx $* >>& /tmp/rfclog
echo $status >>& /tmp/rfclog
Display the log file /tmp/rfclog for further error analysis.
You can activate the trace flag in the destination (remember to save). A file dev_rfc is then written by the RFC server program in its current directory containing all data received, operations and errors that occurred.