Меню

Как считывать данные из инфотипов, используя стандартные классы и методы

|

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

Ключевое понятие

Объекты ABAP, глобальные интерфейсы ведутся с помощью кода транзакции SE24. В стандартных классах могут реализовываться эти интерфейсы. Любые методы, которые содержатся в реализованных интерфейсах, можно вызвать с помощью объектов этих классов.

Умение извлекать данные из различных инфотипов является существенным требованием для разработчиков SAP ERP HCM. Как правило, требуется в программах отчетов, которые пользователи HCM могут запросить, чтобы видеть данные из одного или нескольких инфотипов сотрудника. SAP предоставляет ряд полезных классов и методов для этой цели. Благодаря легкости и надежности, с которой данные из стандартных и пользовательских инфотипов можно считать в ABAP-программах, знание этих способов имеет важное значение для разработчиков SAP. Более того, использование этого объектно-ориентированного подхода рекомендуется в большей степени, чем использование других методов, таких как использование функциональных модулей или устаревших форм оператора IMPORT.

ABAP классы и методы доступны как для чтения, так и для изменения данных в инфотипах. Подробное обсуждение объектов ABAP выходит за рамки данной статьи. Более подробную информацию о классах и объектах в ABAP можно узнать здесь.

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

Примечание

Основная аудитория для этой статьи SAP HR разработчики и пользователи. Я показываю примеры кода программ и скриншоты, чтобы проиллюстрировать свой подход. Читатели могут легко адаптировать примеры программ, используемые в этой статье, чтобы удовлетворить под их текущие требования.

Классы и интерфейсы для доступа к данным инфотипа

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

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

Интерфейс IF_HRPA_READ_INFOTYPE является одним из наиболее важных. Необходимые методы этого интерфейса и их предназначение приведены в табл. 1.

Табл. 1. Метод интерфейса IF_HRPA_READ_INFOTYPE 

Примечание

Исходный фабричный метод является одинаковым для вызова методов READ и READ_SINGLE интерфейса IF_HRPA_READ_INFOTYPE.


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

Чтение набора записей из инфотипа

После того, как вы ознакомились с интерфейсными и фабричными методами, необходимыми для считывающего данные обработчика, можно создать код для программы чтения инфотипа. Для простоты, давайте сначала рассмотрим, как прочитать набор записей, хранящихся в инфотипе. В качестве примера, давайте считывать данные из ИТ 0022-Образование. Первый шаг для извлечения набора записей в заданном периоде дат для конкретного табельного номера сотрудника:

Первый шаг заключается в вызове метода GET_INSTANCE класса CL_HRPA_READ_INFOTYPE, как показано на рис. 1.

Рис. 1. Создание обработчика чтения данных инфотипа

В этом случае используется метод READ (с переменной READING_HANDLE) интерфейса
IF_HRPA_READ_INFOTYPE для чтения набора записей из базы данных. Параметры метода READ показаны на рис. 2.

Рис. 2. Параметры метода READ

Обратите внимание, что этот метод имеет ряд обязательных и дополнительных параметров. Код для считывания данных из инфотипа 0022 показан на рис. 3.

Рис. 3. Вызов метода READ

Здесь вы считываете все записи в инфотипе 0022, для работника с табельным номером 1273, которые действительны на период с 01.01.1990 по 22.09.2015. После того, как отработал метод READ, данные возвращаются во внутреннюю таблицу IT_GENERIC_TABLE. (Это определяется на основе словаря типа таблицы HRPAD_PRELP_TAB.) Эти данные представлены еще не в очень полезной или понятной форме, как показано на рис. 4.

Рис. 4. Данные таблицы IT_GENERIC_DATA

Как вы видите, здесь, все поля данных хранятся вместе в одном поле data1, из внутренней таблицы IT_GENERIC_DATA. Этого недостаточно, так как вы не можете сказать, какие актуальные данные соответствуют полям в инфотипе 0022.

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

Для того, чтобы преобразовать данные в понятную форму, используйте статический метод PRELP_TO_PNNNN_TAB из класса CL_HR_PNNNN_TYPE_CAST (рис. 5).

Рис. 5. Конвертирование общих данных в формат, зависимый от инфотипа

Оформите подписку sappro и получите полный доступ к материалам SAPPRO

У вас уже есть подписка?

Войти