Любые вызовы методов отдельного BAdI, и статические, и динамические, можно найти через отладчик. Хотя это не решает задачу "найти все места вызова BAdI" сразу. Находятся только те BAdI, которые используются в запускаемой транзакции.
Чтобы найти, какие BAdI используются в транзакции, нужно
1) запустить транзакцию и остановиться в ней перед тем моментом, начиная с которого нужно проверять использование BAdI (например, перед сохранением).
2) включить отладку в запущенной транзакции командой /h
3) выполнить очередное действие в транзакции (например, сохранить) — и попасть в отладчик
4) добавить точку прерывания (Shift+F9) для метода get_instance класса cl_exithandler
5) продолжить выполнение клавишей F8
Начиная с этого момента и до завершения транзакции отладчик будет останавливаться перед вызовом каждой BAdI.
Чтобы проверять наличие вызова только одной BAdI, а не получать остановку на каждом вызываемом, нужно на шаге 4) добавить условие.
В поле "Свободные условия выбора" ("Free Condition Entry") ввести название BAdI (то, что вводится в транзакции SE18).
Например, для ADDRESS_SUBSCREEN нужно написать
Code:
exit_name = 'ADDRESS_SUBSCREEN'
Тогда отладчик будет останавливать выполнение, например, в транзакции SU01 после нажатия на кнопку F7 "Просмотреть". Это статический вызов, находится в инклюде LSZA1TO3. Я его нашёл для примера, взяв первую пришедшую на ум транзакцию — su01. Как найти все места вызова этого ADDRESS_SUBSCREEN знает, наверное, Гугл (как Удав писал).