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

Вместо вступления

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

 

Для демонстрации того, что из себя представляет документ оценки изнутри, я буду использовать формуляр документа оценки со следующей структурой:

Рисунок 1.

Итого, в формуляре три вложенных элемента, два из которых - Группа критериев (VB), один - _Критерий _(VC).

Рисунок 2.

На уровне формуляра я определил следующие столбцы:

Рисунок 3.

На уровне группы критериев с наименованием Group of Elements определено стандартное свободно определяемое расширение ADD_JOB_FAMILY (с помощью этого расширения в документ оценки можно добавить объект типа JF)

Рисунок 4.

В качестве ссылочного элемента, который будет добавляться в группу критериев через свободно определяемое расширение, определен элемент VC с наименованием Reference Element for VB 50071448. Для него определены следующие столбцы:

Рисунок 5.

Для другой группы критериев, наименование которой Group of Elements - 2 определено свободно определяемое расширение ADD_QUALIFICATION (с помощью этого расширения в документ оценки можно добавить объект типа Q)

Рисунок 6.

В качестве ссылочного элемента, который будет добавляться в группу критериев через свободно определяемое расширение, определен элемент VC с наименованием Reference Element for VB 50071449. Для него определены следующие столбцы:

Рисунок 7.

Также я добавил стандартное расширение PERSONNEL_HEADER_DATA BAdI HRHAP00_ADD_HEADER, с помощью которого, в момент создания документа оценки считывается дополнительная информация по оцениваемому сотруднику, и сохраняется в его документе оценки

Рисунок 8.

Теперь необходимо создать документ оценки, наполнить его какими-нибудь данными, и начать разбор его внутренностей. Для создания документа оценки я воспользуюсь хорошо знакомой транзакцией PHAP_CREATE. После заполнения столбцов документа какими-то данными, он выглядит следующим образом

Рисунок 9.

Обратите внимание на значок вида anatomy10.

Данная пиктограмма, по сравнению с значком anatomy11, означает, что в столбец занесена заметка

Рисунок 10.

Документ оценки. Вид изнутри

Чтобы начать рассматривать рентген созданного документа оценки, необходимо воспользоваться функциональным модулем HRHAP_DOCUMENT_GET_DETAIL, передав на вход в документ оценки S_APPRAISAL_ID, а также значение PLAN_VERSION

Запуск функциональных модулей выполняется с помощью транзакции SE37

Рисунок 11.

N.B. Узнать идентификатор (S_APPRAISAL_ID) документа оценки можно с помощью транзакции PHAP_ADMIN, добавив на вывод столбец Appraisal Document ID в шаблоне вывода ALV

Рисунок 12.

Итак, перед нами документ оценки, разложенный по полочкам, где каждая полочка - это таблица блока Export parameters

Рисунок 13.

Ниже я рассмотрю основные параметры экспорта этого ФМ.

1. Параметр S_HEADER_TEXTS

Основные тексты, относящиеся и используемые в документе оценки:

  • Наименование формуляра
  • Наименование проводящего оценку / оцениваемого
  • Наименование периодов оценки

Рисунок 14.

В целом, не очень полезная информация, но может быть использована для каких-нибудь отчетиков, в которых данная информация может быть востребована.

2. Параметр T_HEADER_APPRAISER

Основная информация по проводящему оценку:

  • Тип объекта
  • Идентификатор объекта
  • Фамилия/Имя

Рисунок 15.

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

3. Параметр T_HEADER_APPRAISEE

Основная информация по оцениваемому сотруднику:

  • Тип объекта
  • Идентификатор объекта
  • Фамилия/Имя

Рисунок 16.

По аналогии с параметром #2 T_HEADER_APPRAISER информация может быть задействована в различных проверках.

4. Параметр T_HEADER_PART_APPRAISER

Информация по отдельным участникам оценки, которые принимают в ней участие. Используется для оценки 360 градусов. Предполагает хранение следующей информации:

Рисунок 17.

5. Параметр T_HEADER_OTHERS

Информация по оставшимся участникам оценки.

6. Параметр S_HEADER_STATUS

Информация по текущему статусу/подстатусу документа оценки

Рисунок 18.

7. Параметр S_HEADER_DATES

В данном параметре отображаются все используемые даты документа оценки. Например:

  • Период оценки
  • Период действия оценки
  • Другие даты, предусмотренные в настройках формуляра документа оценки

Рисунок 19.

8. Параметр T_HEADER_ADD_DATA

Данный параметр полностью используется расширением PERSONNEL_HEADER_DATA BAdI HRHAP00_ADD_HEADER, с помощью которого происходит считывание дополнительной информации по оцениваемому сотруднику.

Рисунок 20.

