2
The dictionary meaning for fallback is 'an alternative plan that may be used in an emergency'. That's what exactly the fallback class is meant for. Fallback class comes into picture when there is no active implementation exists for the BADI. In such case the code in fallback class's method executes. As soon as an implementation exists in system, the implementation call will be used automatically. This fallback class we give when we create the BADI definition.
1
"By simply looking at BAPI_TRANSACTION_COMMIT code, we see quickly what is different from COMMIT WORK. It calls BUFFER_REFRESH_ALL function module right after COMMIT WORK.
So BAPI_TRANSACTION_COMMIT additionally refreshes a ""BAPI buffer"".
Assuming your program calls BAPIs consecutively and use a COMMIT WORK/BAPI_TRANSACTION_COMMIT only at the end so that to commit all BAPI updates once (better performance).Let's suppose the update during the COMMIT WORK fails (for any reason), the data is not written to database. If you have not refreshed the buffer using BAPI_TRANSACTION_COMMIT, the next BAPI calls will consider that some data will exist later, that is wrong."