Ещё по теме

Комментарии по теме

«Как эффе­кти­вно испо­льзо­ва­ть инфотипы пла­ни­ру­е­мо­го во­зна­гра­жде­ния для по­стро­е­ния стратегии во­зна­гра­жде­ний»
Юрий Щербаков:
В статье достаточно подробно и, в то же время, компактно описано назначение инфо-типа 1005 (Нормативная оплата), используемого для штатных должностей (объекты типа S). Примечание: Из этих объектов...
«Создание деревьев принятия решений с помощью ста­нда­ртных операций SAP»
Александр Иванов:
Автор описывет использование функции IF в схеме расчёта, приводит понятный пример. Знания, нужные любому консультанту.   Я бы добавил, что в конструкции IF ENDIF можно использовать функцию...
«Стру­кту­рные по­лно­мо­чия»
Михаилй Братковский:
Небольшое уточнение: 1. Для роли табельного учета и роли по заработной плате должны быть созданы разные профили структурных полномочий. 2. Если присвоить профиль структурных полномочий...

База знаний

Вы можете подписаться на эту колонки этого автора, если авторизируетесь или зарегистрируетесь

Записки о модуле Human Resources системы SAP® ERP. Оперативная отчетность (SAP Query)

13 ноября 2016, 22:41

Давайте определимся, что такое оперативная отчетность, о которой так часто говорят консультанты. В моем представлении это та отчетность, которая может потребоваться оперативно – быстро, сейчас. Как правило, это списки, которые просят создать руководители для своих нужд. Список дней рождений, список отсутствующих, список окладов и так далее. Доступа к таблицам у пользователей нет, а потребность в разносторонней информации есть.

Для удовлетворения этой потребности компания SAP создала свой генератор запросов, который называется SAP Query. Он позволяет формировать как временные списки с помощью оперативных запросов (Ad Hoc Query), так и вполне самостоятельные отчеты со своими настройками и вычислениями. Более того, однажды удачно созданный оперативный запрос можно трансформировать в собственную транзакцию и поделиться с соседом.

Механизм состоит из трех объектов:

  • Инфонабор определяет, какие поля нужно вывести из таблиц базы данных или логической базы данных пользователю. Это своего рода первый фильтр набора полей, которые может увидеть пользователь в оперативном запросе или при создании своего запроса в транзакции SQ01. Например, логическая база данных PNP содержит множество интернациональных полей и инфотипов, которые нам не нужны. Мы можем создать инфонабор с полями и инфотипами, которые используются на проекте.
  • Группа пользователей разделяет доступы к инфонаборам и запросам. Например, группа «Кадры» может содержать инфонабор с полями для кадровой службы, а доступ к нему будет только у включенных в эту группу пользователей.
  • Запрос. Запрос и есть по своей сути отчет, который создается на полях инфонабора. Запрос состоит из селекционного экрана, параметров выбора, формы вывода с нужными сортировками или суммированием. И именно запрос можно сделать в виде отдельной транзакции, которая включается в роль пользователям.

12.1 SQ02 – Инфонаборы

Начнем с того, что красивые поля инфонаборов, группы, инфотипы и прочее – все это хранится в скромной кластерной таблице AQLDB в упакованном виде. Сам по себе инфонабор ничего не умеет, не знает и вообще непонятно, зачем на свет родился. Шучу. Система хранит только описание структур инфонабора, а материализуется это в момент генерации оперативного запроса или обычного запроса SAP Query. Именно в момент генерации считывается описание выбранных инфотипов в запросе, считывается какая-либо дополнительная логика в инфонаборе (дополнительные поля, произвольный ABAP-код и так далее), и все это оформляется в виде отдельной программы со своими вызовами функциональных модулей, вставками наших кусочков кода (если мы писали такие в инфонаборе), обработкой инфотипов.

Рис. 12.1

12.1.1 Создание пользовательских полей в инфонаборе

Зачастую нам не хватает стандартных полей, которые представлены в системе для запросов и оперативных запросов. Для этого существует два пути решения. Первый – это создание собственных полей в SQ02. В открытом инфонаборе слева выбираем инфотип, нажимаем правую клавишу мыши и «Дополнит. информация к узлу». Открывается окно с дополнительными полями. Создаем новое поле, прописываем его тип. Далее встаем на него мышкой, нажимаем на кнопку «Кодир. для поля», и открывается редактор. Вот здесь можно писать ABAP-код для вычисления данного поля. Принцип работы аналогичен, как будто вы в цикле (loop) обрабатываете запись из структуры.

Предыдущий вариант хорош, когда необходимо для конкретного инфонабора прописать пару уникальных полей. Если же надо сделать поле, которое будет использоваться и в других инфонаборах, то придется немного попрограммировать. Для нужного нам инфотипа открываем структуру CI_P****_AF в SE11, где **** – номер инфотипа, к которому будем добавлять поле. В структуру добавляем свое поле. Теперь следует сообщить информационной системе, что это поле как-то должно вычисляться. Открываем таблицу T770AF и по аналогии со стандартными полями для нашей структуры прописываем функциональный модуль, который будет вести расчет. За образец берем функциональный модуль RPAQ_GET_AF_NNNN, копируем его в свой и пишем в нем логику вычисления поля. Теперь осталось открыть нужный нам инфонабор: в меню «Инфонабор – Дополнительные функции» выбираем «Актуализировать дополнительные HR-поля». Система прочитает настроечную таблицу и добавит наши поля в раздел «Дополнительные поля» соответствующего инфотипа. Остается перенести их в нужную группу полей, сгенерировать инфонабор и пользоваться своими трудами.

12.2 SQ03 – Группы пользователей

Для того чтобы разграничить отчеты по областям применения между пользователями, используются группы пользователей. Например, для бухгалтеров нужно показывать одни отчеты, для кадровиков – другие. Создаем две группы пользователей и присваиваем им пользователей. Один пользователь может входить в несколько групп. Чтобы пользователи увидели запросы и инфонабор, надо каждой группе пользователей присвоить свои инфонаборы. Тогда пользователи будут видеть как сами инфонаборы в оперативном запросе (транзакция S_PH0_48000513), так и отчеты SAP Query, созданные на основании этих инфонаборов.

12.3 SQ01 – Запросы

Запросы по своей сути – это сгенерированные программы-отчеты. SAP предлагает инструмент для быстрой генерации программ, которые выводят в табличном виде что-то. Если в SQ01 выбрать любой запрос, а затем в меню «Запрос – Другие функции – Показать имя программы» скопировать имя программы, а в SE38 его открыть, то вы попадете в ее исходный текст. Ее же можно запустить, как и любую другую программу. Понимание этого, а также знание структуры ABAP-программ (когда и какие события возникают) позволяет легко вписывать свои куски ABAP-кода в инфонаборы для формирования сложной логики полей.

12.4 S_PH0_48000513 – Оперативные запросы

Я бы сказал, что это самый первый инструмент, которому следует учить пользователей. В каждой системе есть та или иная возможность создавать отчеты «под себя». SAP не остался в стороне и предоставил простое решение. Консультант создает инфонаборы, ограничивая набор данных только необходимым пользователю (или группе пользователей). В результате пользователь уже не листает в панике десяток экранов в поисках необходимого поля, так как все сгруппировано и красиво подано пред очи его. В оперативном запросе есть два преимущества:

  • Быстрое создание быстрых выборок данных. Стоит только указать, какая информация нужна, какие колонки вывести, по каким фильтровать и за какой период. Вуаля, красивый отчетик перед нами.
  • Оперативный запрос можно сохранить и преобразовать в полноценный SAP Query со своей транзакцией. Бывает так, что пользователи сначала говорят, что им нужны все отчеты всея Руси. Уходит масса времени на создание каждого каприза. Смотришь аудит использования транзакций и понимаешь, что и десяти процентов достаточно. Поэтому учим работать с оперативными запросами, а потом пользователи сами поймут, что такие-то запросы используются часто, и их можно оформить в виде полноценных отчетов для всех пользователей. А если написать, что сделал Вася Пупкин, то это повысит мотивацию Васи Пупкина.

12.5 Особые инфотипы заработной платы и рабочего времени для SAP Query

В системе есть такая полезная штука, как эмулированные инфотипы. Это две группы инфотипов для оценки рабочего времени и заработной платы. Обычно о них мало кто помнит, но они есть и вполне даже работают. Используют их в тех случаях, когда в стандартных отчетах (просмотр результатов оценки времени PT_BAL00 или ведомость видов оплаты H99CWTR0) не хватает колонок из основных данных работника (захотелось вам увидеть заработную плату женатых мужчин в сравнении с холостыми, например). В этом случае можно сделать какой угодно SAP Query, а в качестве дополнительных полей присоединить к нему эти эмулированные инфотипы с суммами/часами.

Суть этих инфотипов в том, что при их генерации создаются таблицы, которые по заранее определенным правилам заполняются данными из оценки времени или заработной платы. Поэтому, с точки зрения SAP Query, это обычные поля инфонабора. Правила заполнения определяются в настройке:

  • инфотип 2501 «Виды времени». Ракурс настройки V_T557B;
  • инфотип 2502 «Статус лимитов». Ракурс настройки V_T557E;
  • инфотипы 0402, 0403, 0458 – 0460 «Данные заработной платы». Настраиваются в несколько этапов. Путь «IMG – Менеджмент персонала – Информационная система – Результаты заработной платы».

12.6 «Красивый» экспорт ALV в Excel

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

