Добавление фотографии работника при работе в транзакции PPOME

Мне всегда казалось несправедливым, и, если угодно, несколько непродуманным решением SAP, заключающимся в предоставлении стандартной возможности просмотра фотографии работника исключительно в транзакциях PA20/PA30/PA40, при этом отсутствии аналогичной опции в другой, не менее часто используемой транзакции с техническим идентификатором PPOME. В данной заметке я растекусь по древу на тему: добавление фотографии работника при работе в транзакции PPOME.

Вступление

В начале этой заметки я написал, что в транзакции PPOME нет возможности просмотра фотографии работника, что, если быть придирчивым, конечно же, не совсем правда.

См. Storage in Personnel Administration (PA-PA)

Консультант по всей видимости знает, что фотографию работника можно-таки посмотреть, предварительно выбрав в структуре интересующий его объект P - «Person», и выполнив в контекстном меню команду Goto -> Detail Object -> Enhanced object description

Постановка задачи на реализацию

Допускаем, что фотография работника также интересна и, что немаловажно, необходима для отображения тем группам бизнес-пользователей, которые работают в транзакции PPOME. А выполнять длинную цепочку с выбором объекта и перехода в транзакцию PA20/PA30 - им совершенно не хочется проделывать.

Задача: обеспечить отображение фотографии работника в транзакции PPOME.

Что будет сделано

Для решения поставленной выше задачи я выбрал следующий подход:

  • Создание нового OM инфо-типа
  • Создание новой группы функций и подэкрана для нового OM инфо-типа
  • Добавление ABAP кода по считыванию и отображению фотографии работника в новом инфо-типе
  • Создание новой закладки для отображения в транзакции PPOME (сценарий OME0)
    Хранение фотографии в рамках примера, рассматриваемого в этой заметке, осуществляется посредством стандартного инструмента ArchiveLink (бизнес объект PREL, вид документа HRICOLFOTO)
См. заметку Как массово загрузить фотографии сотрудников в ArchiveLink?

Шаг 1. Создание OM инфо-типа

На следующем видеофрагменте представлена последовательность действий по созданию OM инфо-типа

См. заметку Создание OM инфо-типа
0:00
/2:19

Шаг 2. Создание группы функций и подэкрана для OM инфо-типа

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

См. Subscreens
0:00
/1:56

Шаг 3. Определение правил считывания фотографии работника для подэкрана

На следующем видеофрагменте ничего нового, кроме нескольких строк не очень качественного ABAP-кода. Берегите свои глазки! 

См. заметку Как отобразить фотографию в пользовательском инфо-типе?
0:00
/0:43

Соответствующий код, от которого нужно беречь глазки

DATA:
    lv_orgobject TYPE  objec,
    lv_pernr     TYPE  p_pernr,
    sv_handle    TYPE i.
 
  CALL FUNCTION 'NF_EM_GET_LAST_OTYPE_OBJECT'
    EXPORTING
      otype     = 'P'
    IMPORTING
      orgobject = lv_orgobject
*   EXCEPTIONS
*     NOT_EXIST = 1
*     OTHERS    = 2
    .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
 
  CALL FUNCTION 'HR_IMAGE_RESET'
    EXPORTING
      handle = sv_handle
    EXCEPTIONS
      OTHERS = 0.
  lv_pernr = lv_orgobject.
 
  CALL FUNCTION 'HR_IMAGE_INIT'
    EXPORTING
      p_pernr        = lv_pernr
      begda          = '19000101'
      endda          = '99991231'
      container      = 'GV_PHOTO'
    IMPORTING
      handle         = sv_handle
    EXCEPTIONS
      no_document    = 1
      internal_error = 2
      OTHERS         = 3.
  IF sy-subrc <> 0.
    CLEAR sv_handle.
  ENDIF.

Шаг 4. Создание новой закладки и определение ее для сценария транзакции PPOME

Небезызвестный всем кластер ракурсов T77FRAMEWORK в котором требуется определить новую закладку, и затем присвоить ее соответствующему сценарию OME0, используемому в транзакции PPOME.

0:00
/1:01

Шаг 5. Тестирование

Теперь можно попытаться подписать сценарий тестирования у пользователя.

0:00
/1:02