Как свести BW с ума. Экстрактор 0HR_PY_1_CE

Скажите, а как вы закрываете год от изменений?

Возможно я забыл что-то, но пока единственный централизованный способ, который знаю, это изменение даты обратного расчета в управляющей записи единицы расчета. Только вот поменять ее нельзя без удаления и повторного создания единицы расчета. А BW это не нравится. Вот вырезка из ноты:

The payroll control record is used to define payroll results as being «final» and this is the basis for the delta process with payroll results.
Caution: Deletion and new creation of control record is not recommended in a productive system and might cause inconsistencies on BI side.

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

Note 1162627 — Payroll Extracotor 0HR_PY_1_CE


Экстрактор 0HR_PT_2 еще граната

Так, товарищи. Печальная новость — найдена еще одна недокументированная граната экстрактора 0HR_PT_2. Точнее не так, она документирована, но специфично. В табличке V_T569R есть два модификатора (05 и 06), которые определяют временное окно, в котором BW экстрактор ищет данные для загрузки. Если вы только стартанули или нужно сделать полную загрузку данных, то нужно модификатор 05 (самая ранняя дата перерасчета) установить на дату старта (или когда у вас появились данные в системе).

Если вы уже сделали полную загрузку, отработали годик, а потом вам нужно перезагрузить весь объем данных, то увы, система выдаст данные только в указанном временном окне. Поэтому алгоритм таков:

  1. Перед полной загрузкой (или инициализацией дельты) меняем дату на самую раннюю в табличке V_T569R
  2. Как закрыли год от изменений, то меняем дату на начало следующего года
  3. При перезагрузке см. пункт 1.

Investigation efforts: 1 час.


Странности экстрактора 0HR_PT_2

Этот экстрактор настоящая редиска. Он выгружает данные из ERP системы по видам времени. Но делает
это весьма специфично в части определения периода выгрузки. В частности, сегодня я столкнулся с тем, что если у вас заведено какое-либо длительное отсутствие (декрет, например), на несколько лет вперед, а графика рабочего времени нет на будущие периоды, то всем привет. В США есть отсутствие «Компенсация работникам по нетрудоспособности» (Worker’s Compensation). Работник числится в компании, но выплаты ему делает государство до его реабилитации при несчастном случае. Так вот, дата выхода работника неизвестна, поэтому мы вводим отсутствие без ограничения срока. Понятно, что графики до 9999 года не сгенерированы, и система вываливается с предупреждением, что персональный график не найдет на какой-то там год.

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


Алгоритмы глобальных стандартных переменных в SAP BW

Когда мы в SAP Query Designer рисуем отчеты, то часто прибегаем к помощи стандартных переменных. Сегодня я озадачился получением фонда рабочего времени за последние 12 месяцев для вычисления среднего значения. В системе нигде не описана математика стандартных переменных, а иногда хочется посмотреть на стандарт, скопировать и поправить под себя. Например, измерение 0CALMONTH «Календарный месяц» содержит интересную переменную 0CML3CM «Последние 3 месяца включая текущий». А мне нужно сделать такое же, только не включая текущий. Надо делать свое (хотя нашел в гугле переменную 0CML3LM, но ее у меня почему-то нет, а как добавить пока не умею). Так вот, рассказываю…

Читать далее


Дружим HR с BW

Сегодня день цепочек — я настраивал цепочки для автоматической загрузки данных из ERP системы в BW. Цепочка, это последовательность команд, которые надо выполнить, чтобы счастье случилось. Озарившая меня идея заключается в том, что расчет заработной платы можно организовать так:

  1. Делаем модель процессов (тр. PEST) для расчета заработной платы. 
  2. В модель встраиваем шаг проводок. 
  3. После шага проводок делается минипрограмма, которая вызывает событие (EVENT) в BW системе. 
  4. Запуск цепочки в BW указываем при возникновении события (стандартная функциональность в планировщике заданий).
Таким образом сразу же после проводок у нас запустится обновление BW с уже актуальными результатами расчета. Единственное, что я сейчас пока не знаю, как научить систему автоматически передавать созданные документы проводок в целевую систему. PUST создает сами документы, но их нужно еще деблокировать и отправить. Надо поискать программку, уверен, такая есть.