Отказ от ответственности Я продолжаю публиковать статьи/переводы, посвященные неиспользуемым и редко используемым методам разработки SAP ABAP. Ключевые понятия довольно сложно перевести на русский язык; разные интерпретации создают путаницу, поэтому я представляю их на английском языке.
Этот пост частично пересекается с прошлое , но содержит более подробное описание концепции группы контрольных точек.
Введение в группу контрольно-пропускных пунктов
Концепция и реализация «Группы контрольных точек» изначально появилась в SAP Web Application Server (SAP WebAS) 6.20 и полностью относится к области контроля корректности и прослеживаемости переменных.При правильном использовании технология облегчает отладку и повышает качество ABAP-кода.
Данные проверки переносятся между системами с помощью транспортов.
Управляется через транзакцию SAAB. Контрольные точки можно определить с помощью инструкции BREAK-POINTS и инструкции ASSERT. Также можно использовать оператор LOG-POINT для отображения данных в групповом журнале.
Рассмотрим оператор ASSERT. SAP описывает следующий синтаксис для этого оператора:
ASSERT — это расширенная версия оператора BREAK-POINT. Оператор можно использовать в коде, доставленном в производственную систему, без какого-либо влияния на код. Вызывается только в том случае, если группа Checkpoint активирована.ASSERT [[ID group [SUBKEY subkey]] [FIELDS field1 field2 table1 table2.] CONDITION] log_exp.
Для оператора предусмотрен расширенный список действий.
Группы контрольных точек могут быть определены и активированы в транзакции SAAB. Сгенерированный идентификатор используется для определения операторов ASSERT и BREAK-POINT. Ниже представлена транзакция SAAB на этапе создания идентификатора группы.
После нажатия кнопки «Создать» переходим на экран с основными параметрами Checkpoint Group.
Есть 3 варианта активации групп: Персональная активация;
Активация уровня пользователя;
Активация на уровне сервера.
В случае персональной активации группа активируется только для текущего пользователя.
Уровень пользователя — для указанных пользователей, Уровень сервера — для указанных серверов.
Пример определения пользователей:
Пример определения сервера:
Для управления контрольными группами можно определить для каждого из операторов:
BREAK-POINT определяются как активные и неактивные.
Неактивные будут игнорироваться.
Если активирован BREAK-POINT, то при достижении этого оператора будет вызван отладчик.
Синтаксис оператора BREAK-POINT: BREAK-POINT { [ID groupID]
| [log text] }.
Ex. BREAK-POINT ID YH_check.
Если опустить параметр ID, точка будет вызываться безусловно (постоянный статус активен).
В журнале будет отображаться текст «текст журнала».
Если запущен фоновый процесс, программа не прерывается в точке останова.
Если в программе вызывается точка останова, в системный журнал (журнал) заносится запись «Точка останова достигнута» с указанием имени программы и местоположения точки останова.
Если точки останова не активны, они игнорируются.
Далее давайте посмотрим на оператор ASSERT. Существует три основных варианта использования оператора: Неактивен: оператор не обрабатывается Журнал: ведение журнала во время использования.
Прерывание: происходит прерывание программы (ошибка выполнения ASSERTION_FAILED) В случае фонового процесса возможны два варианта выполнения: Журнал: событие протоколируется Прерывание: программа прерывается и в журнал вносится соответствующая запись.
Принципы использования ASSERT: Не используйте ASSERT вместо исключений.
Используйте ASSERT только в пользовательском коде При вызове ASSERT создаются записи журнала вплоть до ошибки времени выполнения.
Пример программы с использованием LOG-POINT и ASSERT: REPORT yh1316_test_checkgrp.
** Parameters Declarations
PARAMETERS:
p_carrid LIKE sflight-carrid.
*data : max type i.
*Types Declarations of sflight
TYPES : BEGIN OF type_s_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
DATA: fs_sflight TYPE type_s_sflight.
*Internal table for Sflight Data
DATA : t_sflight LIKE
STANDARD
TABLE OF fs_sflight.
DATA yh1316_subkey TYPE char200.
IF p_carrid IS INITIAL.
SELECT carrid
connid
fldate
price
FROM sflight
INTO fs_sflight.
WRITE: / fs_sflight-carrid,
fs_sflight-connid,
fs_sflight-fldate,
fs_sflight-price.
APPEND fs_sflight TO t_sflight.
ASSERT ID yh1316_check SUBKEY 'YH1316_parameter_if_initial'
FIELDS p_carrid
t_sflight
fs_sflight-carrid
fs_sflight-connid
fs_sflight-fldate
fs_sflight-price
condition p_carrid eq 'LH' .
ENDSELECT. ASSERT ID yh1316_check SUBKEY 'YH1316_1' FIELDS p_carrid t_sflight CONDITION p_carrid EQ 'LH' .
EXIT. ELSE. ASSERT ID yh1316_check SUBKEY 'YH1316_2' FIELDS p_carrid t_sflight CONDITION p_carrid EQ ’LH’.
SELECT carrid connid fldate MAX( price ) AS max
INTO CORRESPONDING FIELDS OF fs_sflight
FROM sflight
WHERE carrid EQ p_carrid
GROUP BY carrid connid fldate
ORDER BY carrid max DESCENDING.
IF sy-dbcnt < 4.
APPEND fs_sflight TO t_sflight.
LOG-POINT ID yh1316_check SUBKEY 'LOG_POINT'
FIELDS p_carrid
t_sflight
fs_sflight-connid
fs_sflight-fldate
fs_sflight-max.
WRITE: / fs_sflight-carrid, fs_sflight-connid, fs_sflight-fldate,
fs_sflight-max.
ENDIF.
ENDSELECT.
ENDIF.
Можно создавать варианты для управления Checkgroup. Опции создаются как локально, так и для конкретного пользователя.
Ниже приведен пример индивидуального варианта:
При создании варианта вы можете выбирать разные типы объектов, для которых активируются контрольные точки.
Группа контрольно-пропускных пунктов
Программа
Сорт
Функциональная группа
Для каждого типа объекта определяются отдельные параметры для точки останова, точки журнала и подтверждения.
Параметры те же, что и перечисленные ранее для экрана создания.
После создания опции вернемся к контрольной группе.
Убедитесь, что опция активирована.
Как вы можете видеть выше, создаются как локальные, так и глобальные варианты.
Запустим программу, код которой был приведен выше.
Если условие Assert не выполняется, создается запись в журнале.
Этот журнал просматривается в транзакции SAAB для конкретной группы проверок.
Журнал также возвращается для оператора LOG-POINT. Вы также можете определить параметр SUBKEY для этого оператора.
Этот ключ используется для дополнительной сортировки по определенным флагам (SUBKEY).
Просмотр журнала возможен в двух представлениях: Группа/Подключ/Программа/Процедура
Группа/Программа/Процедура/Подключ
Ниже приведен один из вариантов отображения:
В журнале можно попасть в конечные строки дерева, где будут отображаться расширенные данные.
Если в параметрах Assert были указаны переменные/таблицы, их можно отобразить.
Например, для таблиц вы можете просмотреть все записи, хранящиеся в них.
Отладчик позволяет просматривать текущую контрольную группу.
От автора перевода:
Первую публикацию, посвященную этой теме, можно прочитать по адресу связь .
Теги: #sap #abap #saab #инструменты тестирования #тестирование #устранение неполадок #разработка веб-сайтов #отладка
-
Чертовски Старая Crm
19 Oct, 24 -
Атаки Компьютерного Зрения
19 Oct, 24 -
Большое Будущее Для Y Combinator
19 Oct, 24 -
Вы Это Знаете…
19 Oct, 24 -
Youtube Показывает, Как Пентагон Учится
19 Oct, 24