Текущее время: Вт, июл 29 2025, 13:45

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


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

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


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

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