
- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Badi для консолидации (перенос данных)
BADI – это инструментарий, позволяющий расширить стандартную функциональность SAP добавлением вставок на языке ABAP. Каждый BADI имеет имя определения (интерфейс) и имя реализации.
В первую очередь необходимо определить фильтры, которые будет использовать BADI. Это делается в таблице ucf7210. Нужно зайти в транзакцию SE16, ввести имя таблицы и нажать на кнопку «Создать». Затем нужно ввести имя код фильтра (3 символа) и описание и нажать на кнопку сохранить. Если записи необходимо включить в запрос на перенос, то это можно сделать, зайдя на просмотр таблицы, выбрав необходимые записи и выбрав пункт меню Запись таблицы -> Перенос записей.
Создание нового BADI делается в транзакции SE19.
Рисунок 46
Выбираем Создать внедрение -> Классический BADI, в качестве интерфейса вводим UC_DATATRANSFER и нажимаем «СоздВнедр».
Рисунок 47
Задаем имя внедрения. На следующем экране вводим описание BADI и присваиваем ему нужные фильтры.
Рисунок 48
Теперь BADI нужно активировать.
Далее нужно перейти на вкладку Интерфейс.
Рисунок 49
Обработка данных осуществляется в методе FINALIZE
Параметры метода:
Рисунок 50
CT_DATA – таблица с транзакционными данными, доступная для изменения.
В следующем примере создается внутренняя таблица со структурой, аналогичной CT_DATA и новые строки сохраняются в неё.
Потом CT_DATA очищается и заполняется данными из созданной таблицы:
DATA: LS_TMP_CT_DATA TYPE REF TO DATA, LT_TMP_CT_DATA TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_AMOUNT> TYPE ANY, <FS_SOPTYPE> TYPE ANY, <FS_SACCTYPE> TYPE ANY, <FS_SOPXTYPE> TYPE ANY, <FS_SREXP> TYPE ANY, <FS_SCS_ITEM> TYPE ANY, <FS_CS_CHART> TYPE ANY, <FS_AC_DOCNR> TYPE ANY, <FS_SCOMP> TYPE ANY, <FS_SCHARICO> TYPE ANY, <FS_SSEGM> TYPE ANY, <FS_TMP_CT_DATA> TYPE ANY, "СТРОКА ДАННЫХ <FT_TMP_CT_DATA> TYPE TABLE, "ВРЕМЕННАЯ ТАБЛИЦА С ДАННЫМИ
<FS_CT_DATA> TYPE ANY.
CREATE DATA LS_TMP_CT_DATA LIKE LINE OF CT_DATA. ASSIGN LS_TMP_CT_DATA->* TO <FS_TMP_CT_DATA>. CREATE DATA LT_TMP_CT_DATA LIKE TABLE OF <FS_TMP_CT_DATA>. ASSIGN LT_TMP_CT_DATA->* TO <FT_TMP_CT_DATA>.
LOOP AT CT_DATA ASSIGNING <FS_CT_DATA>.
<FS_TMP_CT_DATA> = <FS_CT_DATA>.
ASSIGN COMPONENT 'S_CHAR-/BIC/SCS_ITEM' OF STRUCTURE <FS_TMP_CT_DATA> TO <FS_SCS_ITEM>. <FS_SCS_ITEM> = 'R.999.99.99.N.9'.
ASSIGN COMPONENT 'S_KFIG-/1FB/CS_TRN_GC' OF STRUCTURE <FS_TMP_CT_DATA> TO <FS_AMOUNT>.
<FS_AMOUNT> = <FS_AMOUNT> * -1.
APPEND <FS_TMP_CT_DATA> TO <FT_TMP_CT_DATA>.
ENDLOOP.
* ОЧИЩАЕМ CT_DATA. LOOP AT CT_DATA ASSIGNING <FS_CT_DATA>. DELETE CT_DATA INDEX SY-TABIX. ENDLOOP.
LOOP AT <FT_TMP_CT_DATA> ASSIGNING <FS_TMP_CT_DATA>. APPEND <FS_TMP_CT_DATA> TO CT_DATA. ENDLOOP.