Предыдущие части:
Часть 1. SAP PI – Создаем асинхронный интерфейс.
Часть 2: Подготовка к разработке в ESR. Активация объектов.
Часть 3: Разработка интерфейсов в ESR.
Часть 4: чудеса преобразования или Mapping.
Часть 5: настройка интерфейса в Integration Directory.
Сегодня мы займемся тестированием и мониторингом нашего асинхронного интерфейса.
Создание тестовых примеров в SAP PI.
Напомню еще раз схему нашего интерфейса:
Для того, чтобы протестировать наше “создание”, нужно положить тестовый файл new_customer.xml в каталог C:\Temp\CustomerDB\IN
Обычно, тестовый файл предоставляется специалистами по исходной системе. Но сегодня – мы “специалисты” по всем системам, поэтому приготовим такой файл сами.
В SAP PI есть отличный инструмент для этого – редактор Operation Mapping. Зайдем в Enterprise Service Builder, откроем Operation Mapping OM_NewCustomer_to_BAPI_CUSTOMER_CREATEFROMDATA1 и выберем вкладку Test. Заполним тестовыми данными все поля исходной структуры, убедимся, что тестовые данные подходят – запустим тест.
Так как мы, для простоты примера, не предусмотрели никакой “защиты от дурака” – такой тест будет не лишним. Всегда ведь можно придумать такой набор входных данных, при которых мэппинг (не сам интерфейс, но его центральная часть) не будет работать.
Если мы создали “рабочий” набор тестовых данных – то тестирование Operation Mapping пройдет успешно.
Теперь находим в левом верхнем углу над исходной структурой кнопку “Source Text View”, нажимаем ее.
Теперь в левой части редактора мы видим готовый XML для тестирования нашего интерфейса.
Осталось скопировать этот текст в Notepad и сохранить в виде xml-файла new_customer.xml.
Можно также использовать кнопку “Save document source” (самая крайняя справа в меню над тестовым примером), указать директорию и сохранить туда тестовый пример – будет сохранен zip-архив, так что придется еще разархивировать его и переименовать файл, лежащий в архиве, в new_customer.xml.
Так или иначе, но мы получили искомый тестовый xml.
Тестирование.
Теперь осталось только одно действие: скопировать получившийся файл и вставить его в директорию C:\Temp\CustomerDB\IN
Ждем минуту – файл должен “исчезнуть” из исходной директории и появится в архивной, при этом к его имени добавится временная метка обработки.
Проверяем другую сторону интерфейса – SAP ERP.
Тут надо сделать лирическое отступление.
Дело в том, что используемую в примере BAPI я выбрал очень неудачно. Тестирование, а затем поиск информации и нот показал, что BAPI_CUSTOMER_CREATEFROMDATA1 используется для узкого круга задач, а именно – для создания клиента на основе уже существующего при условии, что диапазон номеров у account group этого клиента обозначен, как внутренний. 🙂
Если у вас установлен SAP ERP IDES – то можете использовать значения, которые я дам ниже. Если нет – то можно остановится на этапе выполнения BAPI с ошибкой (это означает, что технически вызов прошел и интерфейс работает); либо призвать на помощь коллег, чтобы заставить непокорный функциональный модуль все-таки создать для вас требуемого клиента.
С другой стороны – это хороший пример того, как отлаживается интерфейс.
Итак, первым делом попробуем войти в SAP ERP и найти в транзакции XD03 нашего клиента по одному из признаков (имя-фамилия, страна, и т.п.).
Уверен – его там нет.
Начинаем отладку интерфейса или, как называют этот увлекательный процесс зарубежные коллеги, troubleshooting.
Поиск проблем и ошибок – мониторинг и troubleshooting.
Все основные инструменты в PI 7.4 собраны в одном месте – “Configuration and Monitoring Home”.
В предыдущих версиях большинство инструментов сосредоточено в Runtime Workbench.
Для начала проверим каналы связи. Для этого зайдем в Monitoring – Adapter Engine.
А затем – в Communication Channel Monitoring.
Находим канал связи CC_FILE_SENDER и видим, что сообщение было успешно обработано файловым адаптером.
Теперь выбираем канал связи с ERP – СС_RFC_Reciver.
Если все параметры соединения были заданы правильно – канал должен иметь статус “Running”.
Затем смотрим ниже – в монитор обработки сообщений данным каналом. Оттуда, по нажатию на номер сообщения попадаем в монитор обработки конкретного сообщения.
Находим первую ошибку – BAPI требует заполнения поля “Валюта” (CURRENCY).
Технически – интерфейс уже отработал, а возвращаемая ошибка относится к ошибке целевого приложения. В реальном проекте на данном этапе потребуется бизнес-специалист по целевой системе, который проанализирует ошибки и расскажет, что необходимо изменить/дополнить в данных, чтобы целевое приложение успешно отработало.
Поскольку по условиям задачи валюта в исходном файле не задана – нам придется внести валюту в мэппинге. Добавляем константу “USD” в целевую структуру.
Запускаем интерфейс еще раз, копируя исходный файл в директорию /IN. Смотрим монитор канала CC_RFC_RECEIVER.
После небольших поисков выясняем, что страна в SAP ERP задается двумя заглавными буквами – значит, нужно “отрезать” от исходной строки два символа и перевести их в заглавные.
Для любопытных – страны, заданные в ERP, хранятся в таблице T005.
Запустим интерфейс еще раз. Кстати, можно не перезапускать интерфейс целиком – ошибочные асинхронные сообщения можно попытаться доставить еще раз. Для этого в мониторе сообщения есть специальная кнопка “Resend“.
При этом обработка запускается с того этапа, на котором возникла ошибка, в нашем случае PI заново попытается отправить сообщение через RFC-адаптер.
Дальше отладка приведет вас к заполнению целевой подструктуры PI_COPYREFERENCE. Как я уже говорил, данная BAPI требует указания уже существующего клиента – она копирует из его записи недостающие данные для нового. Про конкретные значения – лучше уточнить у специалистов по функционалу в SAP ERP, либо подобрать опытным путем.
Открываем message mapping MM_Customer_to_BAPI_CUSTOMER_CREATEFROMDATA1, заполняем PI_COPYREFERENCE:
Поле структуры | Значение |
---|---|
SALESORG | 1000 |
DISTR_CHAN | 12 |
DIVISION | 00 |
REF_CUSTMR | 0000100027 |
Сохраняем и активируем мэппинг, перезапускаем интерфейс.
На этот раз обработка сообщения проходит успешно.
Запускаем транзакцию XD03 в SAP ERP и находим нашего нового клиента, переданного из внешней системы.
На этом мы закончили работу над асинхронным интерфейсом, коснулись также темы мониторинга и поиска ошибок.
Надеюсь, что вы успешно проделали всю работу на своих “песочницах” и все получилось.
На самом деле, то что мы сделали – это лишь вершина айсберга. SAP PI имеет богатый и постоянно развивающийся набор возможностей и инструментов, изучать которые можно практически бесконечно. 🙂
Поправки, вопросы, предложения – пишите в комментариях или на почту admin@pitroff.ru
Удачи и профессиональных успехов!
Ваш Pitroff.