Сравниваем значения до и после в отчете

Привет. Появилась задача сделать отчет без абапа, который может показать что было и что стало относительно некоторой ключевой даты. Например, показать все повышения по службе сотрудников и указать какая должность была до повышения, как стала после повышения (а также оклад, руководителя и прочие атрибуты).

Потыкавшись в стандарте я не нашел ни одного способа как это можно сделать без разработки своего отчета на ABAP. Поэтому открыл лучшую в мире ERP систему Microsoft Excel, выгрузил в нее данные из какой-то шаражки SAP HCM и построил отчет. Никакого абапа!

Для того, чтобы построить отчет и сравнить данные до и после относительно какого-то момента, нам нужно немного включить фантазии и гугла. У нас инфотипы имеют разные периоды действия. То есть, квери может выгрузить данные на дату для всех инфотипов, но не может выгрузить на индивидуальную дату для каждого сотрудника. Грубо говоря, я не могу сказать ему выгрузить в одну строчку данные по 0, 1, 2, 7, 8 инфотипам на дату мероприятия каждого сотрудника в выборке. Поэтому изголяемся.

Шаг 1. Выгружаем все мероприятия с переводом/повышением

Это просто. Выгружаем за нужный нам период, например, 2018 год только мероприятия из ИТ0000.

Шаг 2. Выгружаем каждый инфотип отдельно

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

Шаг 3. Включаем магию

А теперь самое интересное. У нас есть отдельная закладка вида Табельный номер, Дата повышения. Есть другие листы, где указаны интервалы дат С — ПО и данные, которые мы собственно хотим проанализировать. Нам нужно найти только те записи, которые своими С-ПО попадают в нашу ключевую дату перевода. Для этого есть многоэтажная матершиная формула примерно такого вида:

=INDEX(INDEX(IT0008,,5),SUMPRODUCT((O2>=INDEX(IT0008,,4))(O2<=INDEX(IT0008,,3))(P2=INDEX(IT0008,,1)),MATCH(ROW(INDEX(IT0008,,4)),ROW(INDEX(IT0008,,4)))))

IT0008 — таблица (именованный диапазон), в котором лежит наш ИТ0008.

O2 — ключевая дата перевода

P2 — табельный номер

Колонка 5 — ссылка на колонку с данными, которую мы хотим сравнить

Колонки 3 и 4 — даты С и ПО

Вывод

За пару часов (включая выгрузки, поиск в интернете формул, тестирование) удалось собрать отчет из 5 инфотипов (включая пользовательские) и 30 колонок сравнительного анализа ДО и ПОСЛЕ. Разумеется, что без VLOOKUP (ВПР) не обошлось, но это все и так знают.

Для примера прикладываю мини-файл с формулами.

Как видите, сравнить данные в экселе чаще быстрее и проще, чем разрабатывать программу. Да и сопровождать порой такие вещи дешевле. Делаем шаблончики, преднастроенные квери и вперед. Клик-чик-пук и готов 🙂


Выгрузка содержимого таблицы в отладчике

Совершенно случайно и совершенно пару недель назад узнал, что в отладчике можно выгружать содержимое табличек в Excel. Когда пытаешься найти ошибку в проводках или налоговых отчетах, это очень помогает. В самом отладчике два раза щелкаем на табличку, она открывается в полном экране (обычно на рабочем столе 2). Правая клавиша мыши и экспорт. Век живи, все равно им самым помрешь. Вы поняли о чем я 🙂