Хотите держать какую-либо специфичную информацию по оцениваемому сотруднику? BAdI и данный параметр придут вам на помощь. Правда стоит помнить о том, что реализация это BAdI начинает считывать информацию по сотруднику при каждом открытии документа оценки, что может быть не очень удобно в различных бизнес сценариях.

9. Параметр T_BUTTONS

Тут все просто и понятно. Кнопки, их наименования, пиктограммы, а также доступность на данном статусе/подстатусе

Рисунок 21.

10. Параметр T_BODY_COLUMNS

Приближаемся к самому интересному. Столбцы. По данным, хранящимся в данном параметре, консультанту бывает очень часто нужно узнать идентификатор того или иного столбца. Под идентификатором я понимаю числовое значение (COLUMN_IID). Соответственно значение COLUMN_IID считывается по наименованию столбца, которое в этом параметре представлено в виде COLUMN_ID

Рисунок 22.

В данном примере, столбцу Final Rating** (COLUMN_ID = Z013)** присвоено значение COLUMN_IID = 0005

11. Параметр T_BODY_ELEMENTS

Святая святых. Структура элементов нашего/вашего документа оценки.

Рисунок 23.

На что стоит обратить внимание? Для начала на самый первый столбец (ROW_IID)

Рисунок 24.

Нумерация значений ROW_IID из данного примера явно указывает на то, что номера элемента система присваивает последовательно: в момент создания документа оценки, и после добавления новых элементов (в моем случае это критерии, добавленные в соответствующие группы критериев). Итого,

  1. Элементы со значением ROW_IID = 0001, 0002, 0003, 0004 полностью соответствуют первоначальной структуре формуляра

  2. Элементы со значением ROW_IID = 0005, 0006, 0007 были добавлены уже после того, как тело документа оценки было изменено (в нашем случае - добавлены новые элементы)
    Для элемента со значением _ROW_IID = 0005 _можно определить:

  3. Его родительский элемент (то есть физически этот элемент является вложенным). Родительский элемент определяется по значению PARENT, которое в данном случае равно _0002. _Ищем в первом столбце (ROW_IID) значение 0002, и определяем родительский элемент: VB - Group of Elements

  4. Тип добавленного элемента. Обратите внимание на поле 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

Рисунок 25.

13. Параметр T_BODY_ELEMENT_DESCR

Обычно используется для хранения текстового описания элемента, используемого в документе оценки. Приведу пример такого текстового описания с точки зрения транзакции PHAP_CATALOG

Рисунок 26.

А вот как этот же текст смотрится на самом верхнем элементе, то есть на элементе с ROW_IID = 0001

Рисунок 27.

14. Параметр T_BODY_CELLS

Ячейки. Здесь хранится информация по значениям, которые были добавлены на пересечении элемента документа оценки и столбца. Рассмотрим добавленный элемент 1.1 Business and Financial Operations

Рисунок 28.

По таблице параметров T_BODY_ELEMENTS (см. описание параметра в пункте 11. Параметр T_BODY_ELEMENTS), ему присвоено значение ROW_IID = 0005

Рисунок 29.

Теперь посмотрим на столбцы, которые определены для данного элемента:

Рисунок 30.

Четыре столбца:

  • OBJ0 - Objective Setting
  • OBJB - Start Date
  • OBJE - End Date
  • FAPP - Final Appraisal

Смотрим значение COLUMN_IID в таблице параметров  T_BODY_COLUMNS

Рисунок 31.

Значения COLUMN_IID = 0001, 0002, 0003, 0004

Возвращаемся к  T_BODY_CELLS. Находим строки с ROW_IID = 0005, и обращаем внимание на столбец COLUMN_IID со выше указанными значениями, расположенный рядом

Рисунок 32.

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

15. Параметр T_BODY_CELL_VAL_VALUES

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

Рисунок 33.

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

Рисунок 34.

18. Параметр T_BODY_CELL_NOTES

Все заметки к столбцам хранятся в этом параметре. В качестве ключевых полей также используются ROW_IID и COLUMN_IID, к которому была оставлена заметка

Рисунок 35.

Более тут добавить нечего.

Резюме

Я вкратце рассмотрел основные параметры документа оценки, которые можно получить с помощью функционального модуля HRHAP_DOCUMENT_GET_DETAIL. Также нужно отметить, что это основной ФМ, с помощью которого можно выудить информацию из документа оценки для последующей обработки. Пишите ли вы спецификацию, или пытаетесь понять поведение документа оценки в зависимости от каких-либо условий, основные данные в этом нетривиальном, с первого взгляда, процессе: порядковый номер элемента (ROW_IID) и столбец (COLUMN_IID), которому присвоено какое-либо значение. Остальное - дело техники, и четкости в постановке задачи программисту. Надеюсь, что вся эта информация была полезной.