Zunächst: mach bitte keinen SELECT auf die EDID4.
Mit zunehmendem Betrieb wird diese Tabelle immer größer und damit auch langsamer... Du hast doch alle benötigten Daten im Zugriff über die Methodenschnittstelle.
Die Methode wird bestimmt gerufen. Es ist aber schwer bis gar nicht zu debuggen, da es in der Regel a) eine Verbuchung und b) asynchron ist.
Wirklich testen kannst Du es nur, indem Du die IDOCs im Zielsystem überprüfst.
Zur Ausführung/Suche: ich bitte Dich an dieser Stelle nochmals, Dir generelle Infos über BAdIs im Netz zusammen zu suchen...
Aber kurz dazu: ein Interface ist immer "nur" eine Definition. Deine Z-Klasse implementiert das Interface (OO-Grundlagen). Ist Deine Klasse aktiv, "merkt" das System dies. Kommt es beim Durchlauf des Codings an die Stelle, an der das BAdI gerufen werden soll, wird die Methode GET_INSTANCE der Klasse CL_EXITHANDLER gerufen. Diese liefert Deine aktive Implementierung (wenn sie denn existiert) und kann dann direkt ausgeführt werden.