The purpose of this wiki is to provide details as to why ARFC* jobs may be created on the system.
In this wiki we will look at reasons why these ARFC jobs are created, explain if they can be deactivated and if so, how failed calls can be reprocessed.
Reasons why the ARFC batch jobs are created
There are 2 cases when a batch job will be scheduled:
(1) There is a connection failure and the scheduler automatically creates a batch job for such connection failures.
(2) Application explicitly asks for batch job creation by calling the API ‘START_OF_BACKGROUNDTASK’ in the same flow that creates the queue entry.
Identifying the jobs
Background jobs with the name "ARFC:<XXXX>" can be seen in SM37:
The job logs shows that these jobs are running report RSARFCSE:
The job RSARFCSE is responsible for asynchronous remote function calls that have not been succesful.
For every unsuccesful ARFC found in table ARFCSSTATE a job called ARFC:<xxxxxxx> is created. In table ARFCSSTATE you can see the destination for the ARFC call.
The job will be created if there there is a connection failure and the scheduler automatically creates a batch job for such connection failures. So if the tRFC call is in status CPICERR, then the
entry will be retried as per settings in tRFC options. If you do not see CPICERR status and instead see SYSFAIL status, then there will not be any automatic retry.
Once you have determined the target system for the ARFC calls (as per table ARFCSSTATE), use transaction SM59 to check whether this is a valid RFC destination.
Possibility to disable the ARFC jobs from being created
It is possible to disable these background jobs if errors occur with the connection. To do this, goto the "tRFC options "for the relevant RFC
destination reporting the connection error:
In the next screen choose the "Supress background job if conn.error" option:
Please note that this option will only work in the case of option (1) above - if the appliction exlicitly asks fot he batch job then there is no option to suppress this background job.
The RFC's can then be reprocessed by scheduling report RSARFCEX. You can also delete the already scheduled jobs with report RSBTCDEL if there are too many.
Using the option "Supress background job if conn. error" will stop the creation of these ARFC:<XXXX> background jobs. You can then reprocess
the failed tRFC calls by scheduling report RSARFCEX at regular intervals.
As per option (2) above these batch jobs will aso be created if the application explicitly asks for batch job creation by calling the API ‘START_OF_BACKGROUNDTASK’ in the same flow that creates the queue entry.
To see this, check the ARFCSSTATE table’s ARFCRESERV field, here you would see the BATCHPLA flag set (ARFCRESERV is a continuous string, BATCHPLA flag corresponds to the offset as per ARFCRESERV structure (you can open ARFCRESERV in transaction SE11 to see this)).
If this the case, the issue must be checked with the corresponding application.
Related SAP Notes/KBAs