Idocs and BAPIs are very different so it should be easy to choose between them depending on your requirements.
- System can work even if target system not always online. The Idoc will be created and sending will just continue once you get connected to the other system
- No additional programming required. You just need to set-up the configuration
- Receipt/processing on the target system may not be immediate.
- The sending system has no way to know whether the target system actually recieved what you sent. (Unless you use ALE)
- If there is no SAP standard Idoc available for your reqt, it’s harder to create a customized Idoc than a customized BAPI
- You can tell if your sending was successful or not
- Sending to / processing on the other side is immediate
- Easier to create your own BAPI than your own Idoc
- Will only work if you have an active online connection.
- Some programming required to call the BAPI.
Others interface methods you might also want to consider are ALE and RFCs.