- •Типы модулей abap/4.
- •Что такое событие. Основные события.
- •Программа драйвера.
- •Порядок выполнения событий, определенный программой драйвера.
- •События abap/4, распределенные по категориям.
- •Операторы, используемые для прекращения событий.
- •Типы подпрограмм.
- •Определение и вызов внутренних подпрограмм.
- •Особенности оператора form.
- •Синтаксис оператора perform.
- •Операторы, используемые для выхода из подпрограммы.
- •Определение глобальных переменных.
- •Определение локальных переменных.
- •Определение рабочей области tables.
- •Передача параметров без контроля типов.
- •Передача типизированных параметров.
- •Синтаксис передачи типизированных параметров.
- •Передача Field Strings.
- •Способы передачи параметров.
- •Дополнения оператора form и получающийся метод передачи параметров:
- •Передача по значению.
- •Передача по ссылке.
- •Передача значения и результата.
- •Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.
- •Методы и результаты передачи внутренней таблицы в подпрограмму:
- •Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:
- •Синтаксис описания внутренней таблицы в подпрограмме.
- •Синтаксис описания внутренней таблицы подпрограмме:
- •Передача внутренней таблицы со строкой заголовка.
- •Вызов внешних подпрограмм.
- •Оператор include.
- •Представление функциональных модулей.
- •Функциональные группы.
- •Определение функционального интерфейса модуля
- •Создание функционального модуля.
- •Использование releasing в функциональном модуле.?
- •Установка значения sy-subrc по возвращению из функционального модуля.
- •Оператор message ... Raising.
Передача значения и результата.
Передача параметров по значению и результату очень похожа на передачу по значению. Как и при передаче по значению и в этом случае выделяется новая область памяти, которая содержит независимую копию переменной. И в этом случае память освобождается при окончании выполнения подпрограммы.
Однако здесь при выполнении оператора endform значение из области локальной памяти копируется назад в оригинальную область памяти. Изменения значения параметра в подпрограмме отражены в оригинале (но только после возвращения из подпрограммы).
Может показаться, что различие небольшое, но на самом деле оно более существенное. Можно выбрать, возвращать копию переменной или нет.
Копия всегда возвращается, если не выходить из подпрограммы с использованием одного из двух операторов:
stop
message ennn
Оператор stop вызывает завершение работы подпрограммы и переход непосредственно в событие end-of-selection. Если параметр был передан по значению и результату, то сделанные в нем изменения не сохраняются перед переходом к end-of-selection. В некотором смысле stop ведет себя как обратная перемотка для параметров результата и значения. При использовании в подпрограмме оператору stop обычно предшествует тест на аварийное условие в программе. При возникновении аварийного условия выполняется stop. Это отказ от изменений в переменных значения и результата и переход к end-of-selection, где выполняются процедуры очистки.
Передача по значению и результату используется для параметров, которые хотят изменить, но с возможностью отказаться от изменений, если в подпрограмме возникнет аварийное условие.
Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.
Можно использовать один из двух методов передачи внутренней таблицы в подпрограмму:
передача таблицы со строкой заголовка
передача только тела таблицы
Если у внутренней таблицы есть строка заголовка, то первый метод передает в подпрограмму и строку заголовка, и тело. Второй метод передает в подпрограмму только тело.
Если у внутренней таблицы нет строки заголовка, также можно использовать оба метода. Однако первый метод будет вести себя немного по-другому — он автоматически создает строку заголовка для внутренней таблицы в подпрограмме.
Методы и результаты передачи внутренней таблицы в подпрограмму:
Метод |
Если у внутренней таблицы есть строка заголовка |
Если у внутренней таблицы нет строки заголовка |
Со строкой заголовка |
Передаются и строка заголовка, и тело |
Создает строку заголовка в подпрограмме |
Без строки заголовка |
Передается только тело |
Передается тело |
Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:
Метод |
Синтаксис |
Способ передачи |
Со строкой заголовка |
form s1 tables it
|
По ссылке |
Только тело |
form s1 using it[] form s1 changing it[] form s1 using value(it[]) form s1 changing value(it[]) |
По ссылке По ссылке По значению По значению и результату |
