I would like to share a knowledge with you all, that I came to know while working with Enhancement Implementation in SAP.
As BADI is an Enhancement, it should be assigned to Enhancemment Implementation. This Enhancement Implimentation will be assigned to one Enhancement Spot. Now our Enhancement Implementation can have multiple BADI implementations. For each BADI implementation we have to mention the Runtime Behaviour (Provide a tick mark in the check box – ‘Implementation is active’).
Now suppose our Enhancement Implementation has two BADI Implementations BADI1 and BADI2. And Both the BADI Implementations are active and Runtime Behavior is Implementation is active. At a later point of time BADI1 is deleted and only BADI2 exist and is active. But the BADI assigment of BADI1 to the enhancement implementation still exist. Then while execution, when the control comes to Enhancement Implementation, it’ll check for the BADI implementations in that. There BADI1 and BADI2 are present. And if BADI1’s (deleted BADI) runtime behaviour is active, then control will just skip the remaining BADI’s, as BADI1 is not available. So BADI2 will not be executed.
For proper execution we should uncheck the Runtime behaviour of BADI1 so that only BADI2 is in active stage in our case.
So make sure that you have provided the Runtime behaviour of Enhancement Implementation elements for proper working of Enhancements.