cancel
Showing results for 
Search instead for 
Did you mean: 

Throttling the sending of IDocs

Former Member
0 Kudos

After a system outage or a project release, we often need to throttle the sending of IDocs outbound of our system.

Reason being: not to flood the destination system.  Neither they nor our integration layer can throttle the messages.

I know we can set the outbound IDocs to collect and the use program RSEOUT00 to send, but how can we restrict so that only a set number of IDocs are sent out per hour for example without having to populate the IDoc no.?  Need it to be scheduled to run and continue to only send the pre-defined amount out.

Thank-you.

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Thank-you both for you suggestions.

I believe we'll have to look into a custom program.

former_member182412
Active Contributor
0 Kudos

Hi Dianna,

Close the thread as discussed below.

Regards,

Praveen.

Former Member
0 Kudos

Thank-you for your response Eng.

We have tried that.  It sends out IDoc in groups of 1000 but then continues to send out all IDocs in batches.  It doesn't stop once it has sent 1000 for example.  It will continue to send out the idocs in lots of 1000 til none left.

engswee
Active Contributor
0 Kudos

Hi Dianna

AFAIK, I am not aware of any standard functionality in PI for throttling based on time & no of messages, apart from possibly ccBPM/BPM. Message processing are normally immediate and independent of one another (assuming QOS EO.)

An alternative way I can think of is the usage of scripts. Send the outbound IDocs to a temporary file system location. Run a script as a periodic job on the OS (i.e. cron job in Unix) that transfers the files to another location to be picked up by a second scenario to deliver to final destination.

I'm not a Unix scripter, but the general idea of the script would be to keep track of the files that have been transferred during the current 1 hour interval. If there are files in the temp folder and the current count is less than the max allowed, then move it to the next folder. If the count is more than max allowed, then leave it in the temp folder. At every hour, reset the count.

Rgds

Eng Swee

former_member182412
Active Contributor
0 Kudos

Hi Dianna,

As Eng mentioned above you cannot achieve this using Max number of IDOCS parameter in the report RSEOUT00, The documentation for this field is:

When several IDocs are transferred to a port via report program RSEOUT00 you can enter here the maximum number of IDocs that should be transferred before a COMMIT WORK is set and the IDocs become blocked. If too high a number is selected, it can lead to runtime errors (for example Timeouts). In this case, you must choose a lower value. SAP cannot specify an exact value as IDoc size and system configuration can vary greatly from customer to customer.

please check below blog for more detail.

Transaction WE14 Max. Number of IDOCs in program RSEOUT00 - ABAP Connectivity - SCN Wiki

For your issue you can achieve this using writing custom program in ECC.

You can write the logic below:

1) Retrieve the number of IDOCS which you want to send it to PI and fill the select option parameter          S_IDOC

2) Using SUBMIT keyword you can call RSEOUT00 report with S_IDOC selection parameter( SUBMIT      RSEOUT00 with IDOC IN S_IDOC and return)

3) Then you can schedule this report for every 15min as a background job.

Regards,

Praveen.

engswee
Active Contributor
0 Kudos

Hi Dianna

I haven't tried such throttling before in my previous projects, but have you tried adjusting the value of the parameter "Maximum Number of IDocs" in the selection screen of program RSEOUT00?

For example, if you want to allow 1000 IDocs per hour, and the program is scheduled to run 10 times an hour, so set the maximum IDocs to 100.

I'm not sure if it will work according to what you want to achieve, so can give it a try if you haven't already.

Rgds

Eng Swee