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