Использование операторов break и break-point в ABAP разработке считается моветоном. Оператор break-point id — совсем другое дело. Он полезен, и в этом посте вы узнаете, для чего его можно использовать.
Оператор ставит группу контрольных точек. Активировать конкретную группу может любойпользователь консультант в транзакции SAAB, ограничив максимальный срок действия активации. При достижении break-point id с активной группой для этого консультанта будет запущен отладчик.
Одна группа точек может ставиться в объектах, относящихся по смыслу к одному функционалу или проекту. Это может быть какая-нибудь подсистема или реализация cервиса. В этом случае название группы должно описывать смысл или содержать аббревиатуру/название подсистемы:
break-point id может ставиться внутри функционала, который вызывается через настройку или удаленные вызовы. Такие программные модули не имеют явного места вызова и название группы может пояснять принцип вызова. Активация контрольных точек может облегчить поиск z-функционала, вызываемого в процессе работы стандартной транзакции или при работе веб-сервиса.
Пример:
Удобно иметь универсальные группы контрольных точек, когда для отдельного типа расширения стандарта создается своя группа. В названии такой группы должен быть указан тип расширения:
Так как во время отладки нельзя временно отключить активные группы, в некоторых случаях стоит предусмотреть их программное отключение. Например, так:
break-point id — это простой и удобный инструмент, позволяющий сократить время, затрачиваемое на поддержку кода. Как с любым инструментом, им главное не злоупотреблять. Чем лучше вы определите правила его использования, тем эффективнее он будет. Что делать, если вы его не используете, а в системе уже много расширений, в которых он мог бы пригодиться? Ввести его в свой арсенал и использовать во всех новых разработках, а в старых добавлять его тогда, когда в них вносятся корректировки.
Что делает
Оператор ставит группу контрольных точек. Активировать конкретную группу может любой
Как может быть использован
Одна группа точек может ставиться в объектах, относящихся по смыслу к одному функционалу или проекту. Это может быть какая-нибудь подсистема или реализация cервиса. В этом случае название группы должно описывать смысл или содержать аббревиатуру/название подсистемы:
- Стандартные группы точек:
- cpe_formula_evaluation, cpe_formula_check, cpe_failing_quot_forecast — расчет формул и проверки в прайсинге;
- alv_grid, salv_bs — формирование alv grid-ов.
- Клиентские группы точек:
- zabap_edo — внедрение электронного документооборота;
- zabap_odata — реализация odata сервиса.
break-point id может ставиться внутри функционала, который вызывается через настройку или удаленные вызовы. Такие программные модули не имеют явного места вызова и название группы может пояснять принцип вызова. Активация контрольных точек может облегчить поиск z-функционала, вызываемого в процессе работы стандартной транзакции или при работе веб-сервиса.
Пример:
- zabap_pc_open_fi, z_bf_open_fi — контрольные точки для обработки событий open-fi / BTE;
- zabap_bp_bdt — точки остановки для расширения транзакции BP через BDT;
- zabap_hr_padru — точки для дебага расширений форм в hr;
Удобно иметь универсальные группы контрольных точек, когда для отдельного типа расширения стандарта создается своя группа. В названии такой группы должен быть указан тип расширения:
- zabap_badi — реализации BADI;
- zabap_exit — user-exit-ы;
- zabap_enh — реализация явных и неявных расширений.
Так как во время отладки нельзя временно отключить активные группы, в некоторых случаях стоит предусмотреть их программное отключение. Например, так:
STATICS sv_break_off TYPE flag.
" Если вам больше не требуется остановка в этом месте,
" установите значение переменной sv_break_off = ‘X’.
IF sv_break_off = abap_false.
BREAK-POINT ID zabap_exit.
ENDIF.
break-point id — это простой и удобный инструмент, позволяющий сократить время, затрачиваемое на поддержку кода. Как с любым инструментом, им главное не злоупотреблять. Чем лучше вы определите правила его использования, тем эффективнее он будет. Что делать, если вы его не используете, а в системе уже много расширений, в которых он мог бы пригодиться? Ввести его в свой арсенал и использовать во всех новых разработках, а в старых добавлять его тогда, когда в них вносятся корректировки.
kalyaka
Жаль, что нет возможности применить break-point id для программ, запускающихся в background.
Расскажите еще про класс CL_DEBUG.