Classic and new BAdIs differ in a number of features important for migration:
- Differences in the BAdI objects
- In the case of classic BAdIs, you create a BAdI object by calling a factory method and reference it by means of a reference variable of the type of the BAdI interface.
- In the case of new BadIs, you create a BAdI object with the ABAP statement GET BADI as a handle for the calls of BAdI methods and you reference it with a reference variable of the type of the BAdI. A BAdI object is an instance of an internal BAdI class which is invisible to the outside world.
- Passing comparison values to the filter
- In the case of classic BAdIs, the filter values are stored in a structure and passed with the call of the BAdI methods.
- In the case of new BAdIs, the comparison values for the filters used to search for implementations are passed when the BAdI object is created with the GET BADI statement.