Введение в «Checkpoint Group»
Понятие и реализация «Сheckpoint Group» изначально появились в SAP Web Application Server (SAP WebAS) 6.20 и целиком относятся к области контроля правильности и возможности отслеживания переменных. При грамотном применении, технология облегчает работу по отладке и повышает качество ABAP кода.Данные проверки являются переносимыми между системами, с помощью транспортов. Управляется с помощью транзакции SAAB.
Checkpoints можно определить как для оператора BREAK-POINTS так и с помощью оператора ASSERT.
Для отображения данных в журнале группы также возможно использовать оператор LOG-POINT.
Рассмотрим оператор ASSERT
SAP описывает следующий синтаксис для данного оператора:
После нажатия кнопки создать переходим на экран с основными параметрами Checkpoint Group.
Существует 3 варианта активации групп:
В случае Personal Activation, группа активируется только для текущего пользователя. User Level — для указанных пользователей, Server Level — для указанных серверов
Пример определения пользователей:
Пример определения серверов:
Для управления checkgroups возможно определение для каждого из операторов:
BREAK-POINT определяются как активные или неактивные. Неактивные будут игнорироваться. В случае если BREAK-POINT активированы, то при достижении данного оператора будет вызван отладчик.
Синтаксис оператора BREAK-POINT:
| [log text] }.
В случае если опустить параметр ID, точка будет вызываться безусловно (постоянный статус активно). Текст 'log text' будет отображаться в log.
В случае работы фонового процесса, программа не прерывается на breakpoint. Если в программе будет вызван breakpoint, то в системный протокол (log) будет внесена запись «Breakpoint reached» с указанием имени программы и местоположением breakpoint. Если breakpoint не активен, то они игнорируются.
Далее рассмотрим оператор ASSERT.
Существует три основных варианта использования оператора:
Inactive: оператор не отрабатывает
Log: протоколирование при использовании
Abort: возникает прерывание программы (runtime error ASSERTION_FAILED)
В случае фонового процесса возможны два варианта исполнения:
Log: происходит протоколирование события
Abort: происходит прерывание программы и соответствующая запись вносится в log
Принципы использования ASSERT:
Не используйте ASSERT вместо exceptions.
Используйте ASSERT только в пользовательском коде
При вызове ASSERT создаются log записи до runtime error.
Пример программы использующий LOG-POINT и ASSERT:
REPORT yh1316_test_checkgrp.. ** Parameters Declarations p_carrid LIKE sflight-carrid. *data : max type i. *Types Declarations of sflight carrid TYPE sflight-carrid, connid TYPE sflight-connid, fldate TYPE sflight-fldate, price TYPE sflight-price, max TYPE i, END OF type_s_sflight. *Field String Declarations for sflight *Internal table for Sflight Data STANDARD TABLE OF fs_sflight. SELECT carrid connid fldate price FROM sflight INTO fs_sflight. fs_sflight-connid, fs_sflight-fldate, fs_sflight-price. FIELDS p_carrid t_sflight fs_sflight-carrid fs_sflight-connid fs_sflight-fldate fs_sflight-price condition p_carrid eq 'LH' . FIELDS p_carrid t_sflight CONDITION p_carrid EQ 'LH' . EXIT. ELSE. FIELDS p_carrid t_sflight CONDITION p_carrid EQ ’LH’. INTO CORRESPONDING FIELDS OF fs_sflight FROM sflight WHERE carrid EQ p_carrid GROUP BY carrid connid fldate ORDER BY carrid max DESCENDING. FIELDS p_carrid t_sflight fs_sflight-connid fs_sflight-fldate fs_sflight-max. fs_sflight-max.
Для управления Checkgroup возможно создание вариантов. Варианты создаются как локально, так и под конкретного пользователя.
При создании варианта можно выбирать различные типы объектов для которых активируются
Для каждого Object type определяются индивидуальных параметров для Breakpoint, Logpoint и Assert. Опции соответствуют перечисленным ранее для экрана создания.
После создания варианта перейдём обратно в checkgroup. Убедитесь что вариант активирован.
Как видно выше, создаются как локальные, так и глобальные варианты.
Запустим программу код которой был предоставлен выше.
Если условие Assert не выполняется — создаётся запись в log. Данный log просматривается в транзакции SAAB для определённой Check Group.
Log также воздаётся для оператора LOG-POINT. Для этого оператора также можно определить параметр SUBKEY. Данный ключ служит для дополнительной сортировки по определённым флагам (SUBKEY).
Просмотр Log возможен в двух представлениях:
Ниже представлен один из вариантов отображения:
В log возможно провалиться в конечные строки дерева, где будут отображены расширенные данные.
Если в параметрах Assert были указаны переменные/таблицы, то они могут быть выведены на просмотр. Например для таблиц можно просмотреть всех хранящиеся в ней записи.
В отладчике возможен просмотр текущей Checkgroup.
Источник статьи: SAP ABAP: Understanding «Checkpoint Group» (перевод статьи c saptechnical.com)