Checkpoint Group

Введение в «Checkpoint Group»

Понятие и реализация «Сheckpoint Group» изначально появились в SAP Web Application Server (SAP WebAS) 6.20 и целиком относятся к области контроля правильности и возможности отслеживания переменных. При грамотном применении, технология облегчает работу по отладке и повышает качество ABAP кода.Данные проверки являются переносимыми между системами, с помощью транспортов. Управляется с помощью транзакции SAAB.

Checkpoints можно определить как для оператора BREAK-POINTS так и с помощью оператора ASSERT.

Для отображения данных в журнале группы также возможно использовать оператор LOG-POINT.

Рассмотрим оператор ASSERT

SAP описывает следующий синтаксис для данного оператора:

  1. ASSERT [[ID group [SUBKEY subkey]]
  2. [FIELDS field1 field2 table1 table2...]
  3. CONDITION] log_exp.

Checkpoint Group

После нажатия кнопки создать переходим на экран с основными параметрами Checkpoint Group.

image

Существует 3 варианта активации групп:

  • Personal Activation;
  • User Level activation;
  • Server Level Activation.

В случае Personal Activation, группа активируется только для текущего пользователя. User Level — для указанных пользователей, Server Level — для указанных серверов

Пример определения пользователей:
image

Пример определения серверов:
image

Для управления checkgroups возможно определение для каждого из операторов:
image

BREAK-POINT определяются как активные или неактивные. Неактивные будут игнорироваться. В случае если BREAK-POINT активированы, то при достижении данного оператора будет вызван отладчик.

Синтаксис оператора BREAK-POINT:

  1. BREAK-POINT { [ID groupID]
  2. | [log text] }.
  3.  
  4. Ex. BREAK-POINT ID YH_check.

В случае если опустить параметр 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:

  1. REPORT yh1316_test_checkgrp..
  2. ** Parameters Declarations
  3. p_carrid LIKE sflight-carrid.
  4.  
  5. *data : max type i.
  6. *Types Declarations of sflight
  7. TYPES : BEGIN OF type_s_sflight,
  8. carrid TYPE sflight-carrid,
  9. connid TYPE sflight-connid,
  10. fldate TYPE sflight-fldate,
  11. price TYPE sflight-price,
  12. max TYPE i,
  13. END OF type_s_sflight.
  14.  
  15. *Field String Declarations for sflight
  16. DATA: fs_sflight TYPE type_s_sflight.
  17.  
  18. *Internal table for Sflight Data
  19. DATA : t_sflight LIKE
  20. STANDARD
  21. TABLE OF fs_sflight.
  22. DATA yh1316_subkey TYPE char200.
  23.  
  24. IF p_carrid IS INITIAL.
  25. SELECT carrid
  26. connid
  27. fldate
  28. price
  29. FROM sflight
  30. INTO fs_sflight.
  31. WRITE: / fs_sflight-carrid,
  32. fs_sflight-connid,
  33. fs_sflight-fldate,
  34. fs_sflight-price.
  35.  
  36. APPEND fs_sflight TO t_sflight.
  37. ASSERT ID yh1316_check SUBKEY 'YH1316_parameter_if_initial'
  38. FIELDS p_carrid
  39. t_sflight
  40. fs_sflight-carrid
  41. fs_sflight-connid
  42. fs_sflight-fldate
  43. fs_sflight-price
  44. condition p_carrid eq 'LH' .
  45.  
  46.  
  47. ASSERT ID yh1316_check SUBKEY 'YH1316_1'
  48. FIELDS p_carrid
  49. t_sflight
  50. CONDITION p_carrid EQ 'LH' .
  51.  
  52. ASSERT ID yh1316_check SUBKEY 'YH1316_2'
  53. FIELDS p_carrid
  54. t_sflight
  55. CONDITION p_carrid EQ ’LH’.
  56. SELECT carrid connid fldate MAX( price ) AS max
  57. INTO CORRESPONDING FIELDS OF fs_sflight
  58. FROM sflight
  59. WHERE carrid EQ p_carrid
  60. GROUP BY carrid connid fldate
  61. ORDER BY carrid max DESCENDING.
  62. IF sy-dbcnt < 4.
  63.  
  64. APPEND fs_sflight TO t_sflight.
  65. LOG-POINT ID yh1316_check SUBKEY 'LOG_POINT'
  66. FIELDS p_carrid
  67. t_sflight
  68. fs_sflight-connid
  69. fs_sflight-fldate
  70. fs_sflight-max.
  71. WRITE: / fs_sflight-carrid, fs_sflight-connid, fs_sflight-fldate,
  72. fs_sflight-max.

Для управления Checkgroup возможно создание вариантов. Варианты создаются как локально, так и под конкретного пользователя.

При создании варианта можно выбирать различные типы объектов для которых активируются

  1. checkpoints.
  2. Checkpoint Group
  3. Program
  4. Class
  5. Function Group

Для каждого Object type определяются индивидуальных параметров для Breakpoint, Logpoint и Assert. Опции соответствуют перечисленным ранее для экрана создания.

После создания варианта перейдём обратно в checkgroup. Убедитесь что вариант активирован.

Как видно выше, создаются как локальные, так и глобальные варианты.

Запустим программу код которой был предоставлен выше.

Если условие Assert не выполняется — создаётся запись в log. Данный log просматривается в транзакции SAAB для определённой Check Group.

Log также воздаётся для оператора LOG-POINT. Для этого оператора также можно определить параметр SUBKEY. Данный ключ служит для дополнительной сортировки по определённым флагам (SUBKEY).

Просмотр Log возможен в двух представлениях:

  • Group/Subkey/Program/Procedure
  • Group/Program/Procedure/Subkey

Ниже представлен один из вариантов отображения:

В log возможно провалиться в конечные строки дерева, где будут отображены расширенные данные.

Если в параметрах Assert были указаны переменные/таблицы, то они могут быть выведены на просмотр. Например для таблиц можно просмотреть всех хранящиеся в ней записи.

В отладчике возможен просмотр текущей Checkgroup.

Источник статьи: SAP ABAP: Understanding «Checkpoint Group» (перевод статьи c saptechnical.com)

Комментарии