Записки о модуле Human Resources системы SAP® ERP. Оперативная отчетность (SAP Query)
Что такое оперативная отчетность? В моем представлении это та отчетность, которая может потребоваться оперативно – быстро, сейчас.
Давайте определимся, что такое оперативная отчетность, о которой так часто говорят консультанты. В моем представлении это та отчетность, которая может потребоваться оперативно – быстро, сейчас. Как правило, это списки, которые просят создать руководители для своих нужд. Список дней рождений, список отсутствующих, список окладов и так далее. Доступа к таблицам у пользователей нет, а потребность в разносторонней информации есть.
Для удовлетворения этой потребности компания 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 Особые инфотипы заработной
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти