- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Поиск символьных строк в полях или внутренних таблицах
Предположим нужно найти строку 'California' в символьном поле 'Texas California New Mexico Louisiana Oregon'.
DATA: TEXT(100) VALUE 'Texas California New Mexico Louisiana Oregon'.
SEARCH TEXT FOR 'California'.
IF SY-SUBRC NE 0. WRITE 'Not found'. ENDIF.
Если поиск закончился успехом, то системный код возврата SY-SUBRC будет равен нулю. Кроме того системное поле SY_FDPOS содержит сдвиг найденной строки относительно начала. В приведенном примере SY_FDPOS=6.
Важно отметить, что команда SEARCH не различает верхнего и нижнего регистров.
Кроме того команда SEARCH может производить поиск во внутренних таблицах.
TYPES TEXT_LINE(80).
DATA: LETTER TYPE TEXT_LINE OCCURS 100.
Пусть первая строка письма LETTER содержит текст 'Diar IBS Group', вторая - 'thank you 4 your work!'. Тогда после выполнении команды
SEARCH LETTER FOR 'you'.
получим следующий результат:
SY-SUBRC = 0, поиск закончился успешно;
SY_TABIX = 2, индекс строки таблицы;
SY_FDPOS = 6, сдвиг относительно начала строки.
Символ «Перенос каретки»
В тестовых файлах символы переноса строки (или символы переноса каретки) имеют вид «#13#10». В языке ABAP они записываются как CL_ABAP_CHAR_UTILITIES=>CR_LF.
Запись данных
В ABAP/4 вывод информации на экран или принтер осуществляется с помощью команды WRITE.
Простой формат вывода
Операторы WRITE формируют выходную страницу. Рассмотрим пример вывода строковой информации, содержащую текущую дату:
WRITE: 'This is the current date:', SY-DATUM.
Результат выполнения выглядит следующим образом.
Рисунок 19
По умолчанию, символьные поля форматируются по левой границе, числовые - по правой. Т.е. оператор
WRITE: / 'String1', 15, 'String2', 16.
приведет к следующему форматированию:
Рисунок 20
Для того, чтобы информация выводилась с новой строки можно использовать команду NEW-LINE, символ "/" в команде WRITE или команду SKIP. В следующем примере показаны все три способа.
WRITE '1st line'.
NEW-LINE.
WRITE: 'New line',
/ 'Yet another line'.
SKIP 3.
WRITE / 'skip 3 produces three empty lines.'.
Задать положение поля в списке можно с помощью дополнения AT оператора WRITE или команды POSITION.
WRITE AT 5 'position 5'.
POS = 20.
WRITE AT POS 'position 20'.
POSITION 40.
WRITE 'position 40'.
Использование символов и пиктограмм
ABAP/4 имеет около 200 предварительно определенных символов и пиктограмм, которые можно вывести, использую дополнения AS SYMBOL и AS ICON команды WRITE. Для включения символов и пиктограмм необходимо использовать команду INCLUDE.
INCLUDE: <SYMBOL>, <ICON>
WRITE: / SYM_PHONE AS SYMBOL, 'telephone',
/ SYM_FAX AS SYMBOL, 'fax machine',
/ SYM_LEFT_HAND AS SYMBOL, 'hand pointing left',
/ SYM_CAUTION AS SYMBOL, 'caution',
/ ICON_ARROW_LEFT AS ICON, 'arrow left',
/ ICON_COST_CENTER AS ICON, 'cost center',
/ ICON_HOLD AS ICON, 'hold',
/ ICON_PRINT AS ICON, 'print'.
Результат показан на следующем рисунке.
Рисунок 21
Полный список символов и пиктограмм можно посмотреть в документации. Вот только некоторые из них:
Рисунок 22