https://abap-blog.ru/
1. Начиная с SAP_ABA 702 в отладчике появился инструмент позволяющий быстро включать трассировку (SE30/ST05):
Добавляем инструмент:
Ставим точку перед вызовом SQL (В моем случае получение хранимого объекта):
1. Начиная с SAP_ABA 702 в отладчике появился инструмент позволяющий быстро включать трассировку (SE30/ST05):
Добавляем инструмент:
Ставим точку перед вызовом SQL (В моем случае получение хранимого объекта):
2. ABAP отладчик ограничивает использование точек наблюдения
(whatchpoints) на field-symbols, однако можно обойти это ограничение
путём использования точки прерывания на базе исходного кода.
Рассмотрим пример кода:
Предположим Вы захотели остановится на итерации цикла когда значение
переменной <lv_test> будет иметь значение «3». Переходим в отладке
на вкладку точек прерываний и устанавливаем её следующим образом (тут
следует обратить внимание что не во всех версиях SAP системы есть
ограничение относительно заданного условия), при этом в качестве строки
кода обозначаем либо строку начала цикла, либо строку внутри цикла:
Рассмотрим пример кода:
6 способов найти место вызова сообщений
В качестве простого примера рассмотрим вызов сообщения в SE38, при неправильно указанном имени программы:
Перейдя в указанный класс сообщений (тр. SE91) можно воспользоваться командой на поиск мест, где используется указанное сообщение:
В результате список окажется довольно большим и нам надо будет прощелкать все программы в поисках нужного вызова:
В случае, когда список маленький, можем поставить точки прерывания в каждом из вызовов, повторим некорректный ввод программы мы, скорее всего, попадём в нужное нам место.
Данный способ не совсем удобен и не дает 100% результата, т.к. сообщение может быть вызвано не из класса сообщений, а список использования его программами может быть очень большим.
Способ второй. Наиболее результативными способами будут способы, которые используют отладчик. С помощью точек наблюдений в отладчике, мы можем отследить состояние системных переменных: sy-msgid и sy-msgno. Переходим в отладку (/h):
Способ третий. Таким же способом, как и ранее, попадаем в отладку, далее переходим к выставлению точек прерывания и указываем ABAP команду MESSAGE:

Либо добавляем её через меню:

В данном случае можно будет указать еще и тип вызываемого сообщения:

Способ четвертый. Найти вхождение вызова оператора MESSAGE, используя программы сканирования исходного текста. Первое что нужно сделать определится через статус системы где мы находимся и в какой программе нужно искать (По меню Система -> Статус):

Далее открываем программу сканирования исходного текста (через SE38) RPR_ABAP_SOURCE_SCAN (либо использовать транзакцию CODE_SCANNER) и заполняем искомые данные:

Результат:

Способ пятый. С помощью транзакции SAT можно проанализировать вызовы всех ABAP операторов в программе. Первым делом нужно создать вариант, в котором не будут объединяться измерения:

Далее запускаем транзакцию SE38 через SAT с нашим вариантом:

После трассировки смотрим иерархию вызовов и ищем оператор MESSAGE:

Результат:

Щелкнув два раза по позиции, мы перейдем в нужное нам место. Данный способ не является оптимальным, т.к. в больших программах файл трассировки будет очень большим и его анализ затянется.
Способ шестой. Использовать транзакцию ST05. Порядок действий следующий:
- Открыть две сессии в одной запустить ST05, во второй SE38 с неверным названием программы
- Активируем трассировку
- Запускаем программу в SE38
- Деактивируем трассировку

Как видим на рисунке, наше предположение было верным:

Комментарии
Отправить комментарий