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

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

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

Рисунок 29

После нажатия кнопки Save появится окно редактирования функции.

Для примера необходимо создать функцию ('Z_CONVERT_TEMPERATURE') для преобразования температуры - из градусов по шкале Фаренгейта в градусы по шкале Цельсия. Подобная функция имеет один импортируемый параметр, который позволяет различать тип шкалы (Фаренгейта или Цельсия) и один параметр для значения температуры. Экспортируемый параметр будет содержать преобразованную величину.

На закладке Import введём импортируемые параметры.

Рисунок 30

На закладке Export введём импортируемые параметры.

Рисунок 31

На закладке Source code пишем код функции.

Рисунок 32

FUNCTION Z_CONVERT_TEMPERATURE.

*"----------------------------------------------------------------------

*"*"Local interface:

*" IMPORTING

*" REFERENCE(UNIT) TYPE C

*" REFERENCE(DEGRESS) TYPE P

*" EXPORTING

*" REFERENCE(CONV_DEGRESS) TYPE P

*"----------------------------------------------------------------------

IF UNIT = 'F'.

CONV_DEGRESS = ( DEGRESS - 32 ) * 5 / 9.

ELSE

CONV_DEGRESS = DEGRESS * 9 / 5 + 32.

ENDIF.

ENDFUNCTION.

После того, как функция полностью готова нажимаем кнопку Save и Active .

Вызов функции

Как уже было сказано ранее, вызов функции производится с помощью оператора CALL FUNCTION.

Для примера создадим простенькую программу с помощью ABAP Editor, в которой вызовем ранее созданную функцию.

REPORT Z_CONVERSATION .

DATA: DEG TYPE P.

CALL FUNCTION 'Z_CONVERT_TEMPERATURE'

EXPORTING TEMP_UNIT = 'F'

DEGREES = 100

IMPORTING CONV_DEGREES = DEG.

WRITE DEG.

Чтение таблиц базы данных Построение простейшего запроса

Простейший способ получить список имен людей в университете - написать следующую программу на ABAP/4:

REPORT Z_SELECT .

TABLES: UPERS.

SELECT * FROM UPERS.

WRITE: / UPERS-EUNA.

ENDSELECT.

Эта программа выбирает последовательно все записи и выводит на экран фамилию каждого человека. Результат такой программы будет выглядеть следующим образом:

Рисунок 33

Звёздочка (*) в операторе SELECT обозначает, что выбираются все поля таблицы.

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

REPORT Z_SELECT .

TABLES: UPERS.

DATA: MY_UPERS LIKE UPERS.

SELECT * FROM UPERS INTO MY_UPERS.

WRITE: / MY_UPERS-EUNA.

ENDSELECT.

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

REPORT Z_SELECT .

TABLES: UPERS.

DATA: MY_UPERS LIKE UPERS OCCURS 500 WITH HEADER LINE.

SELECT * FROM UPERS INTO TABLE MY_UPERS.

LOOP AT MY_UPERS.

WRITE: / MY_UPERS-EUNA.

ENDLOOP.

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

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