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

«Тра­нза­кция SM02: сообщения в SAP системе»
Олег Башкатов:
С помощью ФМ TH_POPUP можно отправить сообщение конкретному пользователю :-)
«Тра­нза­кция SM02: сообщения в SAP системе»
Олег Башкатов:
Лучшая практика показывает, что сисадмин/базисник о состоянии системы и планах проведения работ должен узнавать из других источников нежели информация от кого-то из SM02 :-)
«Тра­нза­кция SM02: сообщения в SAP системе»
Олег Точенюк:
"У пользователей или консультантов может появиться необходимость сообщить что-то всем пользователям системы, сделать срочное и важное заявление. :)" - Ну у пользователей и консультантов конечно же...

Динамическая замена или обновление файла логики скрипта и его выполнение в ABAP

632

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

Пакет администратора данных выполняет бизнес-логику для данных SAP Business Planning and Consolidation (BPC), версии NetWeaver, посредством набора цепочек процессов SAP BW. Для выполнения этой задачи логику скрипта инициирует важный пакет администратора данных Default_Formulas. Для выполнения логики скрипта с расширенными возможностями ее следует инициировать в среде ABAP. Далее в Объектном ABAP (OO) для SAP BPC можно извлечь содержимое файла логики скрипта, внести изменения во время выполнения и перезапустить логику скрипта для этого динамически измененного содержимого.

В системе SAP Business Planning and Consolidation (BPC), версия для NetWeaver доступен стандартный процесс для создания и выполнения пакетов администратора данных. Если компании требуется выполнять большой объем разнообразных вариантов аналогичной логики с использованием стандартного процесса, необходимо создать несколько файлов логики скрипта по одному для каждой логики. Для этого пользователь должен ввести разные значения параметров на экране выбора и выполнить файл логики скрипта с использованием значений входных параметров или выбрать один из нескольких файлов логики скрипта для выполнения. Каждый файл должен быть жестко закодирован с применением предварительно выбранных значений параметров.

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

Рассмотрим следующий бизнес-сценарий:

  • Для бизнес-единицы А1 требуется выполнить планирование на уровне группы МВЗ и группы продуктов.
  • Для бизнес-единицы А2 требуется выполнить планирование на уровне группы МВЗ и группы МВП.
  • Для бизнес-единицы А3 требуется выполнить планирование на уровне группы МВЗ и группы МВП, а затем внести требуемые корректировки.

В рамках общего стандартного решения для этого потребуется три скрипта:

Скрипт 1: Ввод параметра для бизнес-единицы А1 и определение объема на уровне группы МВЗ и группы продуктов

Скрипт 2: Ввод параметра для бизнес-единицы А2, определение объема на уровне группы МВЗ и группы продуктов и суммирование на уровне группы МВЗ и группы планирования МВП

Скрипт 3: Ввод параметра для бизнес-единицы А3, определение объема на уровне группы МВЗ и группы планирования МВП и выполнение корректировки

Как правило, для 30 сценариев требуется обработать 20 скриптов, около 30 пакетов администратора данных (по одному на каждый файл логики скрипта) или один пакет администратора данных со сложными инструкциями по выбору файла логики скрипта для каждого сценария.

Я реализовал альтернативное решение, которое позволит многократно использовать всего один файл шаблона логики скрипта. Для работы с этим способом потребуется следующее:

  • ведение соответствия параметров в файле шаблона логики скрипта;
  • ведение логики в одном файле шаблона логики скрипта.

Данное решение работает на базе SAP BPC 10.X, версия NetWeaver. (Для SAP BPC 7.5, версия NetWeaver применяется аналогичная концепция, но возможны отличия в коде.)

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

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

Как работает пакет администратора данных

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

Однако значения входных параметров для версии (категории), объема пересчета валют и источников данных различны. В BPC доступен стандартный процесс для создания пакета администратора данных. При выполнении пакет администратора данных инициирует файл логики скрипта, который, в свою очередь, инициирует ABAP-программу для выполнения задачи.

Пользователь выполняет пакет администратора данных из интерфейса Microsoft Excel с помощью дополнительного меню Enterprise Performance Management (EPM). Этот пакет администратора данных(Default_Formulas) инициирует файл логики скрипта. Файл логики скрипта обменивается данными с бэкэндом SAP для инициирования стандартной программы BPC ABAP. Он возвращает информацию журнала во фронтэнд Excel с результатом, предупреждением, сообщением об ошибке или об успешном выполнении, а также со статистической информацией. Это общее описание стандартного процесса обработки пакета администратора данных.

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

