Меню

Рекомендация. Три способа выявления и устранения проблем с пользовательским кодом на ABAP при миграции SAP BW в SAP HANA

Технологии работы в оперативной памяти SAP HANA повышает производительность стандартных процессов SAP Business Warehouse (SAP BW). Однако при работе с пользовательскими разработками на ABAP может потребоваться некоторая доработка для оптимизации производительности и корректного применения SAP HANA. Это особенно справедливо для пользовательских ABAP-программ, которые были изначально разработаны для выполнения в более старых версиях SAP BW на основе реляционной базы данных. Автор описывает три способа выполнения анализа пользовательского кода на ABAP при миграции приложения SAP BW в базу данных SAP HANA и показывает, как можно быстро выявить и устранить потенциальные проблемы.

Ключевое понятие

Инструменты SAP Code Inspector и SAP Business Warehouse (SAP BW) ABAP Routine Analyzer используются группой разработки для заблаговременного выявления и устранения возможных проблем в пользовательском коде ABAP во время обновления или миграции SAP BW на SAP HANA. Эти инструменты поставляются SAP и позволяют выполнять проверки на уровне синтаксиса и оценивать возможности адаптации пользовательского кода к новой платформе SAP HANA, в том числе проводить оценку для Юникода. Журналы этих инструментов содержат подробные пояснения к выявленным проблем, связанным с пользовательским кодом ABAP, степень серьезности, а также рекомендации по их устранению.

Прочитав эту статью, вы научитесь:

  • определять возможности расширения пользовательского кода ABAP для SAP HANA;
  • использовать инструмент Code Inspector для выявления возможных проблем ABAP в рамках проекта миграции SAP BW на SAP HANA;
  • устранять последствия изменений стандартной структуры RRRANGESID.

Важнейшим шагом во время миграции системы SAP Business Warehouse (SAP BW) в базу данных SAP HANA является анализ существующего кода на ABAP. В результате такого анализа можно заранее выявить потенциальные проблемы и устранить их, адаптировав подпрограммы преобразования данных и пользовательский код для оптимального использования технологии работы SAP HANA в оперативной памяти.

Помимо производительности важной причиной для проведения анализа кода на ABAP во время миграции на SAP HANA является риск сбоя пользовательской разработки с появлением ошибок синтаксиса после обновления приложения SAP BW до более новых версий (7.4 или выше). Такое может произойти в том случае, если синтаксис основан на элементах ABAP-словаря, определения которых были изменены SAP. Такая ситуация сложилась, например, для структуры ABAP-словаря RRRANGESID.

В данном случае были изменены определения полей HIGH и LOW (в версии SAP BW 7.4). Для них тип CHAR был заменен на тип SSTRING. Такое изменение позволяет с легкостью запустить операции исправления для пользовательского кода на ABAP с учетом прошлого определения на основе CHAR.

Рассмотрим три способа выполнения проверок и поиска расширений пользовательского кода на ABAP, необходимых для миграции SAP BW в базу данных SAP HANA. Здесь также представлен обзор типичных ошибок и предупреждающих сообщений, которые могут появится во время таких проверок, с указанием способов их разрешения. Для наглядности приводятся примеры кода. Предполагается, что обновляемая исходная система SAP BW уже совместима с Юникодом, поэтому изменения кода, связанного с Юникодом, не рассматриваются.

Поиск обязательных расширений для кода на ABAP

Существует три способа определить расширения кода ABAP, необходимые в рамках проекта миграции на SAP HANA. Это следующие способы:

  1. ABAP-программа ZBW_ABAP_ANALYZER (SAP-нота 1847431).
  2. Инструмент Code Inspector (для вызова используется код транзакции SCI).
  3. Поиск программ (в данном случае поиск программ, использующих стандартную структуру RRRANGESID).

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

Способ 1. Использование ABAP-программы ZBW_ABAP_ANALYZER

Программа ZBW_ABAP_ANALYZER предоставляется через SAP-ноту 1847431. Эта программа ищет ошибки в синтаксисе ABAP, который используется для обработки данных в приложении SAP BW. Сюда относятся преобразования, правила обновления, правила переноса и Analysis Process Designer (APD).

На рис. 1 показаны проверки, которые выполняются с помощью программы ZBW_ABAP_ANALYZER. Для этого необходимо реализовать SAP-ноту 1847431 в SAP BW и запустить программу с помощью транзакции SE38.

Рис.1. Выбираемые проверки в программе ZBW_ABAP_ANALYZER

На этом экране указаны категории объектов, по которым необходимо выполнить анализ. На следующих вкладках («Цепочки, «Преобразования», «Правила переноса», «Правила обновления», «Планирование» и «APD») можно дополнительно отфильтровать результаты анализа, ограничив его специфичными идентификаторами объектов SAP BW (преобразованиями, правилами обновления, правилами переноса и проч.).

Наиболее распространенные проблемы, которые можно выявить с помощью программы ZBW_ABAP_ANALYZER, связаны с отсутствием успешной практики написания кода для выбора в таблицах, например, для средств поиска в таблицах основных данных или других транзакционных таблицах в SAP BW, а также с использованием оператора выбора для всех записей.

С помощью программы ZBW_ABAP_ANALYZER можно также найти такую распространенную ошибку, как сбой во время применения концепции внутренних таблиц на уровне подпрограммы запуска для поддержки работы расширенных таблиц поиска на уровне полей. Без внутренних таблиц подпрограммы запуска система выполняет выбор в базе данных каждый раз при обработке записи в пакете данных для выполнения подпрограммы поиска на основе полей. Другими словами, приложение обращается к базе данных столько раз, сколько записей содержится в пакете данных, в результате такая нагрузка существенно снижает производительность.

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

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

На рис. 2 показаны примеры кода для подпрограммы поля, помеченной программой ZBW_ABAP_ANALYZER для расширения.

Рис. 2. Пример кодов на ABAP, расширенных с помощью внутренней таблицы во время выполнения подпрограммы запуска

Оформите подписку sappro и получите полный доступ к материалам SAPPRO

У вас уже есть подписка?

Войти