Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4.pdf
Скачиваний:
503
Добавлен:
17.02.2016
Размер:
29.74 Mб
Скачать

Подпрограммы и функции

 

115

Безопасность: успешное завершение проверки совместимости типов гарантирует (с высокой степенью надежности), что параметры не перепуганы и в их записи нет опечаток.

Читабельность исходных текстов: формальные параметры выполняют роль описания интерфейса подпрограммы.

Повышение производительности программы: многие операции выполняются гораздо быстрее, если тип параметра в программе известен при генерации (создании выполняемого текста) программы.

Создание функций увеличения возможности многократного использования текстов

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

Функции определяются парой операторов — function и endfunction и вызываются с помощью оператора call function. Имя функции записывается прописным» буквами.

call function ' MY_FIRST_FUNCTION' .

function 'MY_FIRST_FUNCTION'. write 'My f i r s t function!' .

endfunction .

При использовании средства описания интерфейса функций редактор АВАР/4 Editor не редактирует операторы function/endfunction или параметры интерфейса, а описывает функцию и ее параметры (см. раздел "Интерфейсные параметры"). Для изменения (редактирования) оператора вызова функции необходимо указать в меню Editor: Edit (редактировать), а затем Insert Statement (вставить оператор). Система вставит асе параметры и исключения интерфейса.

Функциональные группы и функции

ДЛЯ создания функции с помощью средств Development Workbench в первом окне Object Browser, в части экрана Single Object (один объект), выберите из переключателя опций Function Group Objects (объекты функциональных групп) (рис.10.1).

Рис. 10.1

Задание объекта функциональной группы

116 ГлавГлава1010

Нa появившемся экране введите имя функции в строке для ввода текста, соответствующей модулю функции — Function Module (в нашем примере MY_FIRST_FUNCTION). и щелкните мышью на кнопке Create (создать) согласно рис. 10.2.

Затем укажите атрибуты функции (рис. 10.3). В нашем примере описание функции в окне Short Text (краткий текст) задано как This is my first function, но группа функции еще не выбрана. Функциональные группы рассматриваются в следующем разделе. В данном случае для Process Type (выполнение) выбрана группа Normal (обычная).

Рис. 10.2

Создание функции

Рис. 10.3

Задание атрибутов функции

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

Полный обзор всех функциональных групп приводится на экране создания функциональных модулей (Function Module Create). Доступ к нему можно получить, установив курсор на входное поле Function

Подпрограммы и функции

117

 

 

 

Group и щелкнув мышью на кнопке Possible Entries (допустимые функции), расположенной справа от этого поля (или нажав клавишу F4). На экране появится всплывающий список, подобный показанному на рис. 10.4.

Рис. 10.4

Допустимые функции функциональных групп

Кроме того, совместно используемые подпрограммы и функции в функциональной группе могут обращаться к общим глобальным данным группы. Этим можно воспользоваться при программировании работы с диалоговыми окнами и целыми экранами, отображаемыми некоторыми функциями (см. главы 19 и 22, где подробно описаны диалоговые экраны).

С точки зрения техники программирования функциональная группа представляет собой программу, состоящую из нескольких файлов типа Include, каждый из которых соответствует отдельной функции. Когда при выполнении программы вызывается одна из функций, вся функциональная группа загружается в основную память и функция выполняется. После этого функциональная группа остается в памяти, т.е. она повторно не загружается головной программой текущего процесса при вызове другой функции группы.

Для того чтобы связать функцию с новой функциональной группой, нужно просто ввести новое имя функциональной группы во входное поле Function Group (функциональная группа) на экране, который показан на рис. 10.3. При этом система запросит, хочет ли пользователь создать новую группу. В случае положительного ответа пользователю предоставляется возможность на следующем экране ввести краткое описание группы и имя лица, ответственного за нее (рис. 10.5).

Рис. 10.5

Задание

функциональной

группы

Подпрограммы и функции

 

 

 

119

 

 

 

 

 

 

Для каждого параметра можно задать тип, указав ссылку на структуру или на поле в Dictionary,

или

применить прямую ссылку на тип, как показано на рис. 10.7. В последнем случае он должен либо являться элементарным типом АВАP/4 (с, n, i, p, d и т.д.), либо быть определен в Dictionary (см. главу 5).

Когда вызывающая программа не устанавливает значение импортируемого и изменяемого параметров явным образом, его можно задать по умолчанию. Значение по умолчанию может быть введено в

столбцеProposal.

Рис. 10.7

Заданиеинтерфейсных параметров

Импортируемые (если их рассматривать с функциональной точки зрения) и изменяемые параметры могут быть отнесены к разряду необязательных (рис. 10.7). В этом случае в вызывающей программе необязательно передавать значение этого параметра, поскольку программа присваивает ему начальное значение соответствующего типа. Параметры, значения которых указаны в столбце Proposal, всегда необязательны. Если специально не оговорено, что исходный параметр необязателен, он должен быть задан в вызывающей программе; в противном случае при выполнении возникнет ошибка. Экспортируемые параметры считаются результатом работы функции и могут не присутствовать в вызывающей программе.

В интерфейсе функции разрешается использовать внутренние таблицы, которые всегда вызываются по ссылке (чтобы не снижать производительности программы). Из любого экрана сопровождения функции можно получить доступ к работе с параметрами внутренней таблицы (рис.10.8), выбрав элементы

Рис.10.8

Таблица параметров и исключений

124

Глава10

 

 

 

Внутри функции не обеспечивается доступ к глобальным данным вызывающей программы. Она работает только с интерфейсными параметрами и собственными локальными данными или с глобальными данными своей функциональной группы.

Функции поддерживают назначение параметров значений по умолчанию, статуса необязательных, а также обеспечивают исключения.

Вызовы форм и функций могут быть вложенными и даже рекурсивными.

Команда exit прекращает выполнение формы или функции. При этом программа продолжает выполняться с того оператора, который следует за оператором, вызывающим эту форму или функцию.

Вчасти IV рассматриваются возможности работы с таблицами баз данных и внутренними таблицами, а следующая глава посвящена чтению таблиц базы данных.

Часть IV

Работа с таблицами

Глава 11. Чтение таблиц базы данных Глава 12. Использование внутренних таблиц Глава 13. Обновление таблиц базы данных

Глава 14. Экспорт и импорт составных объектов данных

Глава11

Чтениетаблицбазы данных

Выборка данных из базы данных Динамическая выборка Первичные ключи и представления