Monitoring tRFC
All transactional RFCs are stored in tables ARFCSSTATE and ARFCSDATA. Here, each LUW is identified by a unique ID. When a COMMIT WORK is made, the calls belonging to this ID are executed in the target system. The system function module ARFC_DEST_SHIP transports the data to the target system and the function module ARFC_EXECUTE executes the stored function calls. If an error or an exception occurs during one of the calls, all the database operations started by the preceding calls are rolled back and an appropriate error message is written to the file ARFCSSTATE.
There are two methods for checking the status of a transaction ID:
● From an ABAP program
Function module ID_OF_BACKGROUNDTASK returns the ID of the LUW. You call this module after the first CALL... IN BACKGROUND TASK and before COMMIT WORK.
CALL FUNCTION ‘ID_OF_BACKGROUNDTASK’ IMPORTING TASK-ID = TID.
Once you have identified the ID of the LUW, you can use function module STATUS_OF_BACKGROUNDTASK to determine the status of the transactional RFC.
CALL FUNCTION ‘STATUS_OF_BACKGROUNDTASK’
EXPORTING TID |
= TASK-ID |
IMPORTING ERRORTAB |
= ERTAB |
EXCEPTIONS COMMUNICTATION |
= 01 |
(Connection not available: will try again later) |
|
RECORDED |
= 02 |
(ARFC is scheduled) |
|
ROLLBACK |
= 03 |
(Rollback triggered in target system) |
|
● Online
Call transaction SM58 (Tools → Administration → Monitoring → Transactional RFC). This tool lists only those transactional RFCs that could not be carried out successfully or that had to be planned as batch jobs. The list includes the LUW ID and an error message. Error messages displayed in SM58 are taken from the target system. To display the text of the message, double-click on the message.
Transaction SM58 also lets you control your transactional RFC at various stages. If the call ends abnormally during the sending process, you may need to use the Rollback LUW function to manually rollback the LUW before attempting a resend. If the target system is unavailable, you can use the Backgr.job function to display the batch job created for your call. Execute funct. module lets you restart the call after the occurrence of a temporary error (such as a syntax error).
If a LUW runs successfully in the target system, function module ARFC_DEST_CONFIRM is triggered and confirms successful performance in the target system. Finally, the entries in tables ARFCSSTATE and ARFCSDATA are deleted.