Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SAP(Контрольная работа №4).doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
318 Кб
Скачать
☆
  1. Создание функционального модуля.

Создайте функциональный модуль и поместите его в функциональную группу согласно следующей процедуре:

  1. Создайте функциональную группу (se80). Имя функциональной группы должно быть четырехсимвольным и должно начинаться с Y или Z

  2. Создайте функциональный модуль (se37). Имя функционального модуля должно начинаться с Y_ или Z_. Определите параметры экспорта, импорта и т.д.

  3. Напечатайте исходный текст функционального модуля. Не изменяйте сгенерированные системой строки комментария при любых обстоятельствах! Ваш функциональный модуль не будет работать!!! Сохранить – Проверить – Активировать – Протестировать

  4. Создайте программу ABAP/4 (se38) и вызовите функциональный модуль. Имя функционального модуля должно быть записано в верхнем регистре при вызове.

  1. Использование releasing в функциональном модуле.?

Функция release добавляет уровень защиты к интерфейсу функционального модуля, защищая его от модификации. По завершении тестирования функционального модуля можно указать, что безопасно использовать в их коде для других разработчиков. Делая так, Вы, по существу, обещаете не изменять существующие параметры интерфейса в любом случае; их изменение могло бы вызвать проблемы для любых программам, которые вызовут Ваш функциональный модуль. Вы обещаете стабильность интерфейса.

  1. Установка значения 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, происходит выход из функционального модуля, и программа запроса немедленно заканчивается. Сгенерировано и отображено пользователю сообщение об ошибке времени выполнения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]