I'm currently working at a project were we need to integrate R/3 with several systems using a message broker similar to XI. The interfaces will vary and some will be asynchronus and some synchronus. The data loads can also vary. For the synchronus calls the amount of data will most likely be quite small, but for the asynchronus calls we will do batch updates.
My question is, for the batch updates coming from the message broker, what is the best way to get the data in R/3? Lets say for instance we have to create 200 000 business partners, this information is sent to the message broker from an external system and further on to R/3, then I assume doing a BAPI call to create these business parters is not the best way... Should we create a batch input program? Can the batch input program be called externally via an RFC call and pick up a file or can it only be scheduled to execute and pick up the file already placed somewhere? Are there any other ways you recommend to solve this?
Also, can R/3 send large amounts of data (eg in XML format) to other systems? If so how can this be accomplished? We also need to send data from R/3 to external systems for updates, and we cant always initiate that communication from the external system, we might need R/3 to initiate the communication.