- •Типы модулей abap/4.
- •Что такое событие. Основные события.
- •Программа драйвера.
- •Порядок выполнения событий, определенный программой драйвера.
- •События abap/4, распределенные по категориям.
- •Операторы, используемые для прекращения событий.
- •Типы подпрограмм.
- •Определение и вызов внутренних подпрограмм.
- •Особенности оператора form.
- •Синтаксис оператора perform.
- •Операторы, используемые для выхода из подпрограммы.
- •Определение глобальных переменных.
- •Определение локальных переменных.
- •Определение рабочей области tables.
- •Передача параметров без контроля типов.
- •Передача типизированных параметров.
- •Синтаксис передачи типизированных параметров.
- •Передача Field Strings.
- •Способы передачи параметров.
- •Дополнения оператора form и получающийся метод передачи параметров:
- •Передача по значению.
- •Передача по ссылке.
- •Передача значения и результата.
- •Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.
- •Методы и результаты передачи внутренней таблицы в подпрограмму:
- •Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:
- •Синтаксис описания внутренней таблицы в подпрограмме.
- •Синтаксис описания внутренней таблицы подпрограмме:
- •Передача внутренней таблицы со строкой заголовка.
- •Вызов внешних подпрограмм.
- •Оператор include.
- •Представление функциональных модулей.
- •Функциональные группы.
- •Определение функционального интерфейса модуля
- •Создание функционального модуля.
- •Использование releasing в функциональном модуле.?
- •Установка значения sy-subrc по возвращению из функционального модуля.
- •Оператор message ... Raising.
События abap/4, распределенные по категориям.
В 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 |
Операторы, используемые для прекращения событий.
Из события можно выйти в любое время с использованием следующих операторов:
exit
check
stop
Далее описывается эффект check и exit, если они закодированы вне цикла. Эффект 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. Если нужно установить это значение, можно присвоить числовое значение этой переменной перед остановкой.
Типы подпрограмм.
Подпрограмма (subroutine) — раздел многократного использования кода. Она похожа на минипрограмму, которую можно вызвать из другого пункта программы. В ее пределах можно определять переменные, выполнять операторы, вычислять результаты и производить вывод. Для определения подпрограммы используются оператор form — для указания начала подпрограммы, и endform — для указания конца подпрограммы. Имя подпрограммы не может превысить 30 символов.
Для вызова подпрограммы используется оператор perform.
Есть два типа подпрограмм:
внутренние подпрограммы (Internal subroutines)
внешние подпрограммы (External subroutines)
Определение и вызов внутренних подпрограмм.
Определения подпрограмм обычно размещают в конце программы после всех событий. Оператор form определяет конец предыдущего события и начало подпрограммы. Подпрограммы не могут быть вложены в события.
Синтаксис оператора form:
form s [tables t1 t2 ...]
[using u1 value(u2) ...]
[changing c1 value(c2) ...].
---
endform.
где:
s — имя подпрограммы
t1, t2, u1, u2, c1 и c2 — параметры
tables определяет внутренние таблицы, которые должны быть переданы как параметры
дополнение value не может использоваться после tables
дополнение value может быть применено к любым переменным, которые передаются с использованием using или changing
--- — любое число строк программы
Особенности использования оператора form:
все дополнения являются опциями
если дополнения присутствуют, то они должны следовать строго в приведенном выше порядке, т.е.: tables, using, changing
каждое дополнение может быть определено только один раз
нельзя использовать запятые для отделения параметров
tables используется для передачи только внутренних таблиц — не таблиц базы данных
подпрограмма может вызывать другую подпрограмму
поддерживается рекурсия — подпрограмма может вызвать сама себя или другую подпрограмму, которая, в свою очередь, вызывает первую
определения подпрограмм не могут быть вложены (нельзя определить подпрограмму внутри другой подпрограммы)
Синтаксис оператора perform:
perform a) s
b) n of s1 s2 s3 ...
[tables t1 t2 ...]
[using u1 u2 ...]
[changing c1 c2 ...].
где:
s, s1, s2, s3 — имена подпрограмм
n — числовая переменная
a) и b) являются взаимоисключающими
tables, using и changing могут появиться или с a) или с b)
дополнение value() не может использоваться с perform
Используя синтаксис b), можно определить, какая из списка подпрограмм должна быть выполнена. Выполняется n-ая подпрограмма из списка имен подпрограмм. Например, если n = 2, то будет выполнена вторая подпрограмма из списка.
