Hi HyunKyu Chang,
BAPI
- SAP-proprietary
- Based on RFC, an SAP-proprietary protocol
- Fixed input structure (no URL with flexible query parameters)
- Fixed output structure (structures, tables, but not a dynamic number of each)
- Manual documentation describes the service's structure for humans only
Conclusion: Good for inter-connecting SAP systems or back-end type connections
OData
- Open Standard
- Based on REST, the web's de facto standard protocol for app integration
- Flexible query language (filter, sort, expand, associate, search)
- Flexible output (entity, entity set, expanded entity)
- Metadata document explains service structure in machine-readable format
Conclusion: Good for connecting SAP systems to Mendix (Client)
The main thing OData gains over BAPIs are flexibility, open standards, and machine-readability. This may come at the price of speed. (It is possible to emulate OData over a BAPI interface: (URL query) string in, (JSON result) string out according to some posts).
BAPI’s are longer present in SAP and it could be the case that you have only that option for some objects.
Go Make It