Ich nehme an, du verwendest MB_MIGO_BADI, dieses is mehrfach implementierbar. Somit ist das Verhalten bei dir logisch. Was ich nicht ganz verstehe ist die "Fehlermeldung". Wann kommt die, ist es wirklich ein Fehler oder eine Warnung?Mehrfache Nutzbarkeit bedeutet für BAdI-Definitionen, daß es mehrere aktive BAdI-Implementierungen geben kann, die im Falle eines Aufrufs sämtlich aufgerufen werden, allerdings in einer nicht vorhersagbaren Reihenfolge.
Code: Alles auswählen.
* BAdI: Get instance (BAdI MB_MIGO_BADI interface)
CALL METHOD cl_exithandler=>get_instance
EXPORTING
exit_name = 'MB_MIGO_BADI'
null_instance_accepted = x
CHANGING
instance = if_badi.
IF NOT lcl_migo_globals=>if_badi IS INITIAL.
CALL METHOD if_badi->init
CHANGING
ct_init = t_badi.
DESCRIBE TABLE t_badi LINES l_badis_1.
IF l_badis_1 > 5.
MESSAGE a047.
ENDIF.
SORT t_badi BY class_id.
DELETE ADJACENT DUPLICATES FROM t_badi.
DESCRIBE TABLE t_badi LINES l_badis_2.
IF l_badis_1 <> l_badis_2.
MESSAGE a048.
ENDIF.
ENDIF.
Lies dir einfach mal die ganze BAdI-Doku durch, das hilft dir weiter.Schnittstelle:
CT_INIT: Tabellentyp Registrierung von Komponenten (ext. MIGO-Screens)
Das BAdI MB_MIGO_BADI ist als mehrfach nutzbar definiert. Im konkreten Fall dieses BAdI bedeutet das, dass es bis zu fünf aktive Implementierungen geben kann: Es existieren fünf Header-Subscreens und fünf Detail-Subscreens für externe Anwendungen.
Deshalb muss die externe Anwendung der MIGO seine Existenz mitteilen, da die MIGO zur Laufzeit keine Informationen über die Anzahl der aktiven Implementierungen hat. Die MIGO hat auch keine Möglichkeit, eine Implementierung direkt anzusprechen.
Dies geschieht dadurch, dass sich die externe Anwendung mit Hilfe der Registrierungstabelle mit einem eindeutigen Namen anmeldet (interne Tabelle CT_INIT). Der Name kann von der externen Anwendung frei gewählt werden.