Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие авар.doc
Скачиваний:
89
Добавлен:
02.09.2019
Размер:
2.34 Mб
Скачать

Интерфейсы форм

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

Рассмотрим пример подпрограммы, которая изменяет и выводит на экран два различных поля имени.

TYPES: T_NAME(20).

DATA: NAME_1 TYPE T_NAME VALUE 'A',

NAME_2 TYPE T_NAME VALUE 'B'.

PERFORM SET_NAME CHANGING NAME_1.

PERFORM SET_NAME CHANGING NAME_2.

FORM SET_NAME CHANGING F_NAME TYPE T_NAME.

WRITE F_NAME.

F_NAME = 'Smith'.

WRITE F_NAME.

ENDFORM.

Результатом ее выполнения будет строка 'A Smith B Smith', причем значения обоих глобальных переменных NAME_1 и NAME_2 будет равно 'Smith', т.к. эти переменные передавались в подпрограмму по ссылке (с помощью дополнения CHANGING).

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

По значению

По ссылке

Только для чтения

USING VALUE (p)

USING p

Изменяемые

CHANGING VALUE (p)

CHANGING p

В качестве параметров подпрограмм допускается передача внутренних таблиц со строкой заголовка (WITH HEADER LINE). Параметры таблицы всегда передаются по ссылке.

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

TABLES: UPERS.

DATA: ALL_PERSON LIKE UPERS OCCURS 100 WITH HEADER LINE.

PERFORM READ_PERSON TABLES ALL_PERSON.

LOOP AT ALL_PERSON.

WRITE / ALL_PERSON-EUNA.

ENDLOOP.

FORM READ_PERSON TABLES F_PERSON STRUCTURE ALL_PERSON.

SELECT * FROM UPERS INTO TABLE F_PERSON.

ENDFORM.

Результатом выполнения программы будет заполнение внутренней таблицы ALL_PERSON и вывод ее содержания на экран.

Рисунок 25

Подпрограммы и функции Глобальные функции

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

Функции определяются парой операторов - FUNCTION и ENDFUNCTION и вызываются с помощью оператора CALL FUNCTION. Имя функции записывается прописными буквами.

CALL FUNCTION 'MY_FIRST_FUNCTION'.

FUNCTION 'MY_FIRST_FUNCTION'.

WRITE 'HELLO!'.

ENDFUNCTION.

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

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

Для создания функциональной группы необходимо войти в режим Function Builder (SAP menu -> Tools -> ABAP Workbench -> Development -> Function Builder) (код транзакции SE37).

Рисунок 26

В появившемся окне выбираем в меню пункт Goto -> Function Group -> Create group.

Рисунок 27

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

Рисунок 28

После того как создана функциональная группа - необходимо ее активировать. Для этого необходимо выбрать пункт меню Goto -> Function Group -> Display Group, после чего для созданной группы войти в окно Main program и нажать кнопку Activate .

Теперь можно создавать функции.