- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Часть III. Полезные советы 85
Создание ABAP программы без ключа разработчика 85
Поиск внутренних таблиц 85
Редактирование данных в таблицах SAP, недоступных для ведения 87
Оптимизация выборки данных 88
Справочник транзакций 88
Вступление
Данное пособие разделено на три логические части. В первой части (Основы языка) рассматриваются основы логики разработки приложений на языке ABAP/4, основные конструкции языка и работа с таблицами базы данных. Целевая аудитория - консультанты без опыта программирования на ABAP/4, но знающие любой другой язык высокого уровня. Данная глава не охватывает всей функциональности языка, поэтому для более глубокого изучения рекомендуется прочитать книгу «Разработка приложений SAP R/3 на языке ABAP/4» (Р. Кречмер, В. Вейс).
Вторая часть (Расширенные приемы программирования в SAP BW) представляет собой сборник приемов реализации задач, часто встречающиеся при программировании в SAP BW. Целевая аудитория – консультанты с уверенным уровнем владения ABAP, решающие задачи на проектах по отчетности, бюджетированию или консолидации в SAP BI. В дополнение ко второй части можно порекомендовать пособие «ABAP_Development_for_SAP_NetWeaver_BI_User_Exits_and_BAdls» (автор Dirk Herzog, само пособие легко найти в сети интернет). В нем подробно рассматриваются темы:
User Exit`s и BADI`s в процессе экстракции данных;
User Exit`s в процессе загрузки данных;
User Exit`s и BADI`s в отчетности.
Так же в качестве источника информации можно порекомендовать использовать сайты:
http://help.sap.com
http://www.sapforum.ru
Третья часть (Полезные советы) приводит некоторые приемы, которые могут пригодиться при программировании в системе SAP. Целевая аудитория - консультанты с уверенным уровнем владения ABAP.
Часть I. Основы языка
Обзор основных возможностей
ABAP/4 (Advanced Business Application Programming 4GL) - развитый язык программирования коммерческих приложений четвертого поколения, разработанный компанией SAP, являющийся основой системы R/3. Язык ABAP/4 - это не отдельно используемое средство, а часть общей среды разработки Development Workbench, в которую входит очень большое число инструментов для планирования и реализации приложений.
Структура языка
Текст программы на ABAP/4 строится из операторов, каждый из которых заканчивается точкой. Оператор начинается с зарезервированного слова. Можно объединять несколько операторов имеющих одинаковую начальную часть в один оператор. Например:
data: x type i.
data: y type i.
могут быть сокращены до одного:
data: x type i,
y type i.
Типы, переменные и интегрированный словарь Dictionary
ABAP/4 обеспечивает набор элементарных типов, таких как символьный, целый или дата. Для определения типа используется конструкция data...type. Например, определим поле customer типа character длиной 25 символов:
data: customer(25) type c.
Можно так же определить неэлементарный тип, который в будущем можно использовать для определения переменных. Например:
types t25(25) type c.
data: customer type t25.
Для того, чтобы создать переменную, ссылающуюся на другую необходимо использовать like:
data: customer like vendor.
ABAP/4 позволяет определять и сложные объекты. Например, определим запись таблицы с именем book:
data: begin of book
id(4) type c,
b_date type d,
name like customer,
end of book.
В данной структуре определены три поля. Чтобы сослаться на поле name нужно написать book-name.
Интегрированный словарь ABAP/4 Dictionary содержит определение типов и структуры данных, которые можно использовать во всех компонентах системы. Это обеспечивает единообразие таблиц во всей системе.
Таблицы базы данных и внутренние таблицы
В средства языка ABAP/4 интегрировано множество операторы SQL (точнее Open SQL). Рассмотрим пример выборки данных из таблицы базы данных во внутреннюю таблицу с последующим выводом на экран:
tables: customers.
data: all_customer like customers occurs 100
with header line.
select * from customers into table all_customers.
look at all_customers.
write: /all_customers-name.
endloop.
tables - определяем, какие таблицы мы будем использовать;
occurs 100 - ключевое слово, указывающее на создание внутренней таблицы; 100 - указывает на предполагаемое количество строк (используется только для оптимизации);
with header line - указываем, что необходимо постоить объект такой же структуры, что и основной объект;
select... - обычный SQL-запрос;
look...endloop - цикл "пока";
write - вывод на экран.
Создание отчетов
Для создания отчета разработчик может использовать средство ABAP/4 Query, однако для получения более гибких средств для конструирования отчетов рекомендуется использовать команду select или средство Logical Database. Подробнее об этом я напишу в следующих шагах.
Средства разработки ABAP/4 Development Workbench
ABAP/4 является ядром пакета разработки Development Workbench. Помимо него имеется ряд полезных инструментов:
программа просмотра Object Browser;
архив Repository и словарь Dictionary;
средство моделирования Data Modeler;
средство запросов Query;
утилита Workbench Organizer;
различные средства анализа и пр.
Начало работы с ABAP/4
Синтаксис
Синтаксические правила ABAP/4 схожи с многочисленными языками программирования.
В первом операторе определяется имя программы, например:
report abaptest.
Литералы ограничиваются одинарной кавычкой:
write 'Hello world'.
Можно указать в какой позиции необходимо вывести текст:
write 'Hello world' at 10.
Для комментирования исходных текстов применяется знак * (звездочка):
write 'Hello world' at 10.
* Пример комментариев
ABAP/4 не реагирует на регистр операторов, так операторы "WRITE" и "write" идентичны.