- •Часть 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, недоступных для ведения
- •Оптимизация выборки данных
- •Справочник транзакций
Загрузка транзакционных данных
FORM LOAD1C .
DATA:
CON TYPE I,
KOD TYPE C LENGTH 255,
KOD2 TYPE C LENGTH 255,
SUMMA TYPE F,
IND TYPE N LENGTH 6,
DS TYPE C LENGTH 19,
STR TYPE STRING,
ZAP_TXT TYPE C LENGTH 4086,
FL TYPE I,
FL2 TYPE I,
CONSTR TYPE C LENGTH 500,
VD TYPE OLE2_OBJECT,
VIB TYPE OLE2_OBJECT,
VIP TYPE OLE2_OBJECT,
VIB2 TYPE OLE2_OBJECT,
VIB3 TYPE OLE2_OBJECT,
PS TYPE OLE2_OBJECT,
PS1 TYPE OLE2_OBJECT,
SC TYPE OLE2_OBJECT,
SP TYPE OLE2_OBJECT,
ZAP TYPE OLE2_OBJECT,
ND 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.
CALL FUNCTION 'ZMOEK_LOAD_SPRAV'
EXPORTING
SRVR = SRVR
REF = REF
USERNAME = USERNAME
PASS = PASS
SP_NAME = 'ВидыДеятельности'
TABLENAME = 'ZMOEK_VD'
IPAK_NAME = 'ZPAK_D971TX39V8VCIFCNMKM41FTPR'
EXCEPTIONS
ONEC_OLE = 1
ONEC_PATH = 2
SPRAV = 3
OTHERS = 4
.
DO 1000 TIMES.
ENDDO.
IND = 0.
DELETE FROM ZMOEK_1C_TAB.
CONCATENATE
'ВЫБРАТЬ'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СЧЕТ КАК СЧЕТ,'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СУБКОНТО1 КАК СУБКОНТО1,'
'СУММА(ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СУММАОБОРОТКТ) КАК СУММАОБОРОТКТ'
'ИЗ'
'РЕГИСТРБУХГАЛТЕРИИ.ХОЗРАСЧЕТНЫЙ.ОСТАТКИИОБОРОТЫ('
'ДАТАВРЕМЯ('
D1(4)
','
D1+4(2)
','
D1+6(2)
', 00, 00, 00),'
'ДАТАВРЕМЯ('
D1(4)
','
D1+4(2)
','
D1+6(2)
', 23, 59, 59)'
', , ,'
', , СУБКОНТО1 = &ВИДДЕЯТЕЛЬНОСТИ) КАК ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ'
'ГДЕ'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СЧЕТ В ИЕРАРХИИ(&СЧЕТ)'
'СГРУППИРОВАТЬ ПО'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СЧЕТ,'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СУБКОНТО1'
INTO ZAP_TXT SEPARATED BY SPACE.
CONCATENATE 'SRVR=' SRVR ';REF=' REF ';USR=' USERNAME ';PWD=' PASS INTO CONSTR.
CREATE OBJECT ONEC 'V8.APPLICATION'.
CALL METHOD OF ONEC 'CONNECT' = CON
EXPORTING:
#1 = CONSTR.
IF CON = 1.
ZMOEK1CPARAM-PARAM = 'SRVR'.
INSERT ZMOEK1CPARAM.
UPDATE ZMOEK1CPARAM SET VALUE = SRVR WHERE PARAM = 'SRVR'.
ZMOEK1CPARAM-PARAM = 'REF'.
INSERT ZMOEK1CPARAM.
UPDATE ZMOEK1CPARAM SET VALUE = REF WHERE PARAM = 'REF'.
ZMOEK1CPARAM-PARAM = 'USERNAME'.
INSERT ZMOEK1CPARAM.
UPDATE ZMOEK1CPARAM SET VALUE = USERNAME WHERE PARAM = 'USERNAME'.
ZMOEK1CPARAM-PARAM = 'PASS'.
INSERT ZMOEK1CPARAM.
UPDATE ZMOEK1CPARAM SET VALUE = PASS WHERE PARAM = 'PASS'.
CALL METHOD OF ONEC 'NEWOBJECT' = ZAP
EXPORTING:
#1 = 'ЗАПРОС'.
SET PROPERTY OF ZAP 'ТЕКСТ' = ZAP_TXT.
CALL METHOD OF ONEC 'ПЛАНЫСЧЕТОВ' = PS.
CALL METHOD OF PS 'ХОЗРАСЧЕТНЫЙ' = PS1.
CALL METHOD OF ONEC 'СПРАВОЧНИКИ' = SP.
CALL METHOD OF SP 'ВИДЫДЕЯТЕЛЬНОСТИ' = VD.
CALL METHOD OF VD 'ВЫБРАТЬ' = VIB.
DO.
CALL METHOD OF VIB 'СЛЕДУЮЩИЙ' = FL.
IF FL NE 1.
EXIT.
ENDIF.
GET PROPERTY OF VIB 'КОД' = KOD.
KOD2 = KOD.
KOD = KOD2.
DO 1000 TIMES.
ENDDO.
CALL METHOD OF VD 'НАЙТИПОКОДУ' = VIB3
EXPORTING:
#1 = KOD.
CALL METHOD OF ZAP 'УСТАНОВИТЬПАРАМЕТР'
EXPORTING:
#1 = 'ВИДДЕЯТЕЛЬНОСТИ'
#2 = VIB3.
CALL METHOD OF PS1 'НАЙТИПОКОДУ' = SC
EXPORTING:
#1 = '90.01.1'.
CALL METHOD OF ZAP 'УСТАНОВИТЬПАРАМЕТР'
EXPORTING:
#1 = 'СЧЕТ'
#2 = SC.
CALL METHOD OF ZAP 'ВЫПОЛНИТЬ' = VIP.
CALL METHOD OF VIP 'ВЫБРАТЬ' = VIB2.
DO.
CALL METHOD OF VIB2 'СЛЕДУЮЩИЙ' = FL2.
IF FL2 NE 1.
EXIT.
ENDIF.
IND = IND + 1.
ZMOEK_1C_TAB-IND = IND.
ZMOEK_1C_TAB-DATA = D1.
ZMOEK_1C_TAB-VD = KOD.
ZMOEK_1C_TAB-SCHET = '90.01.1'.
GET PROPERTY OF VIB2 'СУММАОБОРОТКТ' = SUMMA.
ZMOEK_1C_TAB-SUMMA = SUMMA.
INSERT ZMOEK_1C_TAB.
ENDDO.
CALL METHOD OF PS1 'НАЙТИПОКОДУ' = SC
EXPORTING:
#1 = '90.02'.
CALL METHOD OF ZAP 'УСТАНОВИТЬПАРАМЕТР'
EXPORTING:
#1 = 'СЧЕТ'
#2 = SC.
CALL METHOD OF ZAP 'ВЫПОЛНИТЬ' = VIP.
CALL METHOD OF VIP 'ВЫБРАТЬ' = VIB2.
DO.
CALL METHOD OF VIB2 'СЛЕДУЮЩИЙ' = FL2.
IF FL2 NE 1.
EXIT.
ENDIF.
IND = IND + 1.
ZMOEK_1C_TAB-IND = IND.
ZMOEK_1C_TAB-DATA = D1.
ZMOEK_1C_TAB-VD = KOD.
ZMOEK_1C_TAB-SCHET = '90.02'.
GET PROPERTY OF VIB2 'СУММАОБОРОТКТ' = SUMMA.
ZMOEK_1C_TAB-SUMMA = SUMMA.
INSERT ZMOEK_1C_TAB.
ENDDO.
ENDDO.
CONCATENATE
'ВЫБРАТЬ'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СЧЕТ КАК СЧЕТ,'
'СУММА(ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СУММАОБОРОТКТ) КАК СУММАОБОРОТКТ'
'ИЗ'
'РЕГИСТРБУХГАЛТЕРИИ.ХОЗРАСЧЕТНЫЙ.ОСТАТКИИОБОРОТЫ('
'ДАТАВРЕМЯ('
D1(4)
','
D1+4(2)
','
D1+6(2)
', 00, 00, 00),'
'ДАТАВРЕМЯ('
D1(4)
','
D1+4(2)
','
D1+6(2)
', 23, 59, 59)'
') КАК ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ'
'ГДЕ'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СЧЕТ В ИЕРАРХИИ(&СЧЕТ)'
'СГРУППИРОВАТЬ ПО'
'ХОЗРАСЧЕТНЫЙОСТАТКИИОБОРОТЫ.СЧЕТ'
INTO ZAP_TXT SEPARATED BY SPACE.
CALL METHOD OF ONEC 'NEWOBJECT' = ZAP
EXPORTING:
#1 = 'ЗАПРОС'.
SET PROPERTY OF ZAP 'ТЕКСТ' = ZAP_TXT.
CALL METHOD OF PS1 'НАЙТИПОКОДУ' = SC
EXPORTING:
#1 = '62.02'.
CALL METHOD OF ZAP 'УСТАНОВИТЬПАРАМЕТР'
EXPORTING:
#1 = 'СЧЕТ'
#2 = SC.
CALL METHOD OF ZAP 'ВЫПОЛНИТЬ' = VIP.
CALL METHOD OF VIP 'ВЫБРАТЬ' = VIB2.
DO.
CALL METHOD OF VIB2 'СЛЕДУЮЩИЙ' = FL2.
IF FL2 NE 1.
EXIT.
ENDIF.
IND = IND + 1.
ZMOEK_1C_TAB-IND = IND.
ZMOEK_1C_TAB-DATA = D1.
ZMOEK_1C_TAB-VD = ''.
ZMOEK_1C_TAB-SCHET = '62.02'.
GET PROPERTY OF VIB2 'СУММАОБОРОТКТ' = SUMMA.
ZMOEK_1C_TAB-SUMMA = SUMMA.
INSERT ZMOEK_1C_TAB.
ENDDO.
FREE OBJECT VD.
FREE OBJECT VIB.
FREE OBJECT SP.
FREE OBJECT ONEC.
FREE OBJECT VIB2.
FREE OBJECT VIP.
FREE OBJECT PS.
FREE OBJECT PS1.
IF IND > 0.
name_packet = 'ZPAK_4K14U76T659PV2SV95SHQSGXH'.
CALL FUNCTION 'BAPI_IPAK_START'
EXPORTING
infopackage = name_packet
IMPORTING
requestid = requestid
TABLES
return = result_start_ipack.
MESSAGE S001(00) WITH 'Выполнено'.
ELSE.
MESSAGE I001(00) WITH 'Данные за выбранную дату отсутствуют!'.
ENDIF.
ENDIF.
ENDFORM. " LOAD1C