Продвинутые перцы переходят на SE16H

Да. Появилась новая транзакция SE16H вместо SE16N для работы с таблицами. Основные новшества это возможность группировки полей таблицы, возможность пользовательской сортировки до начала выборки данных, возможность делать простые JOIN вьюхи. Не ахти что, но САП показал морковку.


Как работают лимиты отсутствий

Лимит это банка, в которой лежат орешки. Достали орешек, количество лимита уменьшилось. Вернули — увеличилось. В системе есть два вида лимитов: лимиты отсутствий (инфотип 2006) и лимиты присутствий (инфотип 2007). Когда мы вводим отсутствие или присутствие, которое исчерпывает лимит (забирает орешек), система сокращает так называемое базовое право. Базовое право это количество орешков в банке — сколько всего дней или часов можно взять за определенный период.

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

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

Чтобы отслеживать связь отсутствий с лимитом (аналогично связь присутствия с лимитом присутствия) система использует промежуточную таблицу. Таблица PTQUODED содержит несколько важных параметров: ссылку на лимит, ссылку на отсутствие, табельный номер и сколько орешков было взято. При создании отсутствия или лимита система генерирует уникальный номер, который справа добавляется номером инфотипа: XXXXXX2006 или XXXXX2001. Даже если вы не сохраняете запись, номер все равно выделяется.

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

Если мы вносим погашение лимита через 416 инфотип, то такая запись также имеет свой уникальный номер с суффиксом 0416, а в PTQUODED сохраняется одной строчкой. Когда мы создаем запись ИТ0416, где указывается несколько лимитов для компенсации, то на самом деле создается несколько записей в PTQUODED, по одной на каждый лимит, а экранная логика 0416 собирает по PTQUODED внешний вид инфотипа.

Таким образом система всегда знает кто и каким образом исчерпал лимит (стащил орешки). Именно с помощью PTQUODED система в приказе на отпуск в российской локализации определяет за какой период был этот отпуск.

Еще интересный момент. В 2001, 2006, 0416 инфотипах есть отдельное поле для логической системы. То есть система учитывает в какой системе было внесено отсутствие, лимит или 416. При этом у SAP нет стандартных механизмов для удаленной работы с лимитами или 416 инфотипом. Казалось бы загадка, для чего нужна логическая система? Ответ простой — CATS. Это единственный инструмент, который как и организацинонный мендежмент относится к Cross Application Components — универсальный инструмент для всех модулей системы. CATS может учитывать время из разных систем, а так как в CATS есть отсутствия и присутствия, то они могут сливаться в HR из разных систем через стандартные BAPI интерфейсы. Здесь-то и нужна логическая система, чтобы понять откуда прилетело отсутствие или присутствие.

В системе нет ни одного IDOC для передачи 2001, 2006 или 0416 инфотипов. Это также связано с тем, что уникальные номера генерируются в каждой системе в рамках своих диапазонов, а значит есть риск пересечения, когда данные попадут в одну систему. Видимо поэтому вендор и отказался от реализации интеграции по этим инфотипам. Если вы хотите сделать реализацию передачи этих инфотипов, то нужно помнить о нумерации и PTQUODED. При приеме такого самодельного IDOC с одним из вышеуказанных инфотипов нужно самостоятельно отслеживать и формировать уникальные номера, учитывать их в PTQUODED, пересчитывать лимиты. Вы же помните, что IDOC ложится в базу «как есть», без логики инфотипа?

Как сделать свой IDOC можно здесь Передача российских инфотипов по ALE

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


Миграция данных с помощью SAP ALE

Здравствуйте все.
Традиционно миграцию данных выполняют классическим способом — файлики, LSMW, загрузка. Вариант классический, опробованный, рабочий. Чтобы не было скучно, мы решили пойти другим путем и провести миграцию данных с помощью SAP ALE. У подхода оказались интересные нюансы и преимущества перед традиционной миграцией. Стоит сразу же отметить, что слабонервным и начинающим подход противопоказан ввиду высокого порога вхождения в технологию.
Чтобы перенести данные с помощью ALE нам нужно настроить модель распределения, где указать откуда, куда и какие данные мы собираемся переносить. Это все делается в BD64, где сложностей не возникает.
Нам нужно использовать стандартный IDOC HRMD_A, если этих данных достаточно, либо расширить его своими инфотипами. Первые расширения IDOC обычно идут сложно, зато потом одно удовольствие клепать то да се. Для расширения концептуально мы создаем новые сегменты и прописываем их в наше расширение (WE30, WE31). Не забываем указать эти сегменты в T777D для каждого инфотипа.
Если нужно провести какие-то преобразования, то либо в правилах в SALE, либо в ФМ CONVERT*TO*, либо в CMOD/BADi делаем преобразования.
Делаем файловый порт источником данных и грузим апельсины бочками. Если нужно преобразования использовать для разных форматов файла, то идем в LSMW для обработки IDOC.
Звучит сложно, но только в первый раз. Взамен мы получаем отдельные плюшки в сравнении с LSMW.
  • Возможность на уровне системы управлять очередями и последовательностью загрузки данных
  • Возможность управлять производительностью. Да и сами IDOC грузятся намного быстрее, чем любая LSMW.
  • Легкий поиск ошибок, чего не скажешь про журналы LSMW.
  • Возможность поменять настройку и заново прогрузить тот же объем, что невозможно в LSMW (в большинстве случаев).
  • Возможность одним разом загружать данные в множество систем просто перенаправляя потоки данных в BD64.
  • Нет проблем с перезагрузкой данных, когда в LSMW нужно сначала удалять загруженные записи, а потом записать новые.
  • В случае миграции данных из “цивилизованной” системы, где есть возможности для интеграции, такая миграция может проходить практически в автоматизированном режиме (через файлы, веб-сервисы, OData или еще какие технологии).
  • Нет проблем с табличными инфотипами.
Но за сыр нужно платить. Плата заключается, как уже писал выше, в высоком пороге входа — надо много знать из технологии. Плюс, так как IDOC сохраняется напрямую в базу данных, но пользовательская логика для инфотипов не работает. Такие вещи приходится помнить и реализовывать в принимающей системе (например, вызывать те же функциональные модули прежде чем сохранить IDOC в инфотип).
LSMW, кстати, удобно скрестить с ALE как инструмент для быстрого преобразования практически любого текстового файла в структуру IDOC. Я писал ранее, как можно из файла формировать IDOC за считанные минуты. Если вспомнить, что LSMW можно запланировать как фоновое задание, то получается гибкий инструмент для загрузки файлов любого формата без участия человека или регулярной миграции данных между системами. И совершенно бесплатно.

Выгружаем значения варианта отчета

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

Для этого используем функциональный модуль RS_VARIANT_CONTENTS_255. В некоторых системах это ФМ RS_VARIANT_CONTENTS. В SE37 запускаем его по кнопочке F8. Заполняем поля REPORT и VARIANT.

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

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


ВИДЕО. Для чего нужна галочка Отдел в PPOME

Вот тут все рассказал. Я переволновался и уже забыл как на русском галочки называются, поэтому перепутал. Прошу простить. Инструкция по настройки галочки Отдел была вот здесь https://saphr.ru/2016/08/21/infotip-1003-shtab-otdel/

Жду ваших комментариев и репостов. Поддержите отечественного производителя 🙂