Все программисты и большинство консультантов используют ABAP отладчик. ABAP Debugger нужен для отладки приложений. Типичная задача для отладчика — найти место возникновения какого-нибудь события. Для поиска нужного места можно использовать пошаговое выполнение программы, а можно установить динамическую точку прерывания. Динамическими (или условными) точками прерывания будем называть такие точки, которые срабатывают при определенном событии.
Наиболее популярные события, с которыми мне приходилось сталкиваться:
- Момент заполнения определенной переменной
- Вывод сообщения через команду MESSAGE
- Возникновение исключения
- Выбора данных из определенной таблицы
Определение момента заполнения переменной
Допустим мы отлаживаем стандартный отчет MB51 и нам нужно найти место заполнения внутренней таблицы IMAKT_KEY[]. Чтобы найти место, в котором изменяется нужная переменная, нужно создать точку наблюдения. Для этого включаем отладку через «/h» и выбираем в меню «Точки прерывания» -> «Создать точку наблюдения»
В появившемся окне, в поле «Перемен.» указываем имя наблюдаемой переменной
Далее выполняем программу, когда наблюдаемая переменная изменится, отладчик остановится
Условие для точек наблюдения
Пусть мы знаем что в таблицу IMAKT_KEY[] попадет ОЗМ с кодом ‘000000000500000017’ и нам нужно найти момент когда произойдет это условие. Создаем точку наблюдения и в поле «Свобод. уров. условия» указываем нужное условие
Продолжаем выполнение программы. Отладчик остановится в нужный момент.
Просмотр точек наблюдения, а также их редактирование и удаление можно на вкладке «ТочкиПрерыв/Наблюд»
Точка остановки при выводе сообщения
Предположим, у нас возникло сообщение и мы хотим найти место возникновения данного сообщения
Для начала нужно определить класс и номер сообщения. Для этого, кликаем на него и смотрим на строку «№ сообщения MSITEM019». Классом сообщения будет MSITEM, а номером — 019.
Далее открываем отладку и переходим на вкладку «ТочкиПрерыв/Наблюд». Нажимаем «Создать точку прерывания»
Переходим на вкладку «Сообщ.». Вводим класс сообщения в поле «Ид», а номер в поле «Номер». При необходимости можно указать тип (в нашем случае W).
Продолжаем выполнение и останавливаемся в нужном месте
Точка остановки при возникновении особой ситуации
Отловить момент возникновения особой ситуации можно способом, аналогичным предыдущему. В отладчике переходим на вкладку «ТочкиПрерыв/Наблюд». Нажимаем «Создать точку прерывания». Переходим на вкладку «Исключ.» и вводим нужное исключение.
Точка остановки при выборе данных из определённой таблицы
Когда нужно найти момент выбора данных из определённой таблицы, установка точки на всех операторах SELECT не целесообразна, т.к. их может быть огромное количество. Для остановки на выборе данных из нужной таблицы будем использовать скрипт.
Допустим нам нужно найти место выбора запасов из таблицы MSTQ в тр. MB52. Включаем отладчик и переходим на вкладку «Скрипт».
Можно написать скрипт вручную, а можно использовать стандартный скрипт SAP. Нажимаем «Загр. скрипт» и вводим RSTPDA_SCRIPT_BP_SELECT_TAB. Далее нажимаем «Запуск скрипта» и вводим таблицу, на которую хотим поставить точку.
Выполняем скрипт и останавливаемся в нужном месте
Спасибо за труд. Полезные статьи