
- •Часть 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. Полезные советы Создание abap программы без ключа разработчика
Иногда необходимо срочно исправить/написать программу или функциональный модуль, а ключа разработчика нет. При условии, что есть полномочия на отладку, можно воспользоваться следующим способом:
Открыть на просмотр ФМ DEVELOPER_CHECK.
Поставить точку прерывания на строке 24 (IF SY_SUBRC EQ 0).
Начать редактировать свою программу / ФМ.
Каждый раз, когда будет срабатывать точка прерывания, изменять значение поля SY-SUBRC на «0».
Необходимо понимать, что этим способом следует пользоваться только в исключительных случаях и с одобрения заказчика, так как вышеописанные действия могут быть отслежены администратором системы.
Поиск внутренних таблиц
Очень часто при разработке в SAP BI необходимо найти ту или иную таблицу, в которой хранятся нужные данные. К примеру, нужно найти системную таблицу, в которой хранятся пользователи системы. Для этого нужно действовать по следующему алгоритму:
Открыть транзакцию ведения данных (в качестве примера, это транзакция ведения пользователей SU01);
Поставить курсор в поле с данными (имя пользователя) и нажать F1;
В появившемся окне нажать на иконку «Техническая информация»
;
В открывшемся окне можно увидеть имя таблицы и перейти к её свойствам по двойному клику ЛКМ
Рисунок 57
В некоторых случаях по этому алгоритму может быть получено имя структуры для вывода данных на экран, а не таблицы БД. В этом случае нужно перейти по двойному клику ЛКМ к ведению свойств объекта, и открыть просмотр списка объектов (Ctrl-Shift-F5 или
). В открывшейся иерархии объектов пакета выбрать Объекты словаря -> Таблицы БД и просмотреть имеющиеся там таблицы;
Рисунок 58
Если нужную таблицу так и не удастся найти, нужно будет просмотреть таблицы в пакетах, имена которых близки к имени пакета с найденой структурой (к примеру, если имя пакета «SUSR_KRN», то есть смысл просмотреть пакеты по маске «SUSR*»);
Если предыдущие шаги не дали результата, то можно попытаться найти нужную таблицу, включив трассировку доступа к БД (транзакция ST01) с последующим анализом записей лога.
Редактирование данных в таблицах sap, недоступных для ведения
Что бы иметь возможность редактирования данных в таблицах, закрытых для ввода, нужно зайти в транзакцию SE16N (в некоторых версиях UASE16N) и ввести в поле ввода кода транзакции «&SAP_EDIT».
Если эти транзакции не доступны, то ведение можно осуществить через транзакцию SE11. Для этого нужно выполнить следующую последовательность действий:
Зайти в SE11;
Открыть требуемую таблицу на просмотр;
Выделить нужную запись;
Зайти на просмотр;
Включить ABAP-отладку (Меню: Система -> Утилиты -> ABAP-отладка);
Нажать на значек «Далее» (
);
Откроется окно отладчика. В нем будет следующий код:
if code = 'SHOW'. set titlebar 'TAB' with name 'anzeigen'(100). elseif code = 'EDIT'. set titlebar 'TAB' with name 'ändern'(101). elseif code = 'INSR'. set titlebar 'TAB' with name 'einfügen'(102). elseif code = 'ANVO'. set titlebar 'TAB' with name 'einfügen'(102). elseif code = 'DELE'. set titlebar 'TAB' with name 'löschen'(103). endif.
Значение переменной code будет равно 'SHOW'. Нужно изменить её на необходимое, и продолжить выполнение программы.