Модуляризация: События и Подпрограммы (День 17)
Вопросы:
типы модулей, доступных в ABAP/4
события ABAP/4
события initialization, start-of-selection, и end-of-selection
внутренние и внешние подпрограммы
глобальные, локальные и статические переменные и рабочие области таблицы
использование exit, check, и stop в пределах событий и подпрограмм
1. Модули в abap/4
Модуль (modularization unit) – оболочка, в которую Вы можете поместить код. Он позволяет выделять группу строк программы от остальных, и затем выполнять их в определенное время. Программы в пределах модуля действуют как подпрограммы, которую можно вызвать из другой программы.
ABAP/4 содержит три типа модулей:
События
Подпрограммы
Функциональные модули
1. 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'.
1
2
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.