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/