Извлечение данных из графического пользовательского интерфейса SAP с помощью Power Automate
Когда вы создаете или обновляете записи в SAP, система генерирует информацию о статусе, которая включает вновь сгенерированные идентификаторы записей. SAP отображает эту информацию о статусе в нижней части пользовательского интерфейса SAP.
Вот пример сообщения о статусе, которое SAP отображает после создания уведомления SAP PM.
Эта информация о состоянии может быть полезна для последующих этапов процесса автоматизации. Поэтому вы должны извлечь и присвоить эти данные статуса переменным для последующей обработки данных.
У нас есть несколько способов добиться этого, в зависимости от вашего подхода к разработке. Два подхода: низкий уровень кода и профессиональный код.
Подход с профессиональным кодом
Подход с профессиональным кодом использует команды VBScript для извлечения информации из элементов пользовательского интерфейса SAP.
Для извлечения данных статуса SAP, таких как вновь созданные заявки на закупку или номера уведомлений о техническом обслуживании завода, вам необходим доступ к элементу пользовательского интерфейса строки состояния.
Вот как вы получаете доступ к элементу пользовательского интерфейса строки состояния.
session.findById("wnd\[0\]/sbar/pane\[0\]").Text
Давайте пройдемся по сквозному взаимодействию. Мы запишем, как создать уведомление SAP PM, и изменить сгенерированный код, чтобы вернуть вновь созданный идентификатор в Power Automate Desktop.
Если вы никогда не слышали об уведомлении SAP PM или у вас нет доступа к нему, не волнуйтесь, вы все равно сможете понять шаги, необходимые для извлечения таких данных для вашего собственного сценария.
Вот что нужно сделать:
Подтвердите, что все Конфигурации сценариев SAP GUI выполнены.
Откройте Вход в SAP и выберите систему SAP, в которую вы хотите войти.
Выберите Настроить локальный макет (Alt+F12), а затем выберите Запись и воспроизведение сценария....
Выберите Еще.
В Сохранить в укажите путь к файлу и имя файла, в котором вы хотите хранить записанные взаимодействия пользователя.
Выберите кнопку Сценарий записи, чтобы начать процесс захвата экрана. Каждое взаимодействие, которое вы сейчас выполняете в SAP, фиксируется в виде повторяемых команд VBScript.
Заметка
Если вы записывали шаги и сохраняли в этот файл раньше, вам нужно будет подтвердить, хотите ли вы перезаписать файл.
Введите код транзакции IW21, а затем выберите Ввод.
Укажите Тип уведомления, а затем выберите Ввод.
Введите Краткий текст, Группа планирования, Главный WorkCtr и любое другое поле, которое вам нужно.
На панели инструментов выберите Сохранить (Ctrl+S).
Вернитесь в исходную формуСоздать уведомление PM, вы заметите новое сообщение о состоянии в строке состояния в нижнем левом углу пользовательского интерфейса.
Выберите Выход (Shift+F3) на панели инструментов, а затем остановить запись.
При желании выйдите из SAP и закройте все окна SAP.
Рассмотрим сгенерированный код VBScript:
Снимок экрана VBScript, созданный при создании уведомления If Not IsObject application Then Set SapGuiAuto GetObject quot SAPGUI quot Set application SapGuiAuto GetScriptingEngine End If If Not IsObject connection Then Set connection application Children 0 End If If Not IsObject session Then Set session connection Children 0 End If If IsObject WScript Then WScript ConnectObject session quot on quot WScript ConnectObject application quot on quot End If session findById quot wnd 0 quot maximize session findById quot wnd 0 tbar 0 okcd quot text quot IW21 quot session findById quot wnd 0 quot sendVKey 0 session findById quot wnd 0 usr ctxtRIWO00 QMART quot text quot M2 quot session findById quot wnd 0 usr ctxtRIWO00 QMART quot caretPosition 2 session findById quot wnd 0 quot sendVKey 0 session findById quot wnd 0 usr subSCREE shortened command quot text quot My Notification Short Text quot session findById quot wnd 0 usr tabsTAB_ shortened command quot text quot 010 quot session findById quot wnd 0 usr tabsTAB_ shortened command quot text quot 0001 quot session findById quot wnd 0 usr tabsTAB_ shortened command quot text quot MAIN quot session findById quot wnd 0 usr tabsTAB_ shortened command quot setFocus session findById quot wnd 0 usr tabsTAB_ shortened command quot caretPosition 4 session findById quot wnd 0 tbar 0 btn 11 quot press session findById quot wnd 0 tbar 0 btn 15 quot press.
Теперь давайте настроим сгенерированный код, включив в него шаг, который извлекает, обрезает, а затем возвращает новый идентификатор уведомления в действие Выполнить VBScript.
Снимок экрана настроенного VBScript, который возвращает уведомление SAP в Power Automate Desktop через переменную 39 This is the Save button session findById quot wnd 0 tbar 0 btn 11 quot press 39 This is the full Status Bar text that contain the data to be extracted statusBarMessage session findById quot wnd 0 sbar pane 0 quot text 39 Trimming and removing any text surrounding our new notification Id notificationID Trim Replace Replace statusBarMessage quot Notification quot quot quot quot saved quot quot quot 39 This is the Exit button session findById quot wnd 0 tbar 0 btn 15 quot press 39 This writes the newly created Id to the Run VBScript output variable in Power Automate Desktop WScript Echo notificationID.
Это задает переменную VBScriptOutput действия Выполнить VBScript для вновь созданного идентификатора уведомления.
Если вы хотите увидеть содержимое VBScriptOutput, вы можете использовать действие отображения сообщения, подобное выходным данным на следующих изображениях.
Подход с низким уровнем кода
Подход с низким уровнем кода использует действия и настраиваемые селекторы для извлечения вновь сгенерированных идентификаторов записей или других сообщений о состоянии, которые важны для последующей обработки потока.
Следующие шаги не будут подробно описывать, как записывать или использовать ручное планирование действий для создания новой записи уведомления SAP PM. Ознакомитесь Низкий уровень кода или RPA без кода с SAP GUI в Power Automate Desktop, если вам нужно напомнить, как это сделать.
Выполните следующие шаги для подхода c низким уровнем кода:
Используйте средство записи для компьютера или ручное действие, чтобы захватить все элементы управления, необходимые для процесса уведомления SAP PM.
Создайте запись уведомления и захватите текст состояния, который появляется после того, как вы выберете Сохранить на панели инструментов экрана Создать уведомление PM.
После сохранения элемента вы будете перенаправлены на предыдущий экран, где вы должны увидеть новый номер уведомления в тексте строки состояния.
Теперь вернитесь к Power Automate Desktop, найдите действие с именем Получить сведения элемента пользовательского интерфейса в окне и добавьте его на холст разработки.
Выберите раскрывающееся меню элемента пользовательского интерфейса, а затем выберите кнопку Добавить новый элемент пользовательского интерфейса.
Выберите окно SAP Простой доступ и наведите указатель мыши на строку состояния, пока не появится красная граница с надписью Gui Statusbar. Пока граница активна, удерживайте Ctrl и щелкните, чтобы выбрать строку состояния.
Нажмите кнопку Сохранить.
Найдите действие Заменить текст на панели Действия и перетащите его на холст разработки.
В Текст для поиска введите Уведомление. В Заменить на введите пустую строку со следующими символами: %''%
Добавьте другое еще действие Заменить текст и переименуйте Создаваемые переменные на %NotificationId%. В Текст для поиска введите сохранить и в Заменить на введите пустую строку (%''%).
Найдите действие Обрезать текст на панели Действий, перетащите ее на холст разработки, выберите %NotificationId% в качестве значения Текст для обрезки и переименуйте Создаваемые переменные на %TrimmedNotificationID%.
Найдите действие Показать сообщение на панели Действия и перетащите его на холст разработки. Задайте Заголовок окна сообщения и Сообщение для отображения в соответствии с вашими потребностями.
Запустите автоматизацию, которая создает новое уведомление SAP PM и извлекает его вновь созданный идентификатор уведомления, который может отображаться, как показано на следующем изображении.