SAPфорум.RU https://sapboard.ru/forum/ |
|
OLE интеграция SAP систем https://sapboard.ru/forum/viewtopic.php?f=13&t=95453 |
Страница 1 из 1 |
Автор: | Saperx [ Ср, сен 13 2017, 15:47 ] |
Заголовок сообщения: | OLE интеграция SAP систем |
Коллеги, добрый день. Возникла такая странная потребность, как интеграция SAP систем по OLE, т.к. создание rfc соединения между данными 2мя системами создать не представляется возможным. Проблема в следующем: мне необходимо в другой системе запустить фм, который должен выгрузить файл на мою локальную машину. Если делать это по rfc - все работает. Если же делать это по OLE, то все отрабатывает, subrc = 0, но файлов не выгружает. Если же пытаться передавать содержимое файла, а потом уже у себя его сохранять - то это работает крайне медленно. Код, может кому-нибудь еще пригодится: Code: CREATE OBJECT go_sapfunctions 'SAP.Functions'.
CHECK sy-subrc EQ 0. CALL METHOD OF go_sapfunctions 'Connection' = go_connection. CHECK sy-subrc EQ 0. * Подключаемся к SAP CALL METHOD OF go_connection 'Logon'. IF sy-subrc = 0. CALL METHOD OF go_sapfunctions 'Add' = go_myfunc EXPORTING #1 = 'ZFM'. CHECK sy-subrc EQ 0. * Импортируем таблицу с информацией CALL METHOD OF go_myfunc 'Tables' = go_tables_info EXPORTING #1 = 'ET_BT'. CHECK sy-subrc EQ 0. CALL METHOD OF go_myfunc 'Call'. <---- вот здесь мы должны получить выгруженные файлы на компе CHECK sy-subrc EQ 0. *Данные же корректно возвращаются, но приходится извращаться для их интерпретации. *И кусок кода ниже работает крайне медленно *Может его можно как-то ускорить? GET PROPERTY OF go_tables_info 'RowCount' = lv_rowcount. CHECK sy-subrc EQ 0. IF lv_rowcount > 0. REFRESH lt_fieldcat[]. CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING i_structure_name = 'ZS_DATA' CHANGING ct_fieldcat = lt_fieldcat. DO lv_rowcount TIMES. sy_index = sy-index. CLEAR: ls_bt. LOOP AT lt_fieldcat INTO ls_fieldcat. GET PROPERTY OF go_tables_info 'Cell' = lv_data EXPORTING #1 = sy_index #2 = ls_fieldcat-col_pos. ASSIGN COMPONENT ls_fieldcat-fieldname OF STRUCTURE ls_bt TO <f>. CHECK sy-subrc = 0. <f> = lv_data. ENDLOOP. APPEND ls_bt TO lt_bt[]. ENDDO. endif. ENDIF. |
Автор: | Кодер [ Чт, сен 14 2017, 09:50 ] |
Заголовок сообщения: | Re: OLE интеграция SAP систем |
1) попробуйте включить журнал automation (в свойствах сапгуи). Возможно, сообщения в журнале подскажут вам, что не так 2) я бы еще AC_FLUSH_CALL бы выполнил после вызова метода оле-объекта, который у вас должен вытягивать файл 3) ну и альтернатива: вытаскивать все-таки по RFC. Для этого не обязательно, чтобы был объявлен коннект в SM59. Можно динамически формировать адрес дестинейшена (см. в хелпе как это делается). Но нужно чтобы у юзера в целевой системе были права на работу по рфц. |
Автор: | Saperx [ Чт, сен 14 2017, 12:27 ] |
Заголовок сообщения: | Re: OLE интеграция SAP систем |
Кодер написал(а): 3) ну и альтернатива: вытаскивать все-таки по RFC. Для этого не обязательно, чтобы был объявлен коннект в SM59. Можно динамически формировать адрес дестинейшена (см. в хелпе как это делается). Но нужно чтобы у юзера в целевой системе были права на работу по рфц. В свое время игрался с этим, но только через класс CL_DYNAMIC_DESTINATION, в новой версии. В текущей системе этого класса нет(версия 702). |
Автор: | Saperx [ Чт, сен 14 2017, 12:59 ] |
Заголовок сообщения: | Re: OLE интеграция SAP систем |
Вопрос снят, все выгружается нормально. Ошибка обнаружена в руках тестировщика. |
Автор: | Saperx [ Вт, окт 03 2017, 15:21 ] |
Заголовок сообщения: | Re: OLE интеграция SAP систем |
Коллеги, к сожалению, вынужден опять просить помощи. Проблема решилась только на половину Для выгрузки файла в ФМ ZFM используется GUI_DOWNLOAD При попытке выгрузить все как есть сейчас, на выполнение gui_download возникает сбой и exception = unknown_error. Если же при создании подключения ole указать Code: SET PROPERTY OF go_connection 'AbapDebug' = '1'. CHECK sy-subrc EQ 0. то файлы выгружаются, но появляются лишние окна отладчика, которые запускаются автоматически. Пользователю их видеть не обязательно. Такое ощущение что сейчас при выгрузке программа не может "найти" gui, в итоге не выгружая ничего. Что можно в этом случае покопать? |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |