SAPфорум.RU
https://sapboard.ru/forum/

PI первый опыт
https://sapboard.ru/forum/viewtopic.php?f=70&t=92445
Страница 1 из 1

Автор:  ceib [ Сб, фев 20 2016, 10:50 ]
Заголовок сообщения:  PI первый опыт

Добрый день!

Есть некоторый внешний WEB-сервис (предоставляет SOAP-интерфейс); раз в час необходимо отправлять ему запрос на определенные данные, получать их и отдавать на обработку ERP. Никогда раньше с PI не работал, да и в SAP опыта разработки толком нет.

Собственно вопрос - подскажите материалы, поделитесь ссылками, по которым стоит "входить в курс дела", изучать теорию и практические примеры создания подобных вещей. Сейчас читаю "Process Integration Handbook", смотрю обучающие ролики, читаю русскоязычные статьи, но нигде не могу пока найти ни слова о том как же все таки правильно построить синхронный интерфейс с подходом "снаружи-внутрь" (очень хотелось бы пример где нибудь найти чего то подобного) и как на стороне ERP данные принимать. Везде разбирается один и тот же пример с простейшим асинхронным интерфейсом файл-файл/файл-ERP с подходом "изнутри-наружу".

Буду благодарен за любые ссылки/советы/рекомендации.

Автор:  Chaser009 [ Ср, фев 24 2016, 04:12 ]
Заголовок сообщения:  Re: PI первый опыт

Здравствуйте!

Ну не знаю, конечно, но для начала рекомендовал бы просто BIT400. Мне лично помог выстроить некую картинку, как это все работает. А дальше практика.

По вашей задаче: как у вас ERP данные запрашивать-то будет? Отчет/транзакция в ABAP? Тогда вам надо прокси создавать на стороне ERP, грузить описание принимающего сервиса, ну и мэппинги настроить.
Или больше информации надо: откуда, как, куда.

Автор:  ceib [ Ср, фев 24 2016, 09:53 ]
Заголовок сообщения:  Re: PI первый опыт

Chaser009 написал:
Здравствуйте!

Ну не знаю, конечно, но для начала рекомендовал бы просто BIT400. Мне лично помог выстроить некую картинку, как это все работает. А дальше практика.

По вашей задаче: как у вас ERP данные запрашивать-то будет? Отчет/транзакция в ABAP? Тогда вам надо прокси создавать на стороне ERP, грузить описание принимающего сервиса, ну и мэппинги настроить.
Или больше информации надо: откуда, как, куда.


Не могу найти BIT400. В соседней теме просил скинуть BIT400 и BIT450, но пока нет откликов. Если завалялось где-нибудь в закромах - буду благодарен.

С вопросом запроса данных ERP тоже нужно определиться в рамках этой задачи) Пока копаю в сторону BAPI, но в целом с вариантами знаком слабо. Надо примерно следующее: раз в час запросить данные у стороннего сервиса, получить ответ, отдать некоторой программной единице в ERP, чтобы там могла данные разложить по табличкам и, в идеале, инициировать следующий запрос данных к этому веб-сервису (первым запросом нужно синхронизировать некоторые справочные данные, на основании которых нужно сформировать второй запрос на получение основных данных).

Автор:  Chaser009 [ Ср, фев 24 2016, 10:15 ]
Заголовок сообщения:  Re: PI первый опыт

Ну вот BIT400 нет, т.е. есть, но в бумажном виде (с курсов остался).

Дело в том, что PI в общем случае сам по себе никакие запросы не инициирует. Ему нужно сообщение с исходящего интерфейса.
Есть варианты проверки на наличие файла в file sender или запрос с определенным интервалом у jdbc sender, но вам это не подойдет.

Можно, конечно, что-то выдумать хитрое, но в вашем случае, я думаю, необходимости нет.

Я бы сделал так:

1. Рисуете в ESR исходящий интерфейс с необходимыми типами данных (как я понял, вам синхронный нужен).
2. В ERP генерируете для него прокси и используете этот прокси в ABAP-коде для запроса данных. Сам отчет (или транзакцию, что будете использовать) ставите на периодическое выполнение в планировщик.
3. В ESR в соответствующий SCV импортируете wsdl с описанием вашего веб-сервиса, получите интерфейс получателя с типами данных, сообщениями и операциями. Либо импортируете просто как external definition, тогда у вас будут типы сообщений и данных, а интерфейс надо будет создавать самому с теми же операциями.
4. Настраиваете техническую маршрутизацию и, при необходимости, мэппинги для преобразования данных.

Ну и все, в общем-то. При вызове отчета он запросит через прокси данные, получит ответ, дальше в коде делайте с ним все, что хотите. Если операций несколько - в исходящем интерфейсе создайте соответствующие и вызывайте их из кода по мере надобности. Обработка результатов и ошибок тоже в коде отчета реализуется.

