Добрый день, уважаемые читатели!
Являясь ABAP разработчиком хочется сделать свой вклад в повышение качества пользовательских SAP программ. С этой целью хочу опубликовать цикл переводов статей об интересных и главное полезных и не очень распространённых техниках из базы знаний SAP (SAP community network). Как и в любой разработке ключевые понятия достаточно тяжело переводить на русский язык и по большому счету имеет небольшой смысл, поэтому ключевые слова привожу на английском.
От Автора:
Странное название статьи? Я связываю транзакцию SAAB и третью букву латинского алфавита (Charlie = C). В частности, в статье будут рассмотрены Logpoints. В ABAP Logpoints доступны с версии NW2004s.
Со времени внедрения данной техники в 2005 году, тема обсуждалась несколько раз на SCN, например:
- Checkpoint-Group the powerful friend of every ABAPer but…beware! by Andrea Olivieri
- How to Instrument Your ABAP Code With Checkpoint Groups by Claudia Dangers
Несмотря на все преимущества использования checkpoint group, технология по прежнему широко не используется в пользовательских ABAP разработках. Одна из возможных причин, отсутствие у разработчиков практики использования и осознания преимуществ технологии. Данная статья посвящена одному из возможных сценариев применения logpoints. Так-же рассмотрим пошаговый пример использования logpoints. Отдельно замечу что это не полноценное руководство по использованию checkpoint group. Для полноценного изучения темы рекомендую обратиться на help.sap.com. Пример ABAP программы также не претендует на эталон, данный код придуман для изучения конкретного примера.
1. Сценарий использования
Достаточно часто приходится сталкиваться с повторяющейся снова и снова проблемой. Например, в продуктивной системе возникает ошибка, которую не получается воспроизвести ни в тестовой, ни в системе разработки. Функциональный консультант кивает на разработчика, в свою очередь разработчик уверен, что проблема со стороны конфигурации системы (т.е. консультанта). Разработчик сравнивает код во всех системах и не находит ни каких разночтений. В тесте всё работает корректно и разработчик снова обращается к консультанту. Консультант в свою очередь проверяет конфигурации, и так-же не находит различий и считает что ошибка в ABAP коде. Круг замкнулся. Конечный же пользователь сильно переживает, что его проблема по прежнему не решена и требует срочно всё исправить. Разработчик решает рассмотреть проблему более глубоко. После изучения лога приложения он может локализовать место возникновения проблемы, но причина её появления по прежнему не ясна. Было бы очень полезно узнать, какими данными оперирует программа, чтобы сравнить с другой системой, но отладка в продуктиве, по множеству причин, оказывается невозможной.
2. Пример
Пример ниже элементарный, но позволяет понять насколько просто использовать logpoints. Ниже описано как объявить входные и выходные параметры произвольного метода для их протоколирования (внесения в Log). Рекомендую для важных методов заявлять протоколирование входящих и исходящих параметров. Разработчики в свою очередь могут объявлять произвольные переменные для протоколирования.
2.1 Программа
Следуя общей идее статьи был создан класс с методом BORDER_CONTROL. В методе объявлены входной и выходной параметры (таблицы). Структура таблиц содержит поля имя, описание, национальность, дату и произвольный флаг.
Для тестирования ниже представлена программа вызывающая метод обработки таблицы:
2.2 Настройка Checkpoint Group
Для возможности ведения Logpoint, необходимо создать и активировать Checkpoint Group.
Для параметра Logpoints поменяем состояние на Log
Также возможно определить конкретного пользователя для log. Опция доступна после нажатия кнопки User.
Нажмите и введите имя пользователя.
Сохраните checkpoint group. При сохранении будет предложен диалог, где необходимо определить период активности группы. Настоятельная рекомендация активировать Log непосредственно перед и деактивировать сразу после отработки программы. Данная рекомендация возникает, т.к. таблицы в которых хранятся записи Log не обслуживаются автоматически и могут накапливать внушительные массивы данных.
После активации группы запустим тестовую программу. После отработки будет создан log (тр.SAAP->Checkpoint group->закладка Log)
Раскрыв дерево c log записями возможно просмотреть переменные/таблицы указанные для сохранения (FIELDS параметр для оператора LOG-POINT см.код метода). В данном примере в качестве параметров заданы входящая и исходящая таблица метода BORDER_CONTROL.
Можем увидеть записи входящей таблицы:
Исходящая таблица содержит обработанные записи с отмеченным флагом:
С помощью этой информации разрабочик может получить обзор данных с помощью которых возможно локализовать и найти возможную проблему или воспроизвести ситуацию в другой системе для дальнейшей отладки. Временные затраты на дополнение своего кода Logpoint минимальны и автор питает надежду что количество используемых checkpoint group в пользовательских разработках будет увеличиваться.
В этой статье автор описал один из примеров поясняющих в чём польза использования Logpoints. Существует большое количество других возможных применений не описанных в данной примере.
Если уже используете checkpoint groups, напишите, пожалуйста, в комментариях Ваш опыт использования.
Информацию о кпп Чарли (Checkpoint Charlie) можно узнать по ссылке.
Оригинал статьи можете найти по ссылке.
Автор: blick