Три основных события

Events (События).

Программы ABAP/4 управляемы событиями.

Событие (event) – тэг, который идентифицирует раздел кода. Раздел кода, связанный с событием, начинается с названия события и заканчивается тогда, когда начинается следующее событие. Основные события – initialization, start-of-selection, и end-of-selection. Названия события – зарезервированные слова. Вы не можете создать новые события. Вы можете только использовать существующие.

report ztx1701.

initialization.

write / '1'.

 

start-of-selection.

write / '2'.

 

end-of-selection.

write / '3'.

Программа драйвера (driver program) – программа, которая управляет другой программой. Программы драйвера находятся в системе R/3. Когда Вы запускаете свою программу, сначала начинает работать программа драйвера, которая управляет событиями в Вашей программе.

Код, связанный с событием, вызван оператором в программе драйвера. События вызываются программой драйвера в предопределенной последовательности.

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

report ztx1702.

data f1 type i value 1.

 

end-of-selection.

write: / '3. f1 =', f1.

 

start-of-selection.

write: / '2. f1 =', f1.

f1 = 99.

 

initialization.

write: / '1. f1 =', f1.

add 1 to f1.

1. f1 = 1

2. f1 = 2

3. f1 = 99

Последовательность выполнения всегда – initialization, start-of-selection, end-of-selection. Также есть другие события; некоторые происходят после initialization, некоторые происходят между start-of-selection и end-of-selection.

Программисты обычно записывают события в порядке их выполнения.

Есть одиннадцать различных событий в ABAP/4, они категоризированны согласно тому, как они вызваются.

События ABAP/4

Категория Events
Driver initialization at selection-screen start-of-selection get end-of-selection
User at line-selection at pfn at user-command
Program top-of-page end-of-page

События драйвера вызваны программой драйвера. Пользовательские события вызваны пользователем через пользовательский интерфейс. События программы – вызванные изнутри Вашей программы.

Использование событий с оператором write.У событий есть два необычных эффекта при использовании их с оператором write:

  • Если у программы будет экран выбора, и оператор write записан перед событием start-of-selection то Вы не будете видеть вывод.
  • Новое событие всегда начинает новую строку в выводе.

Событие top-of-page.Выполняется в начале страницы.

Событие start-of-selection.Выполняется в начале выбора.

report ztx1703 no standard page heading.

parameters p1(8).

 

write: / 'p1 =', p1.

 

initialization.

p1 = 'Init'.

 

end-of-selection.

write: /(14) sy-uline,

/ 'End of program'.

 

top-of-page.

write: / 'This is My Title'.

skip.

This is My Title

p1 = INIT

--------------

End of program

Нельзя помещать вызов событий в операторы условий и цикла. Это вызовет ошибку!!! Пример неправильного вызова:

report ztx1704.

data f1.

 

start-of-selection.

f1 = 'A'.

 

if f1 = 'A'.

end-of-selection.

write: / f1.

endif.

У событий более высокий приоритет чем других операторов ABAP/4. Вы не должны помещать определения данных в пределах событий. Хотя это не вызывает синтаксическую ошибку, это – плохой стиль программирования. Все определения данных должны быть сделаны в начале программы.

Прекращение событий.Вы можете выйти из события в любое время, используя следующие операторы:

  • exit
  • check
  • stop

Эффект stop не зависит от того, записан ли он в цикле или нет.

Во всех событиях

  • check немедленно прекращает текущее событие и переходит с следующему событию.
  • stop немедленно останавливает текущее событие, и переходит к событию end-of-selection Выполнение stop в пределах end-of-selection оставляет событие.

В событиях, которые происходят перед start-of-selection

  • exit и check имеют то же самое поведение. Они оба немедленно оставляют события, и обработка переходит к следующему событию (или действию, такое как дисплей экрана выбора).

В start-of-selection и событиях, которые происходят после этого

  • exit заканчивает отчет и показывает список вывода. Существует единственное исключение; в пределах top-of-page, exit ведет себя как check.
  • check оставляет событие, и обработка продолжает следующее событие (или действие, такое как отображение списка вывода).

check, exit и stop не устанавливает значение sy-subrc. Если Вы хотите установить это значение, Вы можете назначить числовое значение этой переменной перед остановкой.