
- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Интерфейсы форм
При разработке подпрограмм зачастую требуется передавать в нее некоторые параметры и на выходе получать результат, зависящий от этих параметров. В 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 .
Теперь можно создавать функции.