Об одной технологии работы с длинными текстами в SAP BW, BI-IP
В сообщении описывается технология хранения в SAP BW текстов неограниченной длины, их ввода через формы SAP BI-IP и отображения в отчетах SAP BEx. Данная технология успешно апробирована для средств SAP BW/BEx/BI-IP/SBOP Dashboards.
В сообщении описывается технология хранения в SAP BW текстов неограниченной длины, их ввода через формы SAP BI-IP и отображения в отчетах SAP BEx. Данная технология успешно апробирована для средств SAP BW/BEx/BI-IP/SBOP Dashboards.
1. Предпосылки
Пользователи форм SAP BI-IP нередко задают вопрос о возможности ввода (с последующим отображением) текстовых комментариев к введенным числовым значениям. В стандартном инструментарии SAP BI (BW/BI-IP/BEx) отсутствуют средства для хранения и отображения текстов длиннее 60-ти символов, а для ввода текстов средств вовсе нет. Предлагаемая технология обходит описанные ограничения.
2. Решение
Решение в основе опирается на документы (27) и (28).
Решение включает следующие элементы:
- Data Store Object (DSO) прямой записи для хранения текстов в привязке к ключам;
- Форма Excel или BI-IP с VBA-расширением, позволяющая вводить и сохранять длинные тексты;
- Функциональный модуль, вызываемый из VBA-расширения для записи длинного текста в DSO;
- Запрос BEx, извлекающий текст по ключам из DSO, и VBA-расширение, соединяющее фрагменты текста в одно целое.
Порядок действий, лежащий в основе решения, следующий:
- Трансформировать длинный текст в упорядоченный, потенциально неограниченный, список строк длины до 60 символов каждая;
- Привязать список к составному ключу;
- Записать список в DSO;
- При считывании данных соединить элементы списка в целый текст.
Ниже подробно рассматриваются элементы и процесс решения.
Data Store Object для записи длинного текста
Data Store Object (Рисунок 1) для записи длинного текста должен иметь:
- Тип «прямая запись» п.1.;
- Ключевое текстовое поле (в рассматриваемом примере – ZKEY) для хранения составного ключа в RAW-формате, п.2.;
- Ключевое числовое поле (в рассматриваемом примере – ZKEY2) с номером подстроки исходного текста, п.3.;
- Обычные ключевые поля (в рассматриваемом примере – 0CALDAY, ZBUKRS) для соединения с другими провайдерами и для отображения данных в запросах, п.4.;
- Поле данных (в рассматриваемом примере – ZTXT0) для хранения подстроки исходного текста, п.5. ;
- Обычные поля данных, п.6. .
Рисунок 1 Структура Data Store Object для записи длинного текста
Форма Excel или BI-IP
Это может быть произвольный документ Excel, как например (Рисунок 2) , или форма планирования BI-IP, как например (Рисунок 3).
Рисунок 2 Пример произвольной Excel-формы ввода
Рисунок 3 Форма BI-IP с функцией загрузки текстовых комментариев к отдельным позициям
VBA-расширение
VBA-расширение (Рисунок 4) вызывает функциональный модуль, управляющий записью в DSO, при этом:
- Перед записью текста полезно выполнить функцию Application.WorksheetFunction.Clean(s) - для удаления «специальных» символов (с кодами от 0 до 31), не вполне допустимых в SAP BW;
- Как результат, в DSO (Рисунок 5) появляется ряд записей, отвечающих отдельным строкам длинного текста, суммарная длина текста при этом теоретически не ограничена;
- Технология допускает запись не только текстов, но и обычных показателей.
Рисунок 4 Пример VBA-кода для записи в DSO
Рисунок 5 Результат записи в DSO
Функциональный модуль
Взаимодействие с DSO обеспечивает специальный функциональный модуль (ФМ), при этом:
- Автоматизируется манипуляция (запись/удаление) данными DSO по протоколу RFC;
- Обеспечивается возможность записи в DSO текстов длиной более 60 символов и любой дополнительной информации;
- Исходный текст преобразуется в упорядоченную последовательность
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти
Обсуждения 5
Комментарий от
Илья Муковоз
| 08 апреля 2015, 18:36
Комментарий от
Виктор Долгов
| 22 апреля 2015, 01:59
Приведенное решение считаю сложным, т.к. в свое время делал проще.
В "куб верхнего уровня"(на котором строил отчет) добавлял N-ое количество аналитик с текстами по 60 символов, а на VBA производил "сборку" и "разборку" текстов.
Как минимум, отпадает необходимость в вызове ФМ из VBA.
С моей т.з. вызывать ФМ в цикле VBA не самое лучшее решение.
Насколько я помню, подобные рабочие книги и без этого отрабатывали не слишком быстро.
Комментарий от
Валерий Булевич
| 22 апреля 2015, 12:28
Илья Муковоз 08 апреля 2015, 18:36
Более красивое решение: SAP BW - BusinessDocumentService (BDS).
Комментарий от
Алексей Рыбин
| 23 апреля 2015, 12:41
Виктор Долгов 22 апреля 2015, 01:59
В текущей версии SAP BW 7.4 это уже не актуально.
Приведенное решение считаю сложным, т.к. в свое время делал проще.
В "куб верхнего уровня"(на котором строил отчет) добавлял N-ое количество аналитик с текстами по 60 символов, а на VBA производил "сборку" и "разборку" текстов.
Как минимум, отпадает необходимость в вызове ФМ из VBA.
С моей т.з. вызывать ФМ в цикле VBA не самое лучшее решение.
Насколько я помню, подобные рабочие книги и без этого отрабатывали не слишком быстро.
1)Вводить и редактировать тексты в BI-IP
2)Оперировать текстами неограниченной длины
В BW7.4 длина текста ограничена 1333-тью знаками (картинка ниже). Количество аналитик в DSO также ограничено.
Комментарий от
Александр Злобин
| 14 мая 2015, 11:58
Такой подход не применим для Analysis for Office - оттуда не вызвать RFC