BAPI's are the (historic) answer to the prehistoric BDC sessions or Batch Input Maps. The Batch Input Map setup worked lika a macro over screen "moves" (steps) which can still be used, but there is something much better around now. The idea is that whenever a field on a standard SAP document needs to be set (or a whole PO needs to be created) the table could be updated directly. Of course before a developer can do that, he or she would have to check everything SAP checks, lock everything SAP locks and pray that the "direct update" change does not mess up anything. The project's I've done over the last 10 years did not allow such processing - direct table update on standard SAP tables is forbidden. And unecessary.
Via a Batch Input Map the update can be done through the standard SAP transaction, executing the standard SAP checks and locking. Again fine, but a bit slow. And you can be quite sure that the solution falls over with the next SAP release. Screen flows of standard SAP documents tend to evolve (thus change).
So ? Use a BAPI, it will do the same as a fully prepared Batch Input Map, it will check the changes you would like to do, it will make sure the change is protected by locks, it will perform the update much faster than BIM's can and it will be a lot more likely to run another SAP release. In effect: there is no way to introduce faulty information into the SAP tables on SAP documents (e.g. the Purchase Order) - because when the BAPI is called with faulty information, it will not perform updates and tell you what went wrong with the call. There's even a test mode... (on most BAPI's).