Автор:  ceib [ Ср, фев 24 2016, 10:44 ]
Заголовок сообщения:  Re: PI первый опыт

Chaser009 написал:
Дело в том, что PI в общем случае сам по себе никакие запросы не инициирует.
...
Я бы сделал так:
...


Спасибо за направление мысли в нужную сторону!

Автор:  ceib [ Чт, фев 25 2016, 17:36 ]
Заголовок сообщения:  Re: PI первый опыт

Chaser009 написал:
Ну вот BIT400 нет, т.е. есть, но в бумажном виде (с курсов остался).

1. Рисуете в ESR исходящий интерфейс с необходимыми типами данных (как я понял, вам синхронный нужен).
2. В ERP генерируете для него прокси и используете этот прокси в ABAP-коде для запроса данных. Сам отчет (или транзакцию, что будете использовать) ставите на периодическое выполнение в планировщик.
3. В ESR в соответствующий SCV импортируете wsdl с описанием вашего веб-сервиса, получите интерфейс получателя с типами данных, сообщениями и операциями. Либо импортируете просто как external definition, тогда у вас будут типы сообщений и данных, а интерфейс надо будет создавать самому с теми же операциями.
4. Настраиваете техническую маршрутизацию и, при необходимости, мэппинги для преобразования данных.


Входящий интерфейс создается для внешней non-SAP системы - тут вроде бы все просто, тем более, что есть WSDL, из которого можно просто интерфейс импортировать.

А вот насчет исходящего что то сообразить не могу. Определенно что то не так понимаю.
Согласно всем схемам и описаниям связей - интерфейс создается в привязке к версии программного компонента, который связан с бизнес системой в SLD (скрин из курса BIT400):
Изображение

В данном случае инициатором обмена должна быть ERP, соответственно исходящий интерфейс нужно рисовать в рамках некоего компонента SAP ERP (допустим это система с названием AED мандант 100). Свои компоненты, насколько я понял, создавать в рамках ERP нельзя. Как понять, в рамках какого компонента нужно создавать интерфейс? И как настроить мэпинги между интерфейсами разных компонентов?

Автор:  Chaser009 [ Пт, фев 26 2016, 03:46 ]
Заголовок сообщения:  Re: PI первый опыт  Тема решена

Создавать надо в рамках компонента, представляющего вашу ERP-систему.

ERP-система у вас в SLD уже должна быть зарегистрирована автоматически (при выполненных в ней соответствующих настройках для связи с SLD).

Выберите в SLD соответствующие компоненты и пометьте их как установленные. После этого в ESR у вас появятся соответствующие SCV (ну, точнее, при создании нового SCV вы сможете из SLD его взять). Вам, я думаю, нужен EA-PS.
Внутри выбранного компонента создавайте свой нэймспейс и рисуйте там уже что хотите: интерфейсы, типы данных и т.д..

В ERP, в транзакции SProxy, в репозитарии корпоративных сервисов у вас появится ваш SCV с созданным интерфейсом (опять же, ERP надо настроить для связи с ESR, мануалы есть в сети).
Для выбранного интерфейса генерируете прокси с помощью мастера, он вам создаст соответствующие классы и типы данных. И еще, насколько помню, надо будет порт создать. Это тоже в хелпах есть.

Ну и все, после этого в ABAP-коде создаете переменные с типами, описанными для прокси, заполняете нужными данными исходящее сообщение и вызываете соответствующий метод экземпляра класса прокси для отправки сообщения в PI. Результат ловите в переменную с типом результирующего сообщения.

С мэппингами вопрос слегка непонятен. Как создать? Создаете, допустим, в SCV принимающей системы в нужном неймспейсе Message Mapping. Там на вкладке Signature указываете нужные типы сообщений для источника и получателя, там выбираются SCV и типы для обоих сообщений, т.е., мэппинг вполне себе настраивается для типов сообщений из различных SCV (собственно, это основная задача мэппинга - преобразование данных между интерфейсами). Там же выбираете соответствие: 1:1, 1:N. На основной вкладке рисуете сам мэппинг. На вкладке Test - проверяете.
После этого создаете Operation Mapping, где указываете уже исходящий и входящий интерфейсы с операциями(для этих операций в определении интерфейса должны стоять те типы сообщений, которые использовались в мэппинге). Жмете Read Operations - получите типы сообщений. Для синхронных интерфейсов - request и response. А для них уже в таблице выбираете созданные перед этим Message mapping.

Как-то так.

Автор:  ceib [ Пт, фев 26 2016, 09:37 ]
Заголовок сообщения:  Re: PI первый опыт

Chaser009 написал:
...
Как-то так.

Благодарю!

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/