Текущее время: Чт, июл 17 2025, 19:47

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Передача аттачмента (GOS) по RFC
СообщениеДобавлено: Чт, мар 13 2008, 18:45 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 18 2007, 13:05
Сообщения: 32
Как вы знаете в сапе есть чудная система ГУСь (GOS), коей можно прикреплять к бизнес-объекту различные аттачи.
И даже наверное в курсе как это дело в бэкграунде провернуть. Помятуя известный здесь блог Рамы Монохар Тивари.
Вот чтоб этот аттачмент можно было через RFC модуль передать, да и присобачить. Да ещё Remote Enabled.
Можа вообще другой инструмент использовать в этом сценарии?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 13 2008, 20:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Памятуя блог можно посоветовать: BAPI_REL_CREATERELATION.
А если нужно аттачмент типа NOTE, то в добавок SO_DOCUMENT_INSERT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 12:09 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 18 2007, 13:05
Сообщения: 32
Связь между объектами понятно как создать. Коли файл на сервере есть его можно присобачить.
Соль в том как сам аттачмент через рфс передать, причём в обе стороны. Т.е. рфс использует легаси систем обращаясь к сапу. По сценарию эта легаси систем должна получать аттачменты ГУСя и также легко создавать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 12:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
ivanof написал(а):
Соль в том как сам аттачмент через рфс передать, причём в обе стороны.

Оба ф.м., которые я упомянул — RFC модули.
Можно всё это и одним своим ф.м. обернуть.
В чём проблема-то?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 18:44 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 18 2007, 13:05
Сообщения: 32
Скажу проще. Как передать сам аттачмент, т.е. файл (pdf, doc и т.п.) через рфс. Как понимаю эти модули создают связь между объектами. Как объект, к примеру вордовский файл, передать из легаси систем в R3 систему?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 19:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
ivanof написал(а):
Как объект, к примеру вордовский файл, передать из легаси систем в R3 систему?
Если диалоговый режим - через локальную машину пользователя, к примеру. Туды-сюды типа...
Или прочитать файл на сервере приложений как бинарник и выпулить все в другу систему в виде таблицы.
Ну а потом уже связи через бапи или класс сделать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 20:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
ivanof написал(а):
Скажу проще. Как передать сам аттачмент, т.е. файл (pdf, doc и т.п.) через рфс.

А Вы вообще смотрели, что делает ф.м. SO_DOCUMENT_INSERT ?

Вот пример, как можно считать заметку к закупочному заказу. Вставить можно по аналогии с точностью до наоборот.
Code:
DATA: ip_role TYPE oblroltype
    , is_object TYPE sibflporb
    , ip_relation TYPE oblreltype
    , et_links TYPE obl_t_link
    .
FIELD-SYMBOLS: <links> TYPE LINE OF obl_t_link.

ip_relation = 'NOTE'.
ip_role = 'GOSAPPLOBJ'.
is_object-instid = '3300000008'. " Номер закупочного заказа
is_object-typeid = 'BUS2012'.    " Бизнес-объект, соответствующий закупочному заказу
is_object-catid = 'BO'.

cl_binary_relation=>read_links_of_binrel(
  EXPORTING
    is_object    = is_object
    ip_relation  = ip_relation
    ip_role      = ip_role
*      ip_propnam   = ip_propnam
*      ip_no_buffer = SPACE
   IMPORTING
     et_links     = et_links
*      et_roles     = et_roles
       ).


DATA:
      folder_id LIKE soodk
    , object_id LIKE soodk
    , object_hd_display LIKE sood2
    , objcont TYPE TABLE OF soli
.
FIELD-SYMBOLS: <cont> TYPE soli.

