Как стать автором
Обновить

Автоматизация создания тестовых данных и загрузки исторических данных в SAP на основе SAP GUI Scripting

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров1.3K

Привет, Хабр! Меня зовут Василь Хамидуллин, я работаю в ЦК тестирования АСУ ФХД в компании РСХБ‑Интех. Продолжу тему использования SAP для автоматизации подготовки данных. В прошлом материале говорили про LSMW и как данный инструмент можно использовать для автоматизации подготовки тестовых данных. Сегодня расскажу про способ загрузки исторических данных в SAP на основе SAP GUI Scripting.

SAP GUI Scripting — это интерфейс автоматизации, расширяющий возможности SAP GUI для Windows. Используя этот интерфейс, конечные пользователи могут автоматизировать повторяющиеся задачи, записывая и запуская сценарии, подобно макросам. С помощью данного интерфейса администраторы и разработчики могут создавать инструменты для тестирования серверных приложений или интеграции клиентских.

 Особенности SAP GUI Scripting:

  • данный интерфейс доступен в SAP GUI;

  • он является стандартным решением SAP, поэтому может быть активирован или отключен;

  • для работы с созданными скриптами достаточно наличия VBS.

SAP Scripting может применяться для:

  • создания тестовых данных с помощью скриптов, обработки данных;

  • автоматизации повторяющихся действий в системе: запуск отчетов, извлечение данных, поиск объектов в документах;

  • документирования работы системы.

Начало работы

Перед работой с данным интерфейсом и записью скриптов необходимо убедиться в наличии некоторых настроек в системе, без которых осуществить запись не получится. Проверьте, что в настройках клиента SAP Logon разрешено использование скриптов. Для этого необходимо открыть настройки SAP Logon и открыть вкладку «Опции доступности и скриптинг», а далее «Поддержка скриптов». В данной вкладке необходимо активировать все чекбоксы, кроме системных диалоговых окон Windows.

«Активировать поддержку скриптов» — это поле просто позволяет использовать скрипты в вашем графическом интерфейсе (не имеет отношения к серверу).

«Отправлять уведомление при соединении скрипта с SAP GUI» — всплывающее окно «да/нет» во время того, как скрипт пытается использовать графический интерфейс. Оно помогает убедиться, что мы запускаем именно то, что нужно. Если у вас окно не включено, скрипт будет работать без каких‑либо подтверждений.

«Сообщать, если скрипт открывает соединение» отображает всплывающее подтверждение во время подключения сценария к системе. Обычно я отключаю его, когда запускаю скрипт, который несколько раз подключается к системе.

Далее нам необходимо проверить настройки на стороне сервера.

В тр. RZ11 необходимо указать параметр sapgui/user_scripting. Необходимо убедиться, текущее значение уровня развертки — true.

Запись скрипта

Запишем простой воспроизводимый скрипт. Для этого откроем окно записи скрипта → пункт меню «Настройка локального формата» → «Запись и воспроизведение скрипта». Откроется окно спецификации будущего скрипта. Указываем путь сохранения файла скрипта в формате.VBS, а также кодировку ‑кирилик.

После указания необходимой информации можно запускать запись скрипта – красная кнопка начала записи. После нажатия окно работы со скриптом скроется автоматически. Далее можно выполнять обычные шаги в системе, которые необходимо записать. Мы создадим единицу оборудования, чтобы сравнить методы создания единицы оборудования (далее ЕО) с помощью такого инструмента как LSMW, рассмотренного в прошлой статье.

Для создания ЕО открываем транзакцию в режиме завершения текущей транзакции со слэшем. В нашем случае /nie01.

Это делается для того, чтобы избежать дальнейших ошибок, поскольку данная комбинация позволяет запускать любые транзакции не из основного меню SAP GUI.  Указываем дату с которого ЕО действительна и тип ЕО. Далее описание и завод изготовитель. На вкладке «организация» заполняем завод и группу плановиков. Это минимальный набор полей для создания ЕО. Сохраняем, выходим.

После сохранения изменений необходимо остановить запись скрипта — желтая кнопка «Остановить запись скрипта». После этого записанный скрипт в формате VBS появится в указанной нами папке.

Именно в ней находим сохраненный скрипт и просматриваем его через блокнот или NotePad++. Открыв скрипт, мы увидим, что записалось в файл и какие действия мы выполняли.

Разберем структуру файла. Первая часть файла — это стандартный набор строк, которые формируются при записи любого скрипта. Данную часть кода можно игнорировать. Там формируется соединение с активной сессией. Место в коде, которое может быть нам интересно, начинается со строк session.findById. Это означает, что скрипт находит в конкретной сессии по ID определенное поле, кнопку, или другой иной объект на экране, который мы задействовали при его записи.

Если посмотреть на часть кода, которая нас интересует, можно понять, что я выполнял скрипт, не зная языка программирования VBS. Я закомментировал основные шаги нашего записанного скрипта. Разным кнопкам на клавиатуре соответствуют разные кодировки в готовом скрипте. Например:

  • sendVKey 0-enter

  • sendVKey 2-F2

  • sendVKey 3-F3

  • sendVKey 5-F5

  • sendVKey 8-F8

  • tbar[0]/btn[11]-Кнопка сохранения

  • tbar[0]/btn[3]-Кнопка назад

Для большего понимания, что такое тулбар, я наглядно подписал все видимые области рабочего экрана SAP GUI.

Запуск скрипта

Теперь попробуем запустить наш скрипт, предварительно изменив в нем некоторые данные, чтобы убедиться, что он записался без ошибок, а также чтобы проверить его работу. Для этого открываем файл с записанным скриптом и изменяем завод-изготовитель на «Проверка скрипта», после чего сохраняем изменения в файле. Желательно делать это открыв файл через блокнот или Notepad++. Меняем значение в коде скрипта ооо «Рассвет» на Проверка скрипта. Сохраняем и запускаем скрипт. Запустить его можно и двойным кликом по файлу, сохраненному в формате VBS.

При запуске скрипта из файла мы получим сообщение, что скрипт пытается получить доступ к SAP GUI. Это произошло, потому что я не убрал галку в настройках скрипта. Данные окна можно исключить из работы скрипта. Если при его записи мы не вышли в основное меню и не закрыли транзакцию с которой работали, то воспроизведение скрипта закончится в этом же месте. В нашем случае мы видим, что создалась ЕО с заводом изготовителем «Проверка скрипта». Скрипт записан и воспроизводится без ошибок.

Модифицируем код скрипта

Что делать, если необходимо создать не одну ЕО, а несколько? Запись скрипта и его воспроизведение занимает больше времени, чем ручное создание ЕО в единичном экземпляре. Вся прелесть данного инструмента заключается в том, что с его помощью можно автоматизировать создание большого количества ЕО. Чаще всего бизнес работает с Excel, ведет там списки и прочие данные. С помощью SAP Script мы можем создать ЕО в системе по заданным параметрам в Excel файле. Для этого необходимо добавить в код записанного ранее скрипта небольшие изменения. А именно, добавить два блока, которые свяжут активную сессию в SAP GUI с Excel файлом. В нашем случае необходимо добавить первый блок кода (назовем его блок А) сразу после строки активации окна SAP GUI maximaze. А второй блок кода (назовем его блок Б) в самом конце файла. Строки, которые идут до строки maximaze стандартные, и мы их игнорируем при работе с кодом, они записываются всякий раз при записи скрипта. Их мы не трогаем, но и не удаляем, они нужны.

Блок А и блок Б продемонстрированы ниже. Данные блоки являются универсальными. Их можно использовать при модификации любого скрипта, где записаны действия по созданию или изменению данных. Важное условие работы этих простых блоков кода – при воспроизведении скрипта на компьютере должен быть открыт только один файл Excel с набором необходимых данных.

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

Блок Б содержит технические данные. В нем проверяется выполнение скрипта и генерируется вывод при успешной записи.

Формирование файла-шаблона в Excel

Подготовим Excel с данными. Он будет похож на шаблон, который мы формировали для LSMW. Только в данном случае нет нужды указывать технические наименования полей. Укажем обычные наименования полей в файле, что сделает работу с ним проще для любого пользователя. Как упоминалось ранее у нас будет шесть полей, заполнив которые мы сможем создать ЕО. Я указал данные для создания восьми ЕО, и для каждой из них заполнил необходимые для создания поля. Каждый столбец будет являться элементом массива из блока А. Для наглядности присвоил каждому столбцу переменную из массива, с которой будем парсить значение из Excel.

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

Запуск скрипта

Все готово к запуску модифицированного скрипта. Запускаем его и проверяем, что в системе создано восемь ЕО с заданными параметрами. Для проверки ЕО зайдем в таблицу EQUI и отфильтруем список ЕО по создателю, а затем по дате создания. Видим в системе созданные ЕО.

Выборочно проверим ЕО типа О, что были созданы. Видим, что все данные подтянулись согласно данным в Excel.

Данный инструмент применим не только к внесению данных в систему, а также и для их извлечения. Однако тут есть свои сложности. Например, при экспорте сформированного Excel файла из системы появляется диалоговое окно Windows, с которым SAP Script работать не умеет. Для извлечения данных из системы с помощью скрипта у меня пока не хватает компетенций, поскольку для этого надо использовать более хитрые алгоритмы.

Для быстрой работы с готовыми скриптами можно добавить их в «Избранное» в меню пользователя SAP.

Создание макроса

Для удобства работы из Excel можно создать макрос и запускать выполнение скрипта из Excel. Скрипт создаст новые ЕО в системе, а параллельно можно будет продолжать работать в Excel файле. Для этого необходимо скопировать весь модифицированный скрипт. Затем в Excel в меню разработчика нажать кнопку макрос. Указать его наименование, а затем нажать кнопку создать. В открывшемся редакторе VBS появится окно с двумя строчками. Скопированный ранее код скрипта вставить между ними. Затем удалить все строки, содержащие IF……Then, End…..IF. Останется всего четыре строки. Осталось в самое начало поместить системные объявления, чтобы активировать макрос. После этого можно выйти из редактора, создать кнопку, и привязать к ней созданный макрос. Теперь нажимая на эту кнопку прямо из Excel можно создать в SAP единицы оборудования.

Для определения применимости данной технологии мы проведем анализ технологии методом SWOT-анализа — это метод планирования, который помогает определить варианты использования технологии с учётом ее сильных и слабых сторон, а также возможностей и внешних отрицательных факторов.

S (strengths) — сильные стороны, которые отличают технологию от остальных.

W (weaknesses) — недостатки, или слабые стороны технологии.

O (opportunities) — внешние факторы и события, которые создают возможности для использования технологии.

T (threats) — внешние угрозы при использовании технологии, которые не зависят от действий того, кто ее применяет.

Плюсы:

  • универсальность и гибкость - любые действия записываются в явном виде, легко поддаются чтению, замене порядка, изменению логики;

  • Интеграция - по сути любая среда программирования способна взаимодействовать с интерфейсом GUI Script в обе стороны;

  • Наглядность - все действия выполняются онлайн и видны визуально. Работа в синхронном режиме (по порядку) в случае ошибки, не выбивает весь процесс, а позволяет скорректировать и продолжить его.

Минусы:

  • Онлайн запуск пользователем вручную - скрипты запускаются в явном виде, вручную. Это не фоновая обработка, запуск занимает каждый экран, используемый в скрипте. Также все зависит от факта соединения: скрипт выполняется на локальной машине пользователя и в случае обрыва связи последствия аналогичны по масштабу с прерыванием связи с сервером;

  • Есть некоторые объекты, недоступные для обработки, например, текстовый редактор, вызываемый как внешняя программа, или диалоговые окна windows.

Сравнение с LSMW:

  • Оба инструмента работают с полями экрана;

  • LSMW выполняется в фоне, на сервере. Script работает локально и зависит от связи с сервером;

  • LSMW требует сложных манипуляций при изменении алгоритма, скрипт легко изменяем;

  • Скрипт позволяет возвращать данные и реализовывать логики на основе условий и проверок;

  • Онлайн выполнение скрипта помимо прочего приводит к тому, что ошибка взаимодействия с окном пользователя, оставляет окно в текущем состоянии выполнения, что позволяет исправить то, что вызвало ошибку и продолжить работу скрипта с того места, где он прервался;

  • Скрипт не зависим от транзакций, программ. Он может работать с несколькими транзакциями, в нескольких окнах, что позволяет, например, вести взаимосвязанные объекты или выполнять связанные обработки в рамках одного бизнес процесса.

Учитывая все приведенные факты, я склоняюсь к мнению, что перспектива использования данной технологии для создания тестовых данных в системе и загрузки исторических данных превосходит инструмент LSMW по всем показателям.

Если есть вопросы/предложения, пишите в комментариях — обсудим. Спасибо за внимание! 

Теги:
Хабы:
Всего голосов 16: ↑16 и ↓0+16
Комментарии6

Публикации

Информация

Сайт
www.rshb.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Юлия Князева