Pull to refresh

Подробный мануал «Как создать инфо-тип PA в SAP HR» или «Как приручить SAP?» (часть 1)

Reading time 5 min
Views 24K
imageSAP – довольно распространенная система на крупных предприятиях не только запада, но и стран постсоветского пространства. Существует много сплетен и обсуждений, как позитивных, так и негативных по поводу SAP. И негативные отзывы связаны в основном, не столько со сложностью системы, сколько с интуитивно не понятным интерфейсом и отсутствием доступной литературы (книг, инструкций) на понятном русском языке.

Этой статьей я хочу дать начало доступным инструкциям по некоторым аспектам SAP, с которыми часто возникают проблемы у начинающих SAP’ёров. Данная статья будет посвящена созданию инфо-типов администрирования персонала (PA) для модуля SAP HR. Если данная инструкция Вам понравится и будет полезна, дорогой читатель, то, надеюсь, она будет не последней.

Скоро будет год, как я работаю на должности внутреннего консультанта SAP на проекте по внедрению модуля SAP HR очень крупного предприятия в Украине. SAP изучал с нуля: «гугл», скачанные курсы и советы внешних консультантов. Поэтому в данной статье я попытаюсь пошагово и доступно показать, как создавать инфо-типы PA для таких же новичков, каким и я был год назад (хоть и сейчас тоже далеко не «гуру»).

1. Для начала запускаем транзакцию PM01 – создаем инфо-тип. Пользовательские инфо-типы требуется создавать на 9-ку (предварительно советую проверить свободный номер для инфо-типа). Также в блоке «Подобъекты» радио-кнопка должна стоять на «Структура PS». Далее нажимаем кнопку «Сгенерировать объекты».
middle
Система предлагает нам создать структуру для нашего инфо-типа. Соглашаемся.



2. Создаем нашу структуру. Стандартные поля (напр. BEGDA, PERNR) создавать не нужно, они автоматически привяжутся к инфо-типу. По рекомендации SAP поля нужно называть на ZZ*. Также определяем типы данных для наших полей согласно типов существующих полей в системе (напр. PLANS, который автоматом поставит тип данных NUMC и длиной в 8 символов), либо сами выбираем тип данных (напр. CHAR), нажав на кнопку «Тип компонента», задаем ему длину и даем краткое описание нашему полю.



Ещё один полезный совет. Если для какого-либо поля требуется средство поиска (как например стандартное средство поиска для выбора даты, при нажатии на пиктограмму, появляющуюся справа от поля), переходим на вкладку «Справка/проверка знач. ввода», где нажимаем на «ключик» и кнопку «Средство поиска». В 90% случаев требуемые средства поиска есть в стандарте, как например, поиск шт. должности по орг. структуре, как показано на скриншоте.

Активируем нашу структуру. При возникновении окошка показанного ниже не пугаемся, а нажимаем «Нет».



3. После этого нажимаем «Назад». Соглашаемся на несколько сообщений, после чего система предлагает заполнить табличку (T582A), где хранятся характеристики нашего инфо-типа. Нам нужно создать запись для своего инфо-типа, для этого советую скопировать уже существующий.



Сохраняем. Если нам потребуется изменить эти данные, то заходим в транзакцию SM30, где вызываем ракурс ведения V_T582A.

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

На этом все инструкции обычно заканчиваются, и оказывается, что у нас инфо-тип не очень и простой, и что делать далее не понятно. Так, что я продолжу углубляться в данную тему.
В транзакции PM01, в блоке подобъекты есть ещё несколько строк, которые нам понадобятся:
а) Пул модулей (MPXXXX0, где ХХХХ – наш инфо-тип), где уже сгенерированы include-программы:
— *10 – Глобальные данные;
— *20 – PBO-логика;
— *30 – PAI-логика;
— *40 – подпрограммы,
где «*» — «MPXXXX».

Нам, в основном, потребуется PBO-логика (Process Before Output) и PAI (Process After Input). В PBO описываем все, что происходит с момента запуска ИТ до вывода его на экран (например мы подтянем действующую шт. должность человека, по которому создаем ИТ в поле zzold_pos). В PAI описываем все то, что будет происходить после нажатия «Enter», когда мы уже ввели информацию (напр., если нам надо посчитать, сколько осталось времени до даты zznew_date c текущей).

