I'm building a program that will call an asynchronous RFC repeatedly, for downloading files from a DMS document server to a local directory on the presentation server.
In order to do this, I am calling the function a number of times in parallel (based on number of available processes). However, I keep getting dumps of type CALL_FUNCTION_REMOTE_ERROR, due to problems in the form defined as "on end of task". Here's my sample code:
call function 'ZCA_MY_DOWNLOAD_RFC'
starting new task taskname
destination in group default
performing reduce_process_counter on end of task
exporting
...
In the "reduce_process_counter" form, the following code is executed:
receive results from function 'ZCA_MY_DOWNLOAD3_RFC'
changing ch_taskname = lv_taskname.
Note that the "changing" parameter is defined in the function module and is working OK in most cases.
Now, the issue is the following: In most cases, the logic functions. I have a parameter in the calling program, allowing me to specify how many RFC calls I should run in parallell (based on available processes in the app servers). However, every once in a while - and especially if I run more than 2 or 3 calls in parallel, I get the CALL_FUNCTION_REMOTE_ERROR. This occurs on the "receive results" statement, with the dump reading "ThISend: bad tm type / connection closed (no data)".
It seems to me that my RFC's are "running wild" once I allow more than 2 or 3 of them to run in parallel. Again, there is no consistent behaviour here - some times, I can launch 5 in parallel; 8 will terminate properly, but the 9th will crash with the above error. I have implemented logging fuinctionality using a specific Z-table, so I can monitor the behaviour of bot the main program and the RFC's. Also, by checking SM66, I see my 5 processes running peacefully in parallel, until one suddenly "explodes"...
Any idea what's wrong here?
Regards,
Trond