Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Splitter program for processing the IDOCS with status 64.

Former Member
0 Kudos

Hello folks,

I have a requirement explained below. I am looking for a sample code which could help me to jump start with initial development.

Requirement:

-


Develop a splitter program which retrieves all the IDCOS with status 64, create and schedule batch jobs with 200 IDOCS each. The splitter program with be scheduled every 15 min.

Restrictions

-


Only 150 batch jobs can be created at a time.

Estimation

-


There may be around 36000 IDOCS with status 64 every hour.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Why are you doing this? Can you not use the standard program RBDAPP01 for this purpose? There is a parameter for 'Packet Size' which is the number of IDOCs you want to process at a time.

You can schedule this program and let it run every 15 minutes.

Am I missing something here?

Srinivas

7 REPLIES 7

Former Member
0 Kudos

How can we create batch jobs in a program???

Former Member
0 Kudos

Why are you doing this? Can you not use the standard program RBDAPP01 for this purpose? There is a parameter for 'Packet Size' which is the number of IDOCs you want to process at a time.

You can schedule this program and let it run every 15 minutes.

Am I missing something here?

Srinivas

0 Kudos

Hello Srinivas,

I dont know abt that program. What does it exactly do?? I dont think it creates batch jobs. Can you please take some time and throw little light on this program's functionality.

Thanks,

Naren

0 Kudos

This program processes IDOCs with certain selection criteria(including status). You can create a variant for this and schedule it through a job in SM36.

If your purpose is to process all the IDOCs with status 64, in batches of 200, then this is the one you should use. There is very good documentation associated with it.

Please let me know if you have any specific questions about it, giving details about which message types and whether inbound or outbound IDOC.

If resolved, please close the post.

Srinivas

0 Kudos

Hello Srinivas,

For the volume of IDOCS we have we cannot run only one instance of RBDAPP01.

The purpose of the splitter program is to spawn 150 RBDAPP01 jobs everytime it is run.

And the splitter program runs every 15 min.

Do you think it makes sense??

Naren

0 Kudos

Srinivas,

Here is the explaination why we require a splitter program.

Using RBDAPP01 parellel processing

-


Let us assume there are 4 servers A, B, C and D in a server group. If we select RBDAPP01 parellel processing there will be too many RFC calls to the servergroup.

(there are some more RFC calls later on for Order creation for example). As there is a restriction with number of RFC calls, we need to clear other RFC's before making new one. This is making complex and messy.

Using RDBAPP01 serial processing

-


For the volume of orders getting created each day, it takes a week to process those Idoca created in one day. Hence it is not a good solution.

Splitter program

-


We spawn 150 batch jobs with 200 records each. This way if we think it takes 20 min for each job to complete...by the end of 20th min we must had processed 30000 idocs.

Hence it is the solution offered.

Srinivas...still this confuses me..but if I am wrong anywhere please correct me.

But your initial response has helped me a lot. Everything was blank to me, ur reply made it clear over the requirement.

Thanks a lot,

Naren

0 Kudos

Hi Naren,

No matter how you schedule this, this will certainly take most of the system resources in your system.

36000 Idocs every hour!!! Phew! That's a lot!!! You have to take note of your dialog sessions available, number of servers available, number of background processes available, and the average number of users that will logged into the system at the time when the jobs are running. Have you considered the load that it will put on the system? Have you considered dedicating a server for this purpose which will be taken out of your load balancing?

You can definitely write a splitter program that can achieve this, but I am not sure if that is the right way to do it. You are talking about potentially locking up several processes for 20 minutes every hour. Also, another thing to consider is locks. What if the IDOCs are essentially working on the same abject and try for a lock?

What are these anyway? Isn't there any way that these can be consolidated into fewer Idocs?

Please let me know if you need the logic for splitter program.

Regards,

Srinivas