- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Передача параметров
Если запуск транзакции должен быть параметризирован (например, передано подразделение и год/период проводки), можно передать параметры с помощью URL адреса вызываемой транзакции (программы).
Для передачи параметров в URL строки подставляются параметры через знак «&» {имя параметра}={значение параметра}. Строка с адресом выглядит следующим образом:
https://sz30.adm.gazprom.ru:8001/sap/zsbcs_log?sap-client=200&SORGUNIT=000000087107&0FISCPER3=012&0FISCYEAR=2008
Каждый параметр записывается в SAP MEMORY и его можно считать в вызываемой программе.
Загрузка данных из 1с 8
Пример использования: необходимо загружать фактические данные для системы бюджетирования построенной на базе SAP BI из используемой учетной системы построенной на базе 1C.
Данные из 1.С предприятия можно загружать напрямую в SAP BI с помощью технологии OLE. Необходимо помнить, что OLE объекты – это библиотеки операционной системы Windows, по этому на использование технологии есть следующие ограничения:
Операционная система Windows;
Необходимые библиотеки должны присутствовать в системе (т.е. должны быть установлены приложения, которые их предоставляют);
Проблематично запускать в фоновом режиме на сервере приложений.
Примеры:
Загрузка справочников
FUNCTION ZMOEK_LOAD_SPRAV.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(ONECPATH) TYPE STRING DEFAULT 'D:\my_doc\InfoBase1'
*" REFERENCE(USERNAME) TYPE STRING DEFAULT 'Полные'
*" REFERENCE(PASS) TYPE STRING DEFAULT 'mehmat'
*" REFERENCE(SP_NAME) TYPE STRING DEFAULT 'СтатьиЗатрат'
*" REFERENCE(TABLENAME) TYPE STRING DEFAULT 'Z1C_SZ'
*" REFERENCE(IPAK_NAME) TYPE STRING
*" EXCEPTIONS
*" ONEC_OLE
*" ONEC_PATH
*" SPRAV
*"----------------------------------------------------------------------
INCLUDE OLE2INCL.
DATA:
BEGIN OF SPSTR,
KOD TYPE C LENGTH 255,
NAIM TYPE C LENGTH 255,
END OF SPSTR.
TYPES:
TSPTAB_L LIKE SPSTR,
TSPTAB TYPE TSPTAB_L OCCURS 100.
DATA:
S TYPE STRING,
S1 LIKE RLGRAP-FILENAME,
SPTAB TYPE TSPTAB,
FL TYPE I,
SOURCE_TABLE(72) OCCURS 10 WITH HEADER LINE,
PRNAME LIKE SY-CPROG,
SOURCE_TABLE1(72) OCCURS 10 WITH HEADER LINE,
PRNAME1 LIKE SY-CPROG,
SP TYPE OLE2_OBJECT,
SZ TYPE OLE2_OBJECT,
VIB TYPE OLE2_OBJECT,
ONEC TYPE OLE2_OBJECT.
DATA:
name_packet(30),
requestid LIKE bapi6107dr-request,
result_start_ipack TYPE TABLE OF bapiret2 WITH HEADER LINE.
CREATE OBJECT ONEC 'V8.APPLICATION'.
IF SY-SUBRC NE 0.
RAISE ONEC_OLE.
ENDIF.
CONCATENATE 'FILE="' ONECPATH '";USR=' USERNAME ';PWD=' PASS INTO S.
S1 = S.
CALL METHOD OF ONEC 'CONNECT' EXPORTING:
#1 = S1.
IF SY-SUBRC NE 0.
RAISE ONEC_PATH.
ENDIF.
CALL METHOD OF ONEC 'СПРАВОЧНИКИ' = SP.
REFRESH SOURCE_TABLE.
APPEND 'REPORT ZGETSP.' TO SOURCE_TABLE.
APPEND 'INCLUDE OLE2INCL.' TO SOURCE_TABLE.
CONCATENATE 'FORM GETSP USING SP TYPE OLE2_OBJECT'
'CHANGING SZ TYPE OLE2_OBJECT.' INTO S
SEPARATED BY SPACE.
APPEND S TO SOURCE_TABLE.
CONCATENATE 'CALL METHOD OF SP ''' SP_NAME ''' = SZ.' INTO S.
APPEND S TO SOURCE_TABLE.
APPEND 'ENDFORM.' TO SOURCE_TABLE.
GENERATE SUBROUTINE POOL SOURCE_TABLE NAME PRNAME.
PERFORM GETSP IN PROGRAM (PRNAME) USING SP CHANGING SZ.
IF SY-SUBRC NE 0.
RAISE SPRAV.
ENDIF.
CALL METHOD OF SZ 'ВЫБРАТЬ' = VIB.
DO.
CALL METHOD OF VIB 'СЛЕДУЮЩИЙ' = FL.
IF FL NE 1.
EXIT.
ENDIF.
GET PROPERTY OF VIB 'КОД' = SPSTR-KOD.
GET PROPERTY OF VIB 'НАИМЕНОВАНИЕ' = SPSTR-NAIM.
APPEND SPSTR TO SPTAB.
ENDDO.
FREE OBJECT ONEC.
FREE OBJECT SP.
FREE OBJECT VIB.
FREE OBJECT SZ.
APPEND 'REPORT ZSETSP.' TO SOURCE_TABLE1.
APPEND 'TABLES:' TO SOURCE_TABLE1.
APPEND TABLENAME TO SOURCE_TABLE1.
APPEND '.' TO SOURCE_TABLE1.
APPEND 'DATA:' TO SOURCE_TABLE1.
APPEND 'BEGIN OF SPSTR,' TO SOURCE_TABLE1.
APPEND 'KOD TYPE C LENGTH 255,' TO SOURCE_TABLE1.
APPEND 'NAIM TYPE C LENGTH 255,' TO SOURCE_TABLE1.
APPEND 'END OF SPSTR.' TO SOURCE_TABLE1.
APPEND 'TYPES:' TO SOURCE_TABLE1.
APPEND 'TSPTAB_L LIKE SPSTR,' TO SOURCE_TABLE1.
APPEND 'TSPTAB TYPE TSPTAB_L OCCURS 100.' TO SOURCE_TABLE1.
APPEND 'FORM SETSP USING TAB TYPE TSPTAB.' TO SOURCE_TABLE1.
APPEND 'DATA: L TYPE TSPTAB_L.' TO SOURCE_TABLE1.
CONCATENATE 'DELETE FROM' TABLENAME INTO S SEPARATED BY SPACE.
CONCATENATE S '.' INTO S.
APPEND S TO SOURCE_TABLE1.
APPEND 'LOOP AT TAB INTO L.' TO SOURCE_TABLE1.
CONCATENATE TABLENAME '-KOD = L-KOD.' INTO S.
APPEND S TO SOURCE_TABLE1.
CONCATENATE TABLENAME '-NAIM = L-NAIM.' INTO S.
APPEND S TO SOURCE_TABLE1.
CONCATENATE 'INSERT' TABLENAME INTO S SEPARATED BY SPACE.
CONCATENATE S '.' INTO S.
APPEND S TO SOURCE_TABLE1.
APPEND 'ENDLOOP.' TO SOURCE_TABLE1.
APPEND 'ENDFORM.' TO SOURCE_TABLE1.
GENERATE SUBROUTINE POOL SOURCE_TABLE1 NAME PRNAME1.
PERFORM SETSP IN PROGRAM (PRNAME1) USING SPTAB.
name_packet = IPAK_NAME.
CALL FUNCTION 'BAPI_IPAK_START'
EXPORTING
infopackage = name_packet
IMPORTING
requestid = requestid
TABLES
return = result_start_ipack.
ENDFUNCTION.