- •Типы модулей abap/4.
- •Что такое событие. Основные события.
- •Программа драйвера.
- •Порядок выполнения событий, определенный программой драйвера.
- •События abap/4, распределенные по категориям.
- •Операторы, используемые для прекращения событий.
- •Типы подпрограмм.
- •Определение и вызов внутренних подпрограмм.
- •Синтаксис оператора perform.
- •Операторы, используемые для выхода из подпрограммы.
- •Определение глобальных переменных.
- •Определение локальных переменных.
- •Особенности оператора form.
- •Определение рабочей области tables.
- •Передача параметров без контроля типов.
- •Передача типизированных параметров.
- •Синтаксис передачи типизированных параметров.
- •Передача Field Strings.
- •Способы передачи параметров.
- •Дополнения оператора form и получающийся метод передачи параметров:
- •Передача по значению.
- •Передача по ссылке.
- •Передача значения и результата.
- •Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.
- •Методы и результаты передачи внутренней таблицы в подпрограмму:
- •Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:
- •Синтаксис описания внутренней таблицы в подпрограмме.
- •Синтаксис описания внутренней таблицы подпрограмме:
- •Передача внутренней таблицы со строкой заголовка.
- •Вызов внешних подпрограмм.
- •Оператор include.
- •Представление функциональных модулей.
- •Функциональные группы.
- •Определение функционального интерфейса модуля
- •Создание функционального модуля.
- •Использование releasing в функциональном модуле.?
- •Установка значения sy-subrc по возвращению из функционального модуля.
- •Оператор message ... Raising.
Создание функционального модуля.
Создайте функциональный модуль и поместите его в функциональную группу согласно следующей процедуре:
Создайте функциональную группу (se80). Имя функциональной группы должно быть четырехсимвольным и должно начинаться с Y или Z
Создайте функциональный модуль (se37). Имя функционального модуля должно начинаться с Y_ или Z_. Определите параметры экспорта, импорта и т.д.
Напечатайте исходный текст функционального модуля. Не изменяйте сгенерированные системой строки комментария при любых обстоятельствах! Ваш функциональный модуль не будет работать!!! Сохранить – Проверить – Активировать – Протестировать
Создайте программу ABAP/4 (se38) и вызовите функциональный модуль. Имя функционального модуля должно быть записано в верхнем регистре при вызове.
Использование releasing в функциональном модуле.?
Функция release добавляет уровень защиты к интерфейсу функционального модуля, защищая его от модификации. По завершении тестирования функционального модуля можно указать, что безопасно использовать в их коде для других разработчиков. Делая так, Вы, по существу, обещаете не изменять существующие параметры интерфейса в любом случае; их изменение могло бы вызвать проблемы для любых программам, которые вызовут Ваш функциональный модуль. Вы обещаете стабильность интерфейса.
Установка значения sy-subrc по возвращению из функционального модуля.
Обычно, после возвращения из функционального модуля, система автоматически устанавливает значение sy-subrc в ноль. Чтобы установить sy-subrc в ненулевое значение, используется один из двух операторов:
raise
message ... raising
Использование оператора raise
Оператор raise используется, чтобы выйти из функционального модуля и установить значение sy-subrc по возвращению. Синтаксис оператора raise:
raise xname.
где: xname — имя исключения, которое будет выполнено
При выполнении оператора raise управление немедленно передается оператору call function, и устанавливается значение sy-subrc в зависимости от исключения. Значения параметров экспорта не копируются назад в программу запроса:
Специальное имя others в строке 13 вызывающей программы будет соответствовать всем исключениям, явно не названным в дополнении exceptions.
Если параметр экспорта передает значение после выполнения оператора raise, то его значение остается неизменным в программе запроса, даже если это значение было изменено в функциональном модуле до выполнения оператора raise.
check, exit и stop имеют тот же эффект в функциональных модулях, как и во внешних подпрограммах. Однако они не должны использоваться в пределах функциональных модулей. Вместо них должен использоваться оператор raise, потому что он дает возможность вызывающей программе установить по возвращению значение sy-subrc.
Использование оператора message ... raising
У оператора message ... raising есть два режима работы:
если имя исключения после raising не обработано оператором call function, и others не закодировано, пользователю выдается сообщение
если имя исключения после raising обработано оператором call function, сообщение пользователю не выдается — вместо этого управление возвращается к оператору call function, и исключение обрабатывается так же, как и оператором raise
Синтаксис оператора message ... raising:
message tnnn(cc) [with v1 v2 ...] raising xname.
где:
t — тип сообщения (e, w, i, s, a или x)
nnn — номер сообщения
(cc) — класс сообщения
v1 и v2 — значения, которые будут вставлены в текст сообщения
xname — имя исключения, которое будет выполнено
Особенности оператора:
xname — имя исключения как и в операторе raise
если класс сообщения не определен здесь, он должен быть определен в операторе function-pool в TOP include для функциональной группы через дополнение message-id
установлены следующие sy-переменные: sy-msgid, sy-msgty, sy-msgno и sy-msgv1 через sy-msgv4. Они могут быть использованы в пределах программы запроса (после возвращения)
При выполнении оператора message ... raising поток управления зависит от типа сообщения и от того, обработано ли условие вызывающей программой (определенное в списке исключений в программе запроса):
Если условие обработано вызывающей программой, управление возвращается к вызывающей программе. Значения переменных sy-msg установлены. Значения экспорта, который передаются по значению, не возвращены
Если условие не обработано вызывающей программой для типов сообщений e, w и a, происходит выход из функционального модуля, и программа запроса немедленно завершается. Сообщение отображено, и список вывода пуст. Когда пользователь нажимает клавишу ENTER, пустой список удаляется, и пользователь возвращается к экрану, из которого была вызвана программа
Если условие не обработано вызывающей программой для типа сообщения i, в диалоговом окне отображается сообщение пользователю. Когда пользователь нажимает клавишу ENTER, управление возвращается к функциональному модулю к оператору, следующему за оператором message. Функциональный модуль продолжает обрабатываться, и оператором endfunction управление возвращается к программе запроса. Значения переменных sy-msg установлены, и значения экспорта, которые передаются по значению, возвращаются
Если условие не обработано вызывающей программой для типа сообщения s, сообщение хранится в системной области. Управление продолжается в пределах функционального модуля в операторе, следующем за оператором message. Функциональный модуль продолжает обрабатываться, и оператором endfunction управление возвращается к программе запроса. Значения переменных sy-msg установлены, и значения экспорта, которые передаются по значению, возвращаются. Когда отображается список, сообщение появляется внизу списка в строке состояния
Если условие не обработано вызывающей программой для типа сообщения x, происходит выход из функционального модуля, и программа запроса немедленно заканчивается. Сгенерировано и отображено пользователю сообщение об ошибке времени выполнения
