Текущее время: Вт, апр 16 2024, 17:56

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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