б) Экран. Нам, для нашего инфо-типа, потребуется экран 2000 – это экран для ввода и просмотра, тот что появляется в транзакции PA30. 3000 – для вывода записей ИТ списком (в PA30 пиктограмма в виде «горки с солнышком». 4000 и 5000 – для быстрого и пакетного ввода ИТ. Здесь мы затронем только 2000 экран, т.к. для быстрого и пакетного ввода потребуется отдельная инструкция, и наверно в несколько раз больше этой.

5. Для начала зайдем в 2000 экран, там выбираем радио-кнопкой «Редактор форматов». В нём мы сможем «рисовать» экран нашего ИТ. У нас уже созданы все поля из созданной нами структуры. Рисуем, наводим красоту.



При выборе поля открывается ещё одно окошко, с параметрами поля. Тут есть несколько нюансов. Во-первых, заполняем атрибуты. Здесь можно настроить обязательно ли это поле для заполнения, или отметить, что это поле только для вывода, либо же сделать текст выделенным (рисует его синим). Во-вторых, первое поле напротив надписи «Группы» должно быть обязательно заполнено. Значение «006», говорит о том, что данное поле видимо всегда. «Погуглив» можно найти, какие требуется вносить значения в эти 4 поля, например, для отображения поля только после нажатия на Enter. Это очень важный момент, для созданных уже полей там будет «006», но если вы создадите новое поле, и не заполните группу, то не увидите новое поле на экране, и с этим можно долго мучаться.

Следующим шагом будет выбор радио-кнопкой строки «Логика выполнения», где мы для нашего экрана пропишем логику выполнения.
В открывшемся окне все уже сгенерировано, а нам остается только прописывать дополнительную логику. Тут тоже есть Process Before Output и Process After Input. В модуле PXXXX, где ХХХХ – наш инфо-тип, мы можем писать все, что позволяет нам ABAP. Ниже пример кода в этом модуле, где мы при создании инфо-типа по человеку подтягиваем его штатку, и из 1000 ИТ по штатной должности подтягиваем описывающий текст.

  TABLES: PA0001, HRP1000.
  DATA: FLAG(1).
  IF FLAG IS INITIAL.
  FLAG = '1'.
  SELECT SINGLE * FROM PA0001 WHERE PERNR eq P9508-PERNR
                                AND BEGDA le P9508-BEGDA
                                AND ENDDA ge P9508-BEGDA.
    MOVE PA0001-PLANS TO P9508-ZZOLD_POS.
  SELECT SINGLE * FROM HRP1000 WHERE OBJID eq PA0001-PLANS
                                 AND OTYPE eq 'S '
                                 AND BEGDA le P9508-BEGDA
                                 AND ENDDA ge P9508-BEGDA.
    MOVE HRP1000-STEXT TO P9508-ZZOLD_POS_TEXT.
  ENDIF.

Кроме того, в PAI тоже можно создать свой модуль, в котором можно описать логику, после того, как мы заполнили данные и нажали Enter.
  IF P9508-ZZOLD_POS NE PA0001-PLANS.
  SELECT SINGLE * FROM HRP1000 WHERE OBJID EQ P9508-ZZOLD_POS
                                 AND OTYPE EQ 'S '
                                 AND BEGDA LE P9508-BEGDA
                                 AND ENDDA GE P9508-BEGDA.
    MOVE HRP1000-STEXT TO P9508-ZZOLD_POS_TEXT.
  ENDIF.
  CLEAR HRP1000.
  SELECT SINGLE * FROM HRP1000 WHERE OBJID EQ P9508-ZZNEW_POS
                                 AND OTYPE EQ 'S '
                                 AND BEGDA LE P9508-BEGDA
                                 AND ENDDA GE P9508-BEGDA.
    MOVE HRP1000-STEXT TO P9508-ZZNEW_POS_TEXT.

Здесь мы смотрим, не изменили ли мы штатную должность, и читаем из 1000 ИТ описывающий текст по новой штатной должности.

Ниже скриншот, как выглядит созданный инфо-тип.



Всё, на этом создание нашего инфо-типа окончено. Старался объяснить всё как можно доступней для начинающих. Я надеюсь, что моя статья Вам пригодится. Если будут вопросы, то пишите, всегда буду рад помочь.
Tags:
Hubs:
+5
Comments 5
Comments Comments 5

Articles