
- •Часть I. Основы языка 5
- •Часть II. Расширенные приемы программирования в sap bw 37
- •Часть III. Полезные советы 85
- •Вступление
- •Задание атрибутов программы
- •Составление исходного текста программы
- •Локальные данные программы Определение полей с помощью элементарных типов и ссылок
- •Записи и внутренние таблицы
- •Объявление составных неэлементарных типов и объектов
- •Область определения данных
- •Глобальные таблицы словаря Dictionary
- •Отображение определения
- •Отображение содержимого таблицы
- •Создание таблицы или структуры
- •Использование таблиц и структур в программе
- •Создание доменов
- •Работа с данными Копирование полей с помощью команд Move и Compute
- •Преобразования содержимого полей
- •Копирование структурированных объектов
- •Арифметические выражения и математические функции
- •Операции со строками текста Конкатенация и разделение строк
- •Замена и преобразование символов в строке
- •Поиск символьных строк в полях или внутренних таблицах
- •Символ «Перенос каретки»
- •Запись данных
- •Простой формат вывода
- •Использование символов и пиктограмм
- •Использование цветов
- •Интерфейсы форм
- •Подпрограммы и функции Глобальные функции
- •Функциональные группы
- •Создание функций
- •Вызов функции
- •Чтение таблиц базы данных Построение простейшего запроса
- •Использование конструкции where
- •Чтение единственного элемента таблицы
- •Извлечение ограниченного числа полей
- •Упорядочение результатов запроса
- •Динамическая выборка данных
- •Вложенные циклы select
- •Часть II. Расширенные приемы программирования в sap bw Тип функции планирования
- •Создание класса
- •Определение нового типа функции планирования
- •Разработка класса Считывание значений управляющих параметров
- •Определение ссылочных данных
- •Добавление сообщений в спул вывода
- •Обработка данных для изменения
- •Badi для консолидации (перенос данных)
- •Чтение данных инфо-провайдера
- •Формирование структуры признаков из настроечной таблицы
- •Отправка e-mail сообщения из abap на внешний адрес
- •Выполнение расчетов в параллельных (фоновых) задачах
- •Подпрограмма преобразования
- •Вызов транзакции через web интерфейс
- •Передача параметров
- •Загрузка данных из 1с 8
- •Загрузка справочников
- •Загрузка транзакционных данных
- •Загрузка данных из файлов Excel с помощью ole
- •Загрузка сообщений (tcode se91) из файла Excel
- •Программа загрузки данных из файла csv в таблицу бд
- •Вызов последовательности планирования из abap
- •Динамическое программирование
- •Определение полей таблицы в runtime
- •Создание динамической таблицы в runtime
- •Генерирование abap подпрограммы в runtime
- •Создание пользовательского средства поиска
- •Часть III. Полезные советы Создание abap программы без ключа разработчика
- •Поиск внутренних таблиц
- •Редактирование данных в таблицах sap, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Создание функций
Для создания функции необходимо войти в режим 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 считывается весь набор данных, который впоследствии можно обработать.