LOOP AT et_links ASSIGNING <links> WHERE roletype_b = 'ANNOTATION'
           AND typeid_b = 'MESSAGE' AND catid_b = 'BO'.

  folder_id = <links>-instid_b(17).
  object_id = <links>-instid_b+17(17).

  CALL FUNCTION 'SO_OBJECT_READ'
    EXPORTING
      folder_id                  = folder_id
      object_id                  = object_id
    IMPORTING
      object_hd_display          = object_hd_display
    TABLES
      objcont                    = objcont
    EXCEPTIONS
      active_user_not_exist      = 1
      communication_failure      = 2
      component_not_available    = 3
      folder_not_exist           = 4
      folder_no_authorization    = 5
      object_not_exist           = 6
      object_no_authorization    = 7
      operation_no_authorization = 8
      owner_not_exist            = 9
      parameter_error            = 10
      substitute_not_active      = 11
      substitute_not_defined     = 12
      system_failure             = 13
      x_error                    = 14
      OTHERS                     = 15.

  IF sy-subrc <> 0.
    MESSAGE 'Ошибка чтения заметки' TYPE 'E'.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 20:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
John Doe написал:
Если диалоговый режим - через локальную машину пользователя, к примеру.

GOS хранит свои документы (заметки, аттачменты) в SAP Office.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 20:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
sibrin написал:
John Doe написал:
Если диалоговый режим - через локальную машину пользователя, к примеру.

GOS хранит свои документы (заметки, аттачменты) в SAP Office.

Я знаю... Много чего можно в таблице SOOD найти (в инстанциях БО SOOD порыться).
Просто можно выгрузить аттачмент на локал, а потом уже думать о закачке в другую систему ИМХО.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 21:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
John Doe написал:
Просто можно выгрузить аттачмент на локал, а потом уже думать о закачке в другую систему ИМХО.

А в чём фишка? Есть прекрасный rfc-ф.м. SO_OBJECT_READ: вызывай да получай...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 14 2008, 22:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
to sibrin
ivanof написал(а):
Как объект, к примеру вордовский файл, передать из легаси систем в R3 систему?

Я к сожалению не знаком с легаси систем - поэтому просто предположил, что из нее можно выгрузить на локал, а потом в R/3 закинуть... Это чисто теоретические размышления.

Добавил: а в обратку - как раз SO_OBJECT_READ пойдет. Только сейчас проверил, что он RFC... :oops:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 17 2008, 12:13 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 18 2007, 13:05
Сообщения: 32
to sibirin

В случае коли png картинка прикреплена передаем в SO_OBJECT_READ OBJECT_ID=EXT33000000000001
на выходе в OBJECT_HD_DISPLAY все правильно написано, что файл экстеншен png, длина файла и т.д.
а в OBJCONT одна строка = &SO_KProObjectID=SOFFLOIO DCF04131BB9E43F1894B0011D8AB6975
так понимаю это совсем не содержание png.
Как же нам этот png передать?
Уточню что нужно передачу устроить между вэб-порталом и R3


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 17 2008, 12:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Попробуйте передать "SOFFLOIO DCF04131BB9E43F1894B0011D8AB6975" в SO_DOCUMENT_READ_API1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 17 2008, 18:38 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 18 2007, 13:05
Сообщения: 32
Спасибо всем. Разобрался малешка.
В общем сия бодяга, по крайней мере на получение аттача, решается в группе функций SOI1. Ведь GOS хранит свои документы в SAP Office. Выбираем по табличке SRGBTBREL ид наших аттачей (поле INSTID_B):

SELECT * INTO CORRESPONDING FIELDS OF TABLE it_srgbtbrel
FROM srgbtbrel
WHERE instid_a = sd_id AND typeid_a = sd_type.

и передаем его в замечательный модуль SO_DOCUMENT_READ_API1 как DOCUMENT_ID.
Получаем в итоге заголовок с описанием и контент как текстовой OBJECT_CONTENT, так и бинарный CONTENTS_HEX.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача аттачмента (GOS) по RFC
СообщениеДобавлено: Чт, июн 19 2008, 08:40 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вс, сен 02 2007, 15:10
Сообщения: 670
Откуда: Moscow
ivanof написал(а):
...Помятуя известный здесь блог Рамы Монохар Тивари...
Я так понимаю, что этот блог на snd.sap.com. Можно ссылку или намек как правильно писать имя этого чела по-английски?

_________________
Если кризис ведет к очищению, то удар битой по голове должен вести к просветлению. (с) Я.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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


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

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


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

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