Пример сценария

Пример использования: Пользователю требуется выполнить аналогичную или идентичную логику с разными сценариями. Допустим, логика скрипта выполняет пересчет валют с входными параметрами категории, времени и бизнес-объекта (т.е. балансовой единицы). На рис. 1 показан файл логики скрипта.

*RUN_PROGRAM CURR_CONVERSION

CATEGORY = [ACTUAL]

CURRENCY = [USD]

TID_RA = [2011.02]

RATEENTITY = [GLOBAL]

OTHER = [ENTITY=1000]

*ENDRUN_PROGRAM

Рис. 1. Файл логики скрипта для категории факта при пересчете валют

К категории, времени и бизнес-объекту применяется жесткое кодирование. Если пользователю требуется выполнить пересчет валют для категории BUDGET (бюджет) и времени 2012.02 с бизнес-объектом ENTITY 3000, необходимо создать другой файл логики скрипта, как показано на рис. 2.

*RUN_PROGRAM CURR_CONVERSION

CATEGORY = [BUDGET]

CURRENCY = [USD]

TID_RA = [2012.02]

RATEENTITY = [GLOBAL]

OTHER = [ENTITY=3000]

*ENDRUN_PROGRAM

Рис. 2. Файл логики скрипта для категории бюджета при пересчете валют

Для данного сценария пересчета валют с разными значениями категории/бизнес-объекта/времени установите параметры, представленные на рис. 3.

*RUN_PROGRAM CURR_CONVERSION

CATEGORY = [ %CATEGORY_SET %]

CURRENCY = [USD]

TID_RA = [ %TIME_SET %]

RATEENTITY = [GLOBAL]

OTHER = [ENTITY= %ENTITY_SET %]

*ENDRUN_PROGRAM

Рис. 3. Файл логики скрипта для пересчета валют с параметрами

Переменные %CATEGORY_SET %, %TIME_SET % и %ENTITY_SET % предоставляются стандартной программой SAP, которая переносит входные значения пользователя из Excel через интерфейс пакета администратора данных. Таким образом, с помощью одного файла логики скрипта можно обрабатывать разные входные данные по категории, времени и бизнес-объектам. Имеется другой сценарий, в котором пользователю требуется выполнить пересчет валют по двум категориям и сравнить результат. Для выполнения сравнения используется логика скрипта, показанная на рис. 4.

 

*XDIM_MEMBERSET CATEGORY = %CATEGORY_SET %

*XDIM_MEMBERSET ENTITY = %ENTITY_SET %

*XDIM_MEMBERSET TIME = %TIME_SET %

*XDIM_MEMBERSET CURRENCY = USD

*WHEN TIME

*IS *

*REC(EXPRESSION = %VALUE % - [CATEGORY].[BUDGET], CATEGORY = CAT_DIFF)

*ENDWHEN

Рис. 4. Логика скрипта для определения разницы между двумя категориями

Вследствие ограничения по динамическому скрипту, применяемому в пакете администратора данных, невозможно указать два параметра для категории. Во-вторых, категория CAT_DIFF представляет разницу между %CATEGORY_SET % и BUDGET (бюджет). В-третьих, перед выполнением этого скрипта для сравнения категорий должны быть доступны результаты пересчета валют для обеих категорий.

Применяется еще одно общее требование. Как правило, существует список пар аналогичных параметров для данного типа сравнения. Например, всегда требуется сравнивать одну категорию (исходная категория) с другой (целевая категория): ACTUAL (факт) с BUDGET (бюджет), FORECAST Q1 (прогноз, квартал 1) с BUDGET (бюджет), FORECAST Q2 (прогноз, квартал 2) с FORECAST Q1 (прогноз, квартал 1) или FORECAST Q3 (прогноз, квартал 3) с FORECAST Q2 (прогноз, квартал 2), как показано в табл. 1.

Табл. 1. Соответствие категорий

Добавим к этой таблице соответствия еще одно измерение, TIME (время), как показано в табл. 2.

Табл. 2. Матрица соответствия для категории и времени

Вы хотели бы увидеть полную версию статьи?

Если вы являетесь подписчиком журнала SAP Professional Journal, пожалуйста, введите в правом верхнем углу логин и пароль.

Если вы хотите подписаться на журнала SAP Professional Journal, пожалуйста, обратитесь в редакцию или сделайте заказ на сайте.

Правила получения тестового доступа к статьям SAP Professional Journal


Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП» Copyright © 2010 Wellesley Information Services. All rights reserved.