Три основных события
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. Если Вы хотите установить это значение, Вы можете назначить числовое значение этой переменной перед остановкой.