Текущее время: Чт, апр 18 2024, 22:14

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: OLE интеграция SAP систем
СообщениеДобавлено: Ср, сен 13 2017, 15:47 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
Коллеги, добрый день.
Возникла такая странная потребность, как интеграция 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.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: OLE интеграция SAP систем
СообщениеДобавлено: Чт, сен 14 2017, 09:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
1) попробуйте включить журнал automation (в свойствах сапгуи). Возможно, сообщения в журнале подскажут вам, что не так
2) я бы еще AC_FLUSH_CALL бы выполнил после вызова метода оле-объекта, который у вас должен вытягивать файл
3) ну и альтернатива: вытаскивать все-таки по RFC. Для этого не обязательно, чтобы был объявлен коннект в SM59. Можно динамически формировать адрес дестинейшена (см. в хелпе как это делается). Но нужно чтобы у юзера в целевой системе были права на работу по рфц.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OLE интеграция SAP систем
СообщениеДобавлено: Чт, сен 14 2017, 12:27 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
Кодер написал(а):
3) ну и альтернатива: вытаскивать все-таки по RFC. Для этого не обязательно, чтобы был объявлен коннект в SM59. Можно динамически формировать адрес дестинейшена (см. в хелпе как это делается). Но нужно чтобы у юзера в целевой системе были права на работу по рфц.

В свое время игрался с этим, но только через класс CL_DYNAMIC_DESTINATION, в новой версии.
В текущей системе этого класса нет(версия 702).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: OLE интеграция SAP систем
СообщениеДобавлено: Чт, сен 14 2017, 12:59 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
Вопрос снят, все выгружается нормально. Ошибка обнаружена в руках тестировщика.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: OLE интеграция SAP систем
СообщениеДобавлено: Вт, окт 03 2017, 15:21 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
Коллеги, к сожалению, вынужден опять просить помощи. Проблема решилась только на половину :)
Для выгрузки файла в ФМ ZFM используется GUI_DOWNLOAD
При попытке выгрузить все как есть сейчас, на выполнение gui_download возникает сбой и exception = unknown_error.
Если же при создании подключения ole указать
Code:
    SET PROPERTY OF go_connection 'AbapDebug' = '1'.
    CHECK sy-subrc EQ 0.

то файлы выгружаются, но появляются лишние окна отладчика, которые запускаются автоматически. Пользователю их видеть не обязательно.
Такое ощущение что сейчас при выгрузке программа не может "найти" gui, в итоге не выгружая ничего. Что можно в этом случае покопать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB