Комментарии по теме

«Авто­ма­ти­за­ция те­сти­ро­ва­ния BEx-о­тче­тов»
бабкен минасян:
Очередная реализация sendkey. Пробовал подобное для другой задачи автоматизации - эмуляция действий пользователя по массовому переводу пользователей в домен. Жуткая штука! При работе скрипта...
«Авто­ма­ти­за­ция те­сти­ро­ва­ния BEx-о­тче­тов»
Сергей Трофимик:
Столкнулся с трудностью, возможно, подскажете как ее обойти. Ввод пароля не проходит. Даже смещение по полям в данном окне не возможно.   WinWaitActive("Вкл. SAP-Logon BRD") Send("пароль")
«Обзор во­змо­жно­стей SAP BO Design studio(ZEN)»
Евгений Селезнёв:
Андрей, спасибо за статью. А не подскажете случаем, на каких правах можно использовать SBOP DESIGN STUDIO? В "SBOP BI PLATFORM 4.1" -> "SBOP BI PLATFORM CLIENTS 4.1" "SBOP DESIGN STUDIO" не...

BEx Analyzer: синхронизация изменений в модулях VBA-проекта

5517

Вводная часть

В ходе проекта по созданию системы отчетности на основе системы SAP BI, наибольшую часть работ составляет процесс создания отчетных форм. Отчетные (или плановые) формы – это основной инструмент пользователей.
К форме отчета предъявляются строгие требования. Отчёт должен:

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

Требования к дополнительным качествам формулируются в соответствии с бизнес правилами, а также в соответствии со спецификой работы конкретных пользователей.

В руках консультанта, работающего с SAP BI, есть два инструмента для разработки сложных отчетов:

  • Web Application Designer (BSP-приложения)
  • BEx Analyzer (рабочие книги Excel).

Какой из инструментов будет выбран, как правило, решается на ранних стадиях работ по созданию системы отчетности.
В этой статье я рассмотрю вопросы, возникающие перед консультантом при выборе им BEx Analyzer.

Проблема

При реализации требований бизнеса и конкретных пользователей может оказаться, что стандартных возможности BEx Analyzer (инструментария, выбранного для разработки отчетов) не достаточно. В таких случаях приходиться использовать встроенное средство Excel по автоматизации – язык VBA. Помимо широких возможностей по манипулированию и форматированию данных из запросов рабочей книги, благодаря поставляемой с SAP GUI надстройке “BExAnalyzer.xla”, язык позволяет автоматизировать часть работы пользователя и реализовывать дополнительные требования бизнеса.

Важная особенность, которую следует учитывать при разработке на языке VBA: исходный код модулей VBA-проекта храниться непосредственно в рабочей книге Excel. Это означает, что при необходимости повторить аналогичный функционал код модуля необходимо скопировать в новую отчетную форму. Это не представляет проблемы на этапе внедрения при небольшом числе отчетных форм. Но в случае большого числа разрабатываемых форм (более 50), или после перехода к продуктивной эксплуатации, когда потребуется сопровождение и дальнейшее развитие Решения (по моему мнению, проекты по аналитике останавливаются только тогда, когда остановился бизнес), возникает серьезная проблема в синхронизации изменений модуля VBA-проекта на все отчетные формы.

 Решение проблемы

Решением проблемы может быть размещение модулей в репозиторий MIME. При этом обеспечивается хранение предыдущих версий, что позволить при необходимости «откатить» изменения. Предлагаю рассмотреть реализацию конкретного механизма импорта модулей в VBA-проект из репозитория MIME. Достоинством предлагаемого механизма являются нулевые затраты на синхронизацию модулей между рабочими книгами.

Этапа решения проблемы:

  • Создание дистанционного функционального модуля для получения файла из репозитория.
  • Разработка модуля и вспомогательных классов для вызова ФМ.
  • Импорт полученного из репозитория файла в VBA-проект.

Техническая реализация

Основной функционал ФМ (см. листинг ФМ ZBI_GET_MIME_OBJ_BY_URL) реализуется при вызове метода GET класса CL_MIME_REPOSITORY_API. Дальнейшая обработка полученных данных требуется для передачи данных по протоколу RFC. При разработке дистанционного функционального модуля нужно учитывать, что передача данных по RFC накладывает ряд ограничений на тип передаваемых данных:

  • не допускаются применять родовые типы переменной длины (STRING, XSTRING, SEQUENCE, XSEQUENCE)
  • не допускается передача значений по ссылке
  • требуется установка вида выполнения в значение «Дистанционный модуль» (рис. 1)
  • возврат таблицы значений возможен только через Tables (Exporting  с типом таблицы не поддерживается)

Рис. 1. Виды выполнения функциональных модулей

После каждого обновления набора данных, управляющая процессом надстройка “BExAnalyzer.xla” имеет возможность вызвать пользовательскую процедуру для обработки полученного набора данных (своеобразный user exit). Для этого необходимо включить соответствующую опцию в настройках рабочей книги и указать имя вызываемой процедуры (рис. 2). При определении процедуры следует указывать обязательный аргумент «varname».

Рис. 2. Включение выполнения макросов в настройках книги

Импорт файла модуля из репозитория в VBA-проект выполняется всего одной строчкой кода: вызов процедуры  putModuleFromRepositoryToProject, после выполнения которой возможно обращаться к  функциям и процедурам добавленного модуля. Элементы переменной Module заполняются значениями URL выгружаемого из репозитория MIME файла, именем модуля в VBA-проекте, и именем файла для временного хранения в локальном каталоге.

Ограниченный доступ

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

Ключевые слова: SAP BusinessObjects Explorer / BEx
Функциональная область: Бизнес аналитика / BI
Ролевое назначение: SAP Консультант / Consultant

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»