Текущее время: Пт, июл 18 2025, 14:54

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


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

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


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

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