
- •Типы модулей abap/4.
- •Что такое событие. Основные события.
- •Программа драйвера.
- •Порядок выполнения событий, определенный программой драйвера.
- •События abap/4, распределенные по категориям.
- •Операторы, используемые для прекращения событий.
- •Типы подпрограмм.
- •Определение и вызов внутренних подпрограмм.
- •Особенности оператора form.
- •Синтаксис оператора perform.
- •Операторы, используемые для выхода из подпрограммы.
- •Определение глобальных переменных.
- •Определение локальных переменных.
- •Определение рабочей области tables.
- •Передача параметров без контроля типов.
- •Передача типизированных параметров.
- •Синтаксис передачи типизированных параметров.
- •Передача Field Strings.
- •Способы передачи параметров.
- •Дополнения оператора form и получающийся метод передачи параметров:
- •Передача по значению.
- •Передача по ссылке.
- •Передача значения и результата.
- •Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.
- •Методы и результаты передачи внутренней таблицы в подпрограмму:
- •Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:
- •Синтаксис описания внутренней таблицы в подпрограмме.
- •Синтаксис описания внутренней таблицы подпрограмме:
- •Передача внутренней таблицы со строкой заголовка.
- •Вызов внешних подпрограмм.
- •Оператор include.
- •Представление функциональных модулей.
- •Функциональные группы.
- •Определение функционального интерфейса модуля
- •Создание функционального модуля.
- •Использование releasing в функциональном модуле.?
- •Установка значения sy-subrc по возвращению из функционального модуля.
- •Оператор message ... Raising.
Определение рабочей области tables.
Переменные, определенные с использованием оператора tables, всегда являются глобальными переменными. Размещение оператора tables вверху программы определяет глобальную Field String. Размещение этого же оператора в подпрограмме также определяет глобальную Field String с тем же именем. Поэтому не нужно использовать оператор tables в подпрограмме, так как такое определение — всегда глобальная переменная; глобальные определения должны быть помещены вверху программы.
Локальная рабочая область таблицы в подпрограмме определяется с использованием local вместо оператора tables. Синтаксис — такой же, как у tables, но он определяет локальную Field String вместо глобальной. Переменные, определенные при использовании local, видимы изнутри подпрограммы и всех подпрограмм, которые она вызывает.
Точнее, переменная известна в программе только после точки, в которой она определена. Например, если переменная определяется в строке 10, к ней можно обратиться в строке 11 и позже, но не в строках перед строкой 10. В случае определения local можно обратиться к глобальной версии переменной в любой точке перед определением local.
Передача параметров без контроля типов.
В дополнение к определению переменных c использованием tables, local, data и statics переменные могут быть определены также непосредственно в операторе form. Они известны как параметры. Параметры могут быть или локальными переменными или ссылкой на глобальные переменные. Память для локальных параметров выделяется при вызове подпрограммы и освобождается при её завершении.
Если переменные определяются в операторе form, perform должен передать значение каждой из этих переменных.
Параметры, задаваемые в операторе form, называют формальными параметрами, а параметры, задаваемые в операторе perform — фактическими параметрами.
Передача типизированных параметров.
Формальные параметры могут быть типизованными или нетипизованными.
Типизованный параметр — формальный параметр, для которого указан тип данных после его имени в операторе form.
Нетипизованный параметр — формальный параметр, для которого не указан тип данных после его имени в операторе form
Нетипизованные формальные параметры позволяют передавать переменную любого типа данных или длины. Формальный параметр использует атрибуты фактического параметра. Например, если нетипизованному формальному параметру p1 передается четырехбайтовое целое число, то p1 становится четырехбайтовым целым числом. Если этому же параметру передается строка длиной 3 символа, то он станет строкой длины 3.
Синтаксис передачи типизированных параметров:
form s1 using u1 type t value(u2) type t
changing c1 type t value(c2) type t.
где:
s1 — имя подпрограммы
u1, u2, c1 и c2 — формальные параметры
t — или тип данных ABAP/4, или тип данных, определенный пользователем
Особенности оператора:
в операторе form может быть определен только тип данных, длина не может быть определена
при определении формального параметра, используя тип данных фиксированной длины (типы d, t, i и f), длина фактического параметра должна соответствовать типу данных формального параметра
У типизированных параметров есть три преимущества:
Они более эффективны. Необходимо меньше времени работы центрального процессора при распределении памяти для типизованного параметра, чем для нетипизованного
Они помогают предотвращать ошибки кодирования. Поскольку невозможно передать параметр несовместимого типа, проверка синтаксиса укажет на ошибку, если попытаться передать несовместимый параметр
Они помогают предотвращать ошибки во время выполнения программы. Например, если программа принимает переменную без контроля типов и выполняет над ней арифметическую операцию, возможно передать символьные данные в эту подпрограмму. Если это случится во время выполнения, произойдет ошибка