Меню

Вычисление чистой разницы без учета колебаний курса валют

В статье рассматривается новая структура и два BAdI для динамического изменения на лету присвоений валютного курса категории или периоду.

 

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

С помощью объектно-ориентированной системы ABAP SAP Business Planning and Consolidation (BPC) атрибут измерения можно изменять во время выполнения для сравнения пересчета валют по разным обменным курсам в памяти.

   

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

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

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

Концепция расчета разницы нетто без учета колебаний валютных курсов во времени

Рассмотрим следующий сценарий: Требуется определить чистую разницу между фактом за 2015.07 и бюджетом на 2014.07. Разница по отчету: факт (2015.07)|валютный курс (факт, 2015.07) - бюджет (2014.07)|валютный курс (бюджет, 2014.07). Однако разница складывается из двух компонентов — один происходит из разницы валютных курсов R (факт, 2015.07) - R (бюджет, 2014.07), а второй является действительной разницей между фактом (2015.07) и бюджетом (2014.07). После извлечения факта (2015.07) и бюджета (2014.07) из базы данных можно в качестве альтернативы решению с помощью разработки ABAP использовать функцию SAP Enterprise Performance Management (EPM) или локальную функцию для сравнения факта (2015.07) и бюджета (2014.07). С точки зрения производительности эффективное решение с помощью ABAP лучше, чем с эффективным использованием функций EPM. Однако разница, даже если она существенна, по-прежнему остается минимальной — около нескольких секунд.

При этом пересчет валют в EPM так тесно интегрирован с атрибутами измерения, что расчеты по категории возможны только с одним типом курса за определенный период. Данные в категории А за период Т во внутренней валюте можно перевести в целевую валюту только по обменному курсу Х за период Т. Выполнить пересчет с использованием другого обменного курса (например, обменного курса Y за период Т+12) невозможно. Функции EPM или какие-либо функции Excel не позволяют выполнять такие действия. Например, как показано на Рис. 1, функции EPM не позволяют обрабатывать значения валюты для сочетания C1R2 или C2R1.

Рис. 1. Сочетание валюты и обменного курса

В матрице, показанной на Рис. 1, C1 обозначает категорию бюджета, C2 обозначает категорию факта, R1 — валютный курс по бюджету на 2014.07, а R2 — валютный курс по факту на 2015.07.

Разница по отчету составляет C2R2 - C1R1, но чистая разница между двумя категориями составляет C2R1 - C1R1. Здесь нам важно сравнить две разные категории с использованием одного валютного курса, чтобы вывести за скобки влияние колебаний валютных курсов.

Традиционное решение и проблемы

Традиционным решением является создание логики скрипта на ABAP. На Рис. 2 показаны шаги, которые необходимо выполнить для реализации традиционного решения. Много времени уходит на обработку явных запросов в шагах 6 и 7, а также неявных запросов в шагах пересчета валют 2 и 4.

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

Новое решение с вычислениями в оперативной памяти

В новом решении предлагается использовать объектно-ориентированный ABAP для выполнения восьми шагов, представленных на диаграмме на Рис. 3.

Рис. 3. Новый процесс с вычислениями на лету

В программе на ABAP обработка запросов занимает, как правило, от 60% до 80% общего времени выполнения, а вычисления — до 5%. На запись результатов в базу данных требуется обычно от 5% до 10% от общего времени выполнения. Традиционное решение позволяет выполнять пересчет валют только с одним курсом для одной категории. Для пересчета с применением разных курсов требуется создавать новую промежуточную категорию. Во-первых, для хранения дополнительной копии данных в этой промежуточной категории требуется дополнительное пространство на диске. В данном примере для обработки пересчета валют для факта и бюджета необходимо создать новую промежуточную категорию ACT_BUD, поскольку для фактических значений можно применять только фактический валютный курс. Во-вторых, после сохранения ACT_BUD в базу данных для сравнения требуется выполнить запрос данных ACTUAL с валютным курсом ACTUAL и запрос данных ACT_BUD с валютным курсом бюджета. Таким образом, обрабатывается два запроса. Это самый существенный фактор, влияющий на производительность. После сравнения результат сохраняется в новой категории ACT_VS_BUD.

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

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

Войти