BADI's & BAPI's
Pl throw light on the following issues.
1) What is BADI's & BAPI's?
2) Where it is used & how the same need to be used?
3) What are the deciding factors for selecting BADI or BAPI or an user exit?
4) I understand that user exits can be used only once & the BADI's can be used in different functionalities. Am i right?
Thanks in advance.