Unterschiede zwischen klassischen und neuen
BAdIs
Klassische und neue BAdIs unterscheiden sich an einigen für die Migration wichtigen Stellen:
...
a. Bei den klassischen BAdIs wird ein BAdI-Objekt über den Aufruf einer Factory-Methode erzeugt und über eine Referenzvariable vom Typ des BAdI-Interfaces referenziert.
b. Bei den neuen BAdIs wird ein BAdI-Objekt über die ABAP-Anweisung GET BADI als Handle für die Aufrufe von BAdI-Methoden erzeugt und über eine Referenzvariable vom Typ des BAdIs referenziert. Ein BAdI-Objekt ist eine Instanz einer internen BAdI-Klasse, die ansonsten nach außen nicht sichtbar ist.
...
a. Bei den klassischen BAdIs werden die Filterwerte in einer Struktur abgelegt und erst beim Aufruf der BAdI-Methoden übergeben.
b. Beim den neuen BAdIs werden die Vergleichswerte für die Filter, mit denen nach Implementierungen gesucht wird, bereits bei der Erzeugung des BAdI-Objekts mit der Anweisung GET BADIübergeben.
Der Aufruf der Factory-Methode ist nicht 1:1 in die ABAP-Anweisung umsetzbar, da GET BADI auch ein bereits vorhandenes BAdI-Objekt zurückgeben kann, was bei der Factory-Methode nicht möglich war.
...
Übergabe von Vergleichswerten für den Filter
a. Ein klassisches BAdI kann nur einmal aufgerufen werden und die Aufrufstellen sind zentral erfasst.
b. Bei den neuen BAdIs ist mehrfacher Aufruf möglich und die Aufrufstellen sind nicht zentral erfasst.
Eine automatische Migration der Aufrufe ist deshalb nicht realisierbar.