Время чтения ~ 5 мин.

Сегодня я хочу рассказать вам о задаче, относящейся к интеграции модуля SAP HCM с другими системами посредством SAP PI.

SAP PI (Process Integration) — это программное обеспечение для интеграции корпоративных приложений. Более подробную и хорошо структурированную информацию можно найти здесь.

Суть нашей задачи такая:

Вам, как разработчику SAP HCM необходимо реализовать возможность передачи на web-портал документа *.pdf по запросу. Передача осуществляется через платформу PI и ваш коллега, PI-разработчик, уже разработал асинхронные интерфейсы si_i_DocumentRequest и si_o_Document.

  • si_i_DocumentRequest входящий (inbound) интерфейс. Через него нам передадут входные данные для формирования PDF-файла (табельный номер, период и прочее).
  • si_o_Document исходящий (outbound) интерфейс. Через него мы будем отправлять PDF-файл.

Далее я опишу необходимые шаги по реализации.

Первым делом нам необходимо перейти в транзакцию SPROXY и сгенерировать прокси. Делается это двойным щелчком по интерфейсу.

В появившемся окне, укажем пакет разработки и префикс (z). После этого будут сгенерированы необходимые объекты словаря, в том числе и класс-провайдер.

Inbound интерфейс

Сгенерированный класс inbound интерфейса содержит один публичный метод, который нам необходимо реализовать. В моем случае он называется si_o_document_request. У вас он может называться по-другому. Название, очевидно, зависит от PI-разработчика.

Outbound интерфейс

Сгенерированный класс Outbound интерфейса (в моем случае это zco_si_o_document) содержит два публичных метода: constructor и si_o_document.

Конструктор в этом посте нам не интересен, а si_o_document нам как раз пригодится, чтобы отправить ответ вместе с прикрепленным PDF-файлом.

Стоит отметить, что название метода зависит от PI-разработчика. Например здесь метод решили назвать execute_asynchronous.

Реализация прокси

Итак, в inbound интерфейсе реализуем метод si_o_document_request.

Содержимое приватного метода send может выглядеть так:

Центральным местом в приведенном выше листинге является вызов метода si_o_document (напомню, что у вас он скорее всего будет называться по-другому) класса zco_si_o_document. Все остальное это получение файла в бинарном представлении и его «прикрепление».

Тестирование

После того, как мы написали реализацию отправки файла в XI/PI у нас есть замечательная возможность все это дело протестировать.

Для этого необходимо сделать дабл клик по inbound интерфейсу и нажать F8 (или Fn+F8).

После этого появится такое окошко. Жмем «Выполнить».

На вкладке Request мы увидим XML-ку. Необходимо ее отредактировать. Для этого нажмем на странноватую кнопку как на скриншоте ниже.

Присвоив значения атрибутам нажимаем «Выполнить».

Если все прошло хорошо, в транзакции sxi_monitor вы увидите запись, похожую на эту:

Обратите внимание на флажок. Он должен быть именно таким, с шашечкой.

Дважды кликаем по записи и переходим к режиму в котором отображается все что мы передали в XI/PI. В папке Payloads два файла: наш PDF и XML-ка с прочими полями. Посмотрим на PDF.

А вот и он!

Если что-то пошло не так, можно поставить точку останова и проверить код через призму отладчика.

На этом все. Пока!

P.S.

Приношу извинения за то, что во многих местах не обошлось без закрашивания серым, но так надо.

P.P.S.

Напоминаю, что следить за выходом новых постов можно здесь.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.