Знаете ли вы LSMW?

Знаете ли вы, что если в проекте LSMW на первом шаге «Maintain Object Attributes» указать способ загрузки «Periodic», то в меню появится еще один шаг «Frame Program for Periodic Data Transfer»? И этот шаг есть программа, которая умеет сама читать файлик, запускать конвертацию, генерацию IDOC/пакетного ввода и запускать их обработку. Шоколадно, я считаю! Пока не учился ей пользоваться, так как нет задач, но интересно.


Отпуск за вредные условия труда

Нашел в старых записках описание, как создавать отпуск за вредные/особые условия труда. Критиковать кривизну реализации бессмысленно, так как это было в «мохнатые» годы. Поэтому приветствуется только улучшайзинг! В САП главное понять принцип, получить вектор, а дальше включить фантазию 😉

Для генерации отпусков за работу во вредных условиях труда (ВУТ) создаем лимит  (например, код 06) с автоматической генерацией в оценке времени. Для генерации лимита необходимы два условия:

  1. Наличие связи штатной должности (S) с объектом вредных условий (CH). Для объекта CH создаем инфотип 9100, в котором указывается количество дней отпуска за ВУТ (IT9100-ZDAYS). При генерации лимита в user-exit EXIT_SAPLHRLV_004 читается этот ИТ на оцениваемую дату и устанавливается количество базового права в лимите согласно HRP9100-ZDAYS. Транзакция CMOD для создания расширения.
  2. Сотрудник должен отработать более 50% рабочего времени за смену для получения права на отпуск. Для этого используется вид времени 9000. В правиле вычисляется процент отработанного времени путем:  вид времени 0002/вид времени 0050. Если больше 0.5, то вид времени 9000 = 1, иначе – 0. В функции QUOTA при генерации лимита производится умножение начисленного права на отпуск за день на вид времени 9000 «Фактич время > 50%». То есть, отработал больше 0.5 смены, то умножаем начисленное право на 1, в противном случае на ноль.

При накоплении права на отпуск кратного целой единице, система переносит целую единицу в 2006 ИТ. То есть, за 3 дня накопили 1,12 дня отпуска, то один день отпуска начислится в ИТ2006.

Читать далее


Создание транзакции для SAP Query

Сделали вы такой сякой красивый отчетик в SAP Query! Хочется его запечатлеть на память, прописать в инструкции. И красиво сделать! Создаем в SE93 новую транзакцию. В транзакции прописываем запуск транзакции START_REPORT с галочкой «Пропустить селекционный экран». В параметрах (внизу) указываем:

D_SREPOVARI-REPORT — группа пользователей из транзакции SQ03

D_SREPOVARI-EXTDREPORT — название Query из транзакции SQ01

D_SREPOVARI-VARIANT — с каким вариантом запускать

D_SREPOVARI-NOSELSCRN  — X если не показывать селекционный экран

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


Трюк синхронизации делового партнера с персоналом

Нашел трюк! Если вы делаете мероприятие перевода, то в нем обычно ничего такого не меняется, что может вызвать синхронизацию данных «Делового партнера — Центрального лица — Табельник». В коде жестко проверяется весь 2, 6, 9 инфотип по ряду полей и статус работника. Следовательно, перевод не может вызвать синхронизацию. А нам надо!

Чтобы обмануть систему, сделал динамическое мероприятие, которое в ИТ0002 в поле Nickname записывает текущую дату. Это поле нигде в системе не используется, поэтому можно туда немного нагадить ради благой цели. И система слопала!

Вот такое мероприятие:

0001 06 401 P T001P-MOLGA=’10’
0001 06 410 I MOD,0002/D
0001 06 415 W P0002-RUFNM = SY-DATUM

САП как UNIX — система костылей и подпорок 🙂


Обратный расчет заработной платы

Расчетчики, это обычно самые злюки в HR. И все по уважаемой причине — они деньги считают. Ругаться за каждую копейку ходят именно к ним, а не к консультантам вроде нас. Особенно они злюки, когда система с бухты барахты начинает обратный расчет крутить с начала года. И непонятно почему, что самое невообразимое.

Подумал я на ночь глядя и решил изобрести велосипед. Опять же, ничего нового, просто структурирую. Можно потом в инструкцию для злюки включить. Совершенно бесплатно.

Итак, если предупрежден, то вооружен. Чтобы вооружить злюк делаем следующее:

  1. Создаем в SAP Query элементарный отчет по третьему инфотипу, чтобы показать даты последнего изменения основных данных. Перед зп пусть запускают отчет и сразу увидят, по кому будет перерасчет.
  2. Включаем в системе аудит изменений инфотипов HR. На первом этапе нашли по кому будет перерасчет, на втором ищем причину. В большинстве случаев, это изменение прошлым числом. То есть по нужному табельному номеру запускаем протокол аудита и смотрим, кто и что менял во времена царя Гороха. 
  3. И совсем конфетка: делаем отдельный расчетный листок для внутреннего использования. В него выводим все виды оплаты, понятные пользователю (налоги, базы, начисления, удержания). Не нужно различные балансы, супер технические виды. В программе вывода расчетных листов (RP*EDT*) указываем параметр вывода перерасчетов в листочек. Здесь есть маленькая хитрость, которую я пока не разобрал, но сделаю скоро. В программе вывода РЛ можно сказать, чтобы расчетный лист не выводился для оригинального периода (есть user-exit). Надо попробовать исправить ее так, чтобы выводились только перерасчеты. Тогда мы красиво в симуляции запускаем расчет зп по всему предприятию с выводом этого перерасчетного листочка. Он покажет только перерасчитанные виды оплаты, периоды. Сразу злюке станет проще, так как будет понятно что изменится по работнику и с почему.
Примерно такие мысли 🙂
P.S. Злюки, если вы меня читаете, то я использовал это выражение исключительно для эмоциональной окраски. Я вас очень уважаю и обожаю. Счастливее вас нет людей, когда проводки в САП прошли без красненьких кружочков слева в обзоре документа 😉