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

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


Волшебная клавиша в отладчике

Бес в ребро, седина мне в бороду.

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

Встаете на строчку, куда нужно перейти из текущего положения и нажимаете Shift-F12. Система не выполняет код между текущим и целевым положением, а просто перепрыгивает. Команда JMP в ассемблере, GOTO в бейсике.

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


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

Лимит это банка, в которой лежат орешки. Достали орешек, количество лимита уменьшилось. Вернули — увеличилось. В системе есть два вида лимитов: лимиты отсутствий (инфотип 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

Рано или поздно каждый консультант сталкивается с задачей быстрой и эффективной обработки большого массива данных из системы. Предметная область тут неважна. Многие компании практически не используют современные аналитические решения на благо повседневной трудовой деятельности. Причин тому много, но сегодня речь о другом. Наиболее типичные ситуации, это сверка данных при миграции данных или выгрузка большого объема данных из системы с целью последующей обработки в MS Excel. В 99% случаев будут именно такие задачи.

Вроде бы что сложного в выгрузке данных из отчета в системе? Совершенно ничего, когда мы говорим о паре десятков или сотен строк. Если речь идет о десятках тысяч строк или сотен тысяч строк, то мировоззрение начинает меняться. Попробуйте в ваших системах запустить оперативный запрос с даты старта SAP по паре инфотипов. А потом все это выгрузите и нарисуйте несколько формул рядом.

Исходя из моего опыта, могу дать некоторые базовые советы.

Совет 1. Выгрузка в MS Excel может быть осуществлена множеством способов. Даже нажимая одну кнопочку выгрузки разные системы обрабатывают событие по-разному. В ALV отчетах есть две возможность выгрузить данные в файл.

Левая кнопочка  зависимости от версии системы либо откроет MS Excel Inplace (то есть внутри системы откроется XLS файл). Очень неудобно, мелко, но достаточно для просмотра пары записей. Файл можно сохранить. В другом случае система спросит, в каком формате желаете выгрузить данные.

По умолчанию у всех стоит первый вариант — MHTML. И не дай вам чебурашке выгружать тысячи записей в этом формате. Система внутри готовит данные, потом запускает XLST трансформацию и вываливает все это в страшненький полу-HTML код. Это занимает очень много памяти на сервере и часто приводит к дампам. При открытии такого файла Excel наоборот производит конвертацию из XML файла в свой XLS формат, что, по сути, дублирует работу. Если выгружать сразу в Excel XLS/XLSX формате, то лишние действия не производятся, файл выгружается существенно быстрее.

Читать далее


Миграция данных с помощью 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 можно запланировать как фоновое задание, то получается гибкий инструмент для загрузки файлов любого формата без участия человека или регулярной миграции данных между системами. И совершенно бесплатно.