Анатомия документа оценки
В данной заметке будет все многое из того, что вы так давно хотели узнать о внутренностях документа оценки, но боялись спросить. Встречайте, Анатомия документа оценки.
Вместо вступления
Задача: рассмотреть что предсталяет собой документ оценки после того, как в него были внесены данные пользователем + понять как эти данные физически располагаются в таблицах.
Для демонстрации того, что из себя представляет документ оценки изнутри, я буду использовать формуляр документа оценки со следующей структурой:
Итого, в формуляре три вложенных элемента, два из которых - Группа критериев (VB), один - _Критерий _(VC).
На уровне формуляра я определил следующие столбцы:
На уровне группы критериев с наименованием Group of Elements определено стандартное свободно определяемое расширение ADD_JOB_FAMILY (с помощью этого расширения в документ оценки можно добавить объект типа JF)
В качестве ссылочного элемента, который будет добавляться в группу критериев через свободно определяемое расширение, определен элемент VC с наименованием Reference Element for VB 50071448. Для него определены следующие столбцы:
Для другой группы критериев, наименование которой Group of Elements - 2 определено свободно определяемое расширение ADD_QUALIFICATION (с помощью этого расширения в документ оценки можно добавить объект типа Q)
В качестве ссылочного элемента, который будет добавляться в группу критериев через свободно определяемое расширение, определен элемент VC с наименованием Reference Element for VB 50071449. Для него определены следующие столбцы:
Также я добавил стандартное расширение PERSONNEL_HEADER_DATA BAdI HRHAP00_ADD_HEADER, с помощью которого, в момент создания документа оценки считывается дополнительная информация по оцениваемому сотруднику, и сохраняется в его документе оценки
Теперь необходимо создать документ оценки, наполнить его какими-нибудь данными, и начать разбор его внутренностей. Для создания документа оценки я воспользуюсь хорошо знакомой транзакцией PHAP_CREATE. После заполнения столбцов документа какими-то данными, он выглядит следующим образом
Обратите внимание на значок вида
Данная пиктограмма, по сравнению с значком
Документ оценки. Вид изнутри
Чтобы начать рассматривать рентген созданного документа оценки, необходимо воспользоваться функциональным модулем HRHAP_DOCUMENT_GET_DETAIL, передав на вход в документ оценки S_APPRAISAL_ID, а также значение PLAN_VERSION
Запуск функциональных модулей выполняется с помощью транзакции SE37
N.B. Узнать идентификатор (S_APPRAISAL_ID) документа оценки можно с помощью транзакции PHAP_ADMIN, добавив на вывод столбец Appraisal Document ID в шаблоне вывода ALV
Итак, перед нами документ оценки, разложенный по полочкам, где каждая полочка - это таблица блока Export parameters
Ниже я рассмотрю основные параметры экспорта этого ФМ.
1. Параметр S_HEADER_TEXTS
Основные тексты, относящиеся и используемые в документе оценки:
- Наименование формуляра
- Наименование проводящего оценку / оцениваемого
- Наименование периодов оценки
В целом, не очень полезная информация, но может быть использована для каких-нибудь отчетиков, в которых данная информация может быть востребована.
2. Параметр T_HEADER_APPRAISER
Основная информация по проводящему оценку:
- Тип объекта
- Идентификатор объекта
- Фамилия/Имя
Использование данной информации может быть использовано в различных ситуациях. Например, нужно определить, может ли быть данный сотрудник оценивающим на такую-то дату, либо нет. В зависимости от алгоритмов, которые необходимо реализовать, информация из данного параметра может активно быть использована в программе создания документов оценки, и других местах, где может потребоваться какая-либо дополнительная проверка.
3. Параметр T_HEADER_APPRAISEE
Основная информация по оцениваемому сотруднику:
- Тип объекта
- Идентификатор объекта
- Фамилия/Имя
По аналогии с параметром #2 T_HEADER_APPRAISER информация может быть задействована в различных проверках.
4. Параметр T_HEADER_PART_APPRAISER
Информация по отдельным участникам оценки, которые принимают в ней участие. Используется для оценки 360 градусов. Предполагает хранение следующей информации:
5. Параметр T_HEADER_OTHERS
Информация по оставшимся участникам оценки.
6. Параметр S_HEADER_STATUS
Информация по текущему статусу/подстатусу документа оценки
7. Параметр S_HEADER_DATES
В данном параметре отображаются все используемые даты документа оценки. Например:
- Период оценки
- Период действия оценки
- Другие даты, предусмотренные в настройках формуляра документа оценки
8. Параметр T_HEADER_ADD_DATA
Данный параметр полностью используется расширением PERSONNEL_HEADER_DATA BAdI HRHAP00_ADD_HEADER, с помощью которого происходит считывание дополнительной информации по оцениваемому сотруднику.
Хотите держать какую-либо специфичную информацию по оцениваемому сотруднику? BAdI и данный параметр придут вам на помощь. Правда стоит помнить о том, что реализация это BAdI начинает считывать информацию по сотруднику при каждом открытии документа оценки, что может быть не очень удобно в различных бизнес сценариях.
9. Параметр T_BUTTONS
Тут все просто и понятно. Кнопки, их наименования, пиктограммы, а также доступность на данном статусе/подстатусе
10. Параметр T_BODY_COLUMNS
Приближаемся к самому интересному. Столбцы. По данным, хранящимся в данном параметре, консультанту бывает очень часто нужно узнать идентификатор того или иного столбца. Под идентификатором я понимаю числовое значение (COLUMN_IID). Соответственно значение COLUMN_IID считывается по наименованию столбца, которое в этом параметре представлено в виде COLUMN_ID
В данном примере, столбцу Final Rating** (COLUMN_ID = Z013)** присвоено значение COLUMN_IID = 0005
11. Параметр T_BODY_ELEMENTS
Святая святых. Структура элементов нашего/вашего документа оценки.
На что стоит обратить внимание? Для начала на самый первый столбец (ROW_IID)
Нумерация значений ROW_IID из данного примера явно указывает на то, что номера элемента система присваивает последовательно: в момент создания документа оценки, и после добавления новых элементов (в моем случае это критерии, добавленные в соответствующие группы критериев). Итого,
-
Элементы со значением ROW_IID = 0001, 0002, 0003, 0004 полностью соответствуют первоначальной структуре формуляра
-
Элементы со значением ROW_IID = 0005, 0006, 0007 были добавлены уже после того, как тело документа оценки было изменено (в нашем случае - добавлены новые элементы)
Для элемента со значением _ROW_IID = 0005 _можно определить: -
Его родительский элемент (то есть физически этот элемент является вложенным). Родительский элемент определяется по значению PARENT, которое в данном случае равно _0002. _Ищем в первом столбце (ROW_IID) значение 0002, и определяем родительский элемент: VB - Group of Elements
-
Тип добавленного элемента. Обратите внимание на поле FOREIGN_TYPE, в котором сейчас присвоено значение JF. Таким образом, можно определять типы добавляемых элементов в документе оценки, а также их идентификаторы.
Для элемента со значением ROW_IID = 0006 ситуация аналогичная элементу со значением ROW_IID = 0005 за одним исключением, что тип объекта - Q.
Здесь же мы можем найти наименования расширений, определенных на элементах документа оценки. Посмотрите внимательно еще раз на Рисунок 23. Уверен, что, присмотревшись, и на некоторое время забыв о том, что вы только что прочитали, структура данного параметра станет понятна.
Очень часто данный параметр (T_BODY_ELEMENTS) используется функциональными консультантами для того, чтобы определить на каком элементе документа оценки будет необходимо произвести какое-либо вычисление. Из всех числовых значений, важным здесь безусловно является ROW_IID. Дальше я поясню почему.
12. Параметр T_BODY_ELEMENT_BUTTONS
Какие кнопки доступны на каких элементах, где в качестве элементов выступают оговоренные выше элементы с ROW_IID. В нашем формуляре мы определили два свободно определяемых расширения по добавлению новых критериев для элементов с ROW_IID = 0002 и 0003
13. Параметр T_BODY_ELEMENT_DESCR
Обычно используется для хранения текстового описания элемента, используемого в документе оценки. Приведу пример такого текстового описания с точки зрения транзакции PHAP_CATALOG
А вот как этот же текст смотрится на самом верхнем элементе, то есть на элементе с ROW_IID = 0001
14. Параметр T_BODY_CELLS
Ячейки. Здесь хранится информация по значениям, которые были добавлены на пересечении элемента документа оценки и столбца. Рассмотрим добавленный элемент 1.1 Business and Financial Operations
По таблице параметров T_BODY_ELEMENTS (см. описание параметра в пункте 11. Параметр T_BODY_ELEMENTS), ему присвоено значение ROW_IID = 0005
Теперь посмотрим на столбцы, которые определены для данного элемента:
Четыре столбца:
- OBJ0 - Objective Setting
- OBJB - Start Date
- OBJE - End Date
- FAPP - Final Appraisal
Смотрим значение COLUMN_IID в таблице параметров T_BODY_COLUMNS
Значения COLUMN_IID = 0001, 0002, 0003, 0004
Возвращаемся к T_BODY_CELLS. Находим строки с ROW_IID = 0005, и обращаем внимание на столбец COLUMN_IID со выше указанными значениями, расположенный рядом
Не буду подробно останавливаться на каждом значении, которое представлено в данном параметре. Ограничусь лишь тем, что здесь вы можете прочитать все то, что было введено пользователем, и решить, что делать с этими данными. Например, при написании функциональной спецификации программисту может потребоваться информация о том, на каком элементе для каких столбцов необходимо прочитать значения, для того, чтобы произвести математическую операцию (допустим, посчитать среднюю оценку). Обратите внимание на то, что заметки в данном параметре прочитать нельзя. О них речь пойдет ниже.
15. Параметр T_BODY_CELL_VAL_VALUES
В данном параметре можно получить информацию о том, какие значения по шкале, присвоены на элементе документа оценки. При настройке формуляра с помощью транзакции PHAP_CATALOG вы определяете шкалу для столбца, по которой пользователь сможет выбрать значение
В параметре T_BODY_CELL_VAL_VALUES вы можете их считать для каждого из используемых ROW_IID элемента
18. Параметр T_BODY_CELL_NOTES
Все заметки к столбцам хранятся в этом параметре. В качестве ключевых полей также используются ROW_IID и COLUMN_IID, к которому была оставлена заметка
Более тут добавить нечего.
Резюме
Я вкратце рассмотрел основные параметры документа оценки, которые можно получить с помощью функционального модуля HRHAP_DOCUMENT_GET_DETAIL. Также нужно отметить, что это основной ФМ, с помощью которого можно выудить информацию из документа оценки для последующей обработки. Пишите ли вы спецификацию, или пытаетесь понять поведение документа оценки в зависимости от каких-либо условий, основные данные в этом нетривиальном, с первого взгляда, процессе: порядковый номер элемента (ROW_IID) и столбец (COLUMN_IID), которому присвоено какое-либо значение. Остальное - дело техники, и четкости в постановке задачи программисту. Надеюсь, что вся эта информация была полезной.