‎2014 Mar 14 11:10 AM
Hi,
My program model is as follows:
I have a RFC FM(ZRFC_BACKGROUND) that will be called in BACKGROUND TASK and
This FM in turn will call a child process(another RFC FM(ZRFC_CHILD)) in parallel for packages that are created in ZRFC_BACKGROUND
We can use around 10 work processes that belongs to one server group, for parallel processing
Facts regarding Packaging:
Data in DB tables on which I will put SELECT query:
My QUESTION is which of the following approach is better:
Please keep following things in mind :
On the basis of aove facts, please suggest which is the better approach.
Regards
Rocky
‎2014 Mar 14 11:48 AM
Hi Rocky,
Why do you have locking issues? In the worst case, parallel processing will not help at all or even slow down the process if there are too many locks. Ideally, parallel tasks should not collide with each other. Which tables do you update / insert?
How big are your packages? How long do they take to process?
From the database point of view, it will not make a big difference whether you select 1 x 10000 entries or 100 x 100 entries. On the other side, if your second approach leads to additional database accesses as compared to the first one, this of course could slow down the process.
Best Regards, Randolf
‎2014 Mar 14 11:56 AM
What is the reason to implement parallel processing? If your queries are index-supported then they should return quite quickly. It seems that you can use a join select, as the tables are related.
Apart from this, in order to split the overall task into evenly sized packages you could read just LIKP-VBELN in ZRFC_BACKGROUND and then call the ZRFC_CHILD processes with the lists of VBELNs to be processed.
Thomas