Консультанты, как правило, говорят (да и я тоже): запускаете отчет из SAP Query или стандартный, а потом в MS Excel доделываете оформление. SAP придумал достаточно простое решение, которое при небольшой смекалке расширяется до волшебной кнопочки. Итак, есть отчет, который выводится в виде ALV- таблички. Нужно из этой таблички получить красивую картинку в MS Excel. Для этого, если нажать кнопочку «Выбор ALV формата» на закладке «Ракурс», можно выбрать шаблон, в котором нужно вывести информацию. Пара слов о том, как загрузить такой шаблон, а затем о смекалке.

Когда мы выгружаем данные из SAP в MS Excel, то по умолчанию открывается файл с кучей листов. Это листы сводной таблицы (Pivot), подытогов (Sub), сами данные (RawData). Можно заранее навести красоту, вставить логотип компании, отформатировать таблички и загрузить такой шаблон обратно в систему. Для загрузки используем транзакцию OAOR «Навигатор бизнес-документов». На первом экране указываем:

  • Class name: ALVLAYOUTTEMPLATES;
  • Class type: OT;
  • Object key: CUS_STANDARD_TEMPLATE.

В открывшемся окне в папку «Образцы таблицы» загружаем наш документ (Рис. 12.2). Имя документа должно начинаться с «cus_». Сохраняем, выходим. Теперь этот документ будет появляться на закладке «Ракурс» в свойствах ALV-таблицы. Простой вариант на этом заканчивается. Остается при выводе выбирать наш шаблон и любоваться красотой. Можно в отчете сохранить вариант селекционного экрана, где прописать вариант ALV-таблицы с нашим новым шаблоном. Тогда пользователю вообще ничего не нужно будет делать. Заполнил фильтры на селекционном экране и получил красивый Excel.

Рис. 12.2

Когда однажды я сделал такую красоту, один вредный кадровик сказал: «А у нас таблица идет с отступом два пункта, в самой левой нижней ячейке нужно написать дату документа и не забыть пятнадцать линеек для подписи». Вот этого SAP не умеет. Данные выгружаются в шаблон на лист RawData с первой строчки и первой колонки.

Но консультант всегда вывернется. Для этого было придумано следующее решение. В шаблоне MS Excel был написан простой макрос, который табличную часть с листа RawData копировал в то место, где встречался условный код в ячейке. Например, я в ячейку C15 пишу код {CopyMeHere}, и макрос при открытии документа копирует все данные с листа RawData на нужный мне лист в ячейку C15. А еще специально вставил формулу с отражением даты, как просил вредный кадровик, и сделал ее красной и жирным шрифтом с паролем на ячейку. На принтере все равно будет черным, а так это наш вредный ответ вредному кадровику. Соответственно, с помощью макросов и формул можно создавать достаточно сложные отчеты, о логике которых пользователь не будет знать.

Это была шутка. Никакого вредного кадровика не было!

12.7 «Красивый» экспорт ALV в Word

В MS Word есть технология печати конвертов, как ее называет Microsoft, «стандартных писем». Суть заключается в том, что мы создаем шаблон в MS Word, в нужные нам места прописываем в определенном формате поля. А потом запускаем мастера печати конвертов, на входе указываем ему файлик с данными (адресатами), система подставляет в наши поля значения из файла. Результат – заполненные файлики MS Word. Источником данных для этой технологии может быть любой список (файл, таблица MS Excel, база данных). А у нас все интереснее, так как есть SAP, который тоже может быть источником.

Для HR самое простое — это печатать справки. Создаем оперативный запрос в SAP Query, чтобы одна строчка содержала всю необходимую информацию для вывода в шаблон, рисуем шаблон, и механизм печати справок готов. Если стандартных инструментов SAP Query достаточно, то можно и вовсе обойтись без программирования. А если вам справку о среднем заработке для подачи в посольство подавай, то придется напрограммировать дополнительных полей для вывода в SAP Query.

Итак, сделали отчет, запустили с выводом в ALV. Рядом с кнопочкой выгрузки в MS Excel есть кнопка выгрузки в MS Word. Нажимаем, выбираем «Обработка стандартных писем MS Word». Если создаем отчет впервые, то выбираем новый файл, если шаблон создан до этого, то выбираем имеющийся файл. В первом случае у нас откроется MS Word. Сделаем обычными средствами оформление справки, как нам нужно. На панели инструментов при этом будет отдельная строка инструментов для вставки полей. Вставляем поля в нужные нам места. Поля будут выделены серым цветом. Осталось нажать кнопочку «Слияние» и увидеть результат. Если в SAP Query у нас несколько строчек, то появятся стрелочки для «прогулок» по документу, система сама будет подставлять данные из каждой строчки в наш шаблон.



В данной колонке публикуются главы из книги "SAP HCM. Вид сбоку".

  

   

   

    

Ролевое назначение : SAP Консультант / Consultant

Ключевые слова : Управление персоналом / Human Resources

Функциональная область : Управление персоналом / HR