BAPI's are FM to execute actions over the SAP Business Objects. As you may have read in the ABAP Business Objects section, they are in fact Methods of the Business Objects.
SAP Business Objects belong to the BOR, or Business Object Repository. They are encapsulated, so the only way to access their data and processes is with it's methods for that purpose - that is, the business object BAPI's.
BAPI's are implemented as Function Modules. Like every FM, they are maintained with the Function Builder (transaction SE37). As a condition, all BAPI's support the following:
This conditions ensure that BAPI's will execute correctly in different conditions, like background tasks and as RFC's.
Another characteristic of BAPI's is that because of its encapsulation, the internal processes are independent of the external applications. The only thing needed is to know how to call this methods, but not the process itself. In this conditions, SAP may modify BAPI's without affecting external applications.
The only things needed to use BAPI's is:
There are many ways to find a particular BAPI. We will show you how to use the BAPI Explorer transaction:

As you can see, on the left there is a tree to navigate BAPI's hierarchically or alphabetically.
Here we have selected a BAPI belonging to the SalesOrder BO: BAPI_SALESORDER_CREATEFROMDAT2.

Finally, by double-clicking on the Function Module name we get to the BAPI itself:

We could have found this BAPI from the SWO1 transaction. Let's see...

Double-Click on BUS2032...

If we click on the green square, we will be directed to the BAPI FM.