- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Часть II. Расширенные приемы программирования в sap bw Тип функции планирования
Тип функции планирования (ТФП) – часть функциональности BI-IP, позволяющая обрабатывать транзакционные данные с помощью языка ABAP. ТФП удобно использовать, когда данные необходимо обрабатывать с высокой скоростью, либо же алгоритм обработки не может быть построен на языке FOX.
Создание класса
ТФП реализуется в виде класса ABAP. Нужно создать новый класс в транзакции SE80 и добавить в него один из интерфейсов:
IF_RSPLFA_SRVTYPE_IMP_EXEC;
IF_RSPLFA_SRVTYPE_IMP_EXEC_REF.
Рисунок 37
Выбор интерфейса зависит от того, нужны или не нужны в обработке ссылочные данные. Интерфейс IF_RSPLFA_SRVTYPE_IMP_EXEC_REF предоставляет дополнительный метод GET_REF_DATA_SEL, в котором можно определить ограничения (фильтр) на ссылочные данные.
Определение нового типа функции планирования
Создание нового ТФП производится в транзакции RSPLF1.
На первом экране нужно ввести техническое имя ТФП и нажать на кнопку «Создать».
Далее, на вкладке «Свойства» нужно ввести имя созданного класса:
Рисунок 38
Если в качестве интерфейса был выбран IF_RSPLFA_SRVTYPE_IMP_EXEC_REF, то необходимо поставить галочку «Ссылочные данные», если же IF_RSPLFA_SRVTYPE_IMP_EXEC, то галочка должна быть убрана.
Галочка на пункте «БезСозданияБлока» означает, что вызов функции планирования будет выполнен один раз над всеми данными. Иначе, вызов будет выполнен многократно над блоками данных, аналогично функциональности FOX в BI-IP.
Далее, на вкладке «Параметр» необходимо определить управляющие параметры ТФП.
Рисунок 39
Создаем новый параметр:
Рисунок 40
Для выбора предоставляются следующие типы параметров:
Элементарный – выбор единственного значения любого признака;
Рисунок 41
Инфо-объект инфо-провайдера – выбор какого-либо инфо-объекта из инфо-провайдера, над которым будет создана функция планирования;
Рисунок 42
Выбор данных – выбор значений нескольких признаков;
Рисунок 43
Структура – позволяет создавать структуру из различных параметров;
Рисунок 44
Выбор показателей – выбор показателя инфо-провайдера.
Рисунок 45
Галочка «Параметр является табличным» позволяет вводить несколько значений параметра.
«Параметр структуры» позволяет присвоить параметр к какой-либо структуре (см. пункт 4).
Разработка класса Считывание значений управляющих параметров
Элементарный:
DATA: L_R_PARAM_ELEM1 TYPE REF TO IF_RSPLFA_PARAM_ELEM.
L_R_PARAM_ELEM1 = I_R_PARAM_SET->GET_PARAM_ELEM( 'CPER' ). L_R_PARAM_ELEM1->GET_VALUE( IMPORTING E_VALUE = L_PER ).
Выбор показателей:
DATA:
L_KYF TYPE RSIOBJNM,
L_T_KEYFNM TYPE RSPLF_T_KEYFNM, L_R_PARAM_KEYF_SEL TYPE REF TO IF_RSPLFA_PARAM_KEYF_SEL.
L_T_KEYFNM = L_R_PARAM_KEYF_SEL->GET_T_KEYFNM( ). LOOP AT L_T_KEYFNM INTO L_KYF. ENDLOOP.
Выбор данных:
DATA: L_R_PARAM TYPE REF TO IF_RSPLFA_PARAM_DATA_SEL, L_S_CHARSEL TYPE RSPLF_S_CHARSEL, L_T_CHARSEL TYPE RSPLF_T_CHARSEL.
L_R_PARAM = I_R_PARAM_SET->GET_PARAM_DATA_SEL( 'REFSEL'). L_T_CHARSEL = L_R_PARAM->GET_T_SEL( ).
LOOP AT L_T_CHARSEL INTO L_S_CHARSEL WHERE IOBJNM = 'SFORM'. LSR_CFORM-SIGN = L_S_CHARSEL-SIGN. LSR_CFORM-OPTION = L_S_CHARSEL-OPT. LSR_CFORM-LOW = L_S_CHARSEL-LOW. LSR_CFORM-HIGH = L_S_CHARSEL-HIGH. APPEND LSR_CFORM TO LR_CFORM. ENDLOOP.