Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие авар.doc
Скачиваний:
62
Добавлен:
02.09.2019
Размер:
2.34 Mб
Скачать

Передача параметров

Если запуск транзакции должен быть параметризирован (например, передано подразделение и год/период проводки), можно передать параметры с помощью 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.