
- •Типы модулей abap/4.
- •Что такое событие. Основные события.
- •Программа драйвера.
- •Порядок выполнения событий, определенный программой драйвера.
- •События abap/4, распределенные по категориям.
- •Операторы, используемые для прекращения событий.
- •Типы подпрограмм.
- •Определение и вызов внутренних подпрограмм.
- •Особенности оператора form.
- •Синтаксис оператора perform.
- •Операторы, используемые для выхода из подпрограммы.
- •Определение глобальных переменных.
- •Определение локальных переменных.
- •Определение рабочей области tables.
- •Передача параметров без контроля типов.
- •Передача типизированных параметров.
- •Синтаксис передачи типизированных параметров.
- •Передача Field Strings.
- •Способы передачи параметров.
- •Дополнения оператора form и получающийся метод передачи параметров:
- •Передача по значению.
- •Передача по ссылке.
- •Передача значения и результата.
- •Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.
- •Методы и результаты передачи внутренней таблицы в подпрограмму:
- •Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:
- •Синтаксис описания внутренней таблицы в подпрограмме.
- •Синтаксис описания внутренней таблицы подпрограмме:
- •Передача внутренней таблицы со строкой заголовка.
- •Вызов внешних подпрограмм.
- •Оператор include.
- •Представление функциональных модулей.
- •Функциональные группы.
- •Определение функционального интерфейса модуля
- •Создание функционального модуля.
- •Использование releasing в функциональном модуле.?
- •Установка значения sy-subrc по возвращению из функционального модуля.
- •Оператор message ... Raising.
Особенности оператора form.
Определения подпрограмм обычно размещают в конце программы после всех событий. Оператор form определяет конец предыдущего события и начало подпрограммы. Подпрограммы не могут быть вложены в события.
Синтаксис оператора form:
form s [tables t1 t2 ...]
[using u1 value(u2) ...]
[changing c1 value(c2) ...].
---
endform.
где:
s — имя подпрограммы
t1, t2, u1, u2, c1 и c2 — параметры
Особенности использования оператора form:
все дополнения являются опциями
если дополнения присутствуют, то они должны следовать строго в приведенном выше порядке, т.е.: tables, using, changing
каждое дополнение может быть определено только один раз
нельзя использовать запятые для отделения параметров
tables используется для передачи только внутренних таблиц — не таблиц базы данных
подпрограмма может вызывать другую подпрограмму
поддерживается рекурсия — подпрограмма может вызвать сама себя или другую подпрограмму, которая, в свою очередь, вызывает первую
определения подпрограмм не могут быть вложены (нельзя определить подпрограмму внутри другой подпрограммы)
Синтаксис оператора perform.
Синтаксис оператора 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, то будет выполнена вторая подпрограмма из списка.
Операторы, используемые для выхода из подпрограммы.
Из подпрограммы можно выйти в любое время с использованием следующих операторов:
exit
check
stop
Далее описывается эффект check и exit, если они закодированы в подпрограмме вне цикла. Эффект stop в подпрограммах не зависит от того, записан он в цикле или нет.
В подпрограммах:
check и exit вызывают немедленный выход из подпрограммы и переход к оператору, следующему за perform
stop немедленно завершает подпрограмму и вызывает переход непосредственно в событие end-of-selection
check, exit и stop не устанавливает значение sy-subrc.
Определение глобальных переменных.
Глобальная переменная — та, которая определена за пределами подпрограммы при использовании операторов:
tables
data
К ней можно обратиться из любой точки в программе, в событии или в подпрограмме. Определения глобальных переменных лучше помещать вверху программы перед первой строкой выполняемого кода.
Определение локальных переменных.
Локальная переменная — переменная, которая определяется в подпрограмме с использованием операторов:
local
data
statics
Она, как говорят, является локальной в подпрограмме.
Переменные, определенные с использованием local, доступны снаружи подпрограммы; переменные, определенные с использованием data или statics, — нет. Поэтому, если подпрограмма вызывает другую подпрограмму, переменные, определенные с использованием local, видимы изнутри вызванных подпрограмм, переменные, определенные с использованием data или statics — нет.
Для локальных переменных, определенных с использованием local или data, память распределяется при каждом вызове подпрограммы. Эта память освобождается при завершении работы подпрограммы, и поэтому значения в ее пределах теряются. Для локальных переменных, определенных с использованием statics память сохраняется.