Текущее время: Пн, июл 28 2025, 21:25

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Альтернатива вэб-сервису
СообщениеДобавлено: Вт, дек 15 2009, 17:26 
Специалист
Специалист

Зарегистрирован:
Пн, дек 06 2004, 11:36
Сообщения: 151
Всем привет.

Есть ли более простое решение для общения с внешней системой по протоколу http/s, чем вэб-сервис?
Вроде как из SAP с помощью ФМ-ов HTTP_GET, HTTP_POST, можно достучаться, а вот как внешняя система сможет данные в SAP передать не очень понятно... Причем обязательным условием для обмена данными является использование сертификата для сайта.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Вт, дек 15 2009, 17:46 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Можно передавать не в WebService, а в ICF-Сервис...
ICF сервис можно вызывать напрямую с URL параметрами не прибегая к обработке XML (например так http://k.sap.com/sap/bc/its/z_set_user_ ... ame=Pupkin). Единственное, надо писать HANDLER Класс для данного сервиса. Сертификаты обязательно использовать насколько я знаю только для HTTPS соединения... все рависит от настроек сервера. Для вызова через ссылку это необязательно...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Вт, дек 15 2009, 18:12 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
В сервисе почти всегда указываю стандартный обработчик CL_HTTP_EXT_ITS.
Немного подробнее про вызов транзакций и передачу параметров тут
http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3417200%29ID0239935450DB00311652684943873908End?blog=/pub/wlg/855


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Вт, дек 15 2009, 18:31 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
вафля написал(а):
В сервисе почти всегда указываю стандартный обработчик CL_HTTP_EXT_ITS.
Немного подробнее про вызов транзакций и передачу параметров тут
http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3417200%29ID0239935450DB00311652684943873908End?blog=/pub/wlg/855
Ну это наверное если только у вас транзакция и программа к ней прикручена. А можно и со своим классом, без лишнего груза. Например для получения документа по GUID из Z-Таблицы
Code:
METHOD if_http_extension~handle_request.

  DATA lv_string  TYPE string.
  DATA lv_guid    TYPE bbp_guid.
  DATA ls_attach  TYPE zsrm_upl_attach.
  DATA lv_datum   TYPE datum.

  lv_string = server->request->get_form_field( 'GUID' ).
  lv_guid = lv_string.

  lv_datum = sy-datum - 14.
  DELETE FROM zsrm_upl_attach WHERE upload_date < lv_datum.

  SELECT SINGLE * FROM zsrm_upl_attach
    INTO ls_attach WHERE guid = lv_guid.

  IF sy-subrc = 0.
    lv_string = ls_attach-file_type.
    server->response->set_header_field(
      name =  if_http_header_fields=>content_type
      value =  lv_string ).

    lv_string = ls_attach-length.
    server->response->set_header_field(
      name =  if_http_header_fields=>content_length
      value = lv_string ).

    CONCATENATE 'attachment; filename=' ls_attach-file_name INTO lv_string.
    server->response->set_header_field(
      name =  'Content-Disposition'
      value = lv_string ).

    server->response->set_data( ls_attach-raw_data ).

  ELSE.
  ENDIF.

ENDMETHOD.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Вт, дек 15 2009, 19:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
да, подозревал, что можно )
спасибо за пример!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Чт, дек 17 2009, 10:18 
Специалист
Специалист

Зарегистрирован:
Пн, дек 06 2004, 11:36
Сообщения: 151
Спасибо!!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Чт, янв 28 2010, 17:18 
Специалист
Специалист

Зарегистрирован:
Пн, дек 06 2004, 11:36
Сообщения: 151
Кажется пришло время это реализовывать :-)

Требования такие

1. Внешняя система должна передавать данные в SAP через протокол HTTP. Данные - это заказ с заголовком и позициями.
Например, эта система будет постить ссылку с параметрами. Каким образом внешняя система может запостить такую ссылку и как получить и обработать эти данные в SAP? Правильно ли я понял, что нужно создать свой класс и в нем реализовать METHOD if_http_extension~handle_request?

2. После обработки полученных данных нужно из SAP отправить ответ этой внешней системе. Видимо подобным образом - в виде размещения ссылки с данными.

Вроде как тут http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3417200%29ID0239935450DB00311652684943873908End?blog=/pub/wlg/855 есть пример как запостить ссылку через ITS, но как-то не шибко информативно. С чего начинать?

Ну и еще вопрос - как обеспечить безопасности передачи данных? HTTPS ?


Заранее спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Чт, янв 28 2010, 19:18 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
То, как вы представили задание, это классический случай WebService (не ITS Service, который я описывал). Для вашего случая, если вы знакомы с понятием WSDL все намного проще...

Для начале делаете функцию, принимающую на всход ваши параметры, на выходе формирующую необходимый ответ. Потом получаете описание сервисе по ссылке: <server>:<port>/sap/bc/soap/wsdl?sap-client=<клиент>&services=<ИМЯ ФУНКЦИИ>

После чего согласно этому описанию можете делать вызов сервиса по адресу <server>:<port>/sap/bc/soap/rfc?sap-client=<клиент>

Все работает без дополнительных напрягов со стороны SAP (хочешь простая авторизация с пользователем и паролем, хочешь SSL), важно: Функция должна быть RFC.

---

Не особо красивая альтернатива, остаться на ITS, в этом случае в ответ просто генерите данные хоть в виде строчки (server->response->set_data( ls_attach-raw_data ).). При этом ваша клиентская часть отправив запрос (вызвав ссылку с параметрами) получает и обрабатывает ответ от сервера. Связь от сервера к клиенту не нужна.

---

Вы бы хоть сказали, что за внешняя система...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Пт, янв 29 2010, 09:16 
Специалист
Специалист

Зарегистрирован:
Пн, дек 06 2004, 11:36
Сообщения: 151
Спасибо за помощь!

А какая внешняя система будет, я пока что сам не в курсе. Более того, системы может быть несколько, т.к. у каждого клиента она своя. Сейчас важно понять, какое решение выбрать - обмениваться файлами или через HTTP. Всем интереснее второй вариант.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Альтернатива вэб-сервису
СообщениеДобавлено: Пт, янв 29 2010, 12:00 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Тогда мой совет: курить маны и делать WebService


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

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


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

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


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

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