Ещё по теме

Комментарии по теме

«Настройка экрана инфо-типа «Основные выплаты (0008)»»
Олег Точенюк:
Все конечно интересно, только одна незадача, пользователи обычно имеют доступ к ведению собственных параметров, а это значит, что никто им не помешает поменять в случае чего 99 на 33 или обратно.
«Как эффе­кти­вно испо­льзо­ва­ть инфотипы пла­ни­ру­е­мо­го во­зна­гра­жде­ния для по­стро­е­ния стратегии во­зна­гра­жде­ний»
Юрий Щербаков:
В статье достаточно подробно и, в то же время, компактно описано назначение инфо-типа 1005 (Нормативная оплата), используемого для штатных должностей (объекты типа S). Примечание: Из этих объектов...

База знаний

Чтение данных инфотипа с помощью стандартных классов и методов

574

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

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

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

ABAP классы и методы могут быть использованы как для чтения так и изменения данных, находящихся в инфотипах. Подробный обзор ABAP objects выходит за рамки этой статьи. Подробнее классы и методы в ABAP, описаны по ссылке (web-адр. 1):

https://help.sap.com/saphelp_nw70/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm?frameset=/en/48/4aad83b75211d194f50000e8353423/frameset.htm&current_toc=/en/d3/2e974d35c511d1829f0000e829fbfe/                                                                                    plain.htm&node_id=424&show_children=false

Web-адр. 1. Подробный обзор классов и методов ABAP objects

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

Примечание.

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

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

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

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

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

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

Примечание.

Начальный метод фабрики (factory method) является одинаковым для вызовов методов READ и READ_SINGLE интерфейса IF_HRPA_READ_INFOTYPE.

Другим важным классом, необходимым для корректного чтения данных, является класс CL_HR_PNNNN_TYPE_CAST. Он преобразует внутреннею таблицу общего типа в значимую и понятную форму конкретного инфотипа, данные которого разработчикам необходимо считать. Также обратим внимание на класс CL_HRPA_TEXT_CLUSTER, который предоставляет полезный метод READ для чтения длинных текстов, хранимых для конкретной записи инфотипа. (Для более подробной информации о необходимых шагах, которые нужно выполнить до выполнения операции чтения, смотрите блок «Получение обработчика по чтению»).

Получение обработчика по чтению

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

Как только Вы познакомились с методами интерфейса и факторным методом (factory method), требуемым для чтения, Вы можете написать код программы для чтения. Для простоты, сначала давайте рассмотрим, как читать набор записей из инфотипа. В качестве примера, давайте прочитаем данные из инфотипа 22 (Данные об образовании — Education details).

На первом шаге вызываем метод GET_INSTANCE класса CL_HRPA_READ_INFOTYPE, как показано на рис. 1.

Рис. 1. Получение инстанции для обработчика чтения

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

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

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

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

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

Рис. 4. Данные внутренней таблицы IT_GENERIC_DATA

Как можно увидеть, все поля с данными хранятся вместе в одним поле, DATA1, внутренней таблицы IT_GENERIC_DATA. Это не совсем подходит, так как Вы не можете сопоставить конкретное поле инфотипа 22 с конкретными данными.

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

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

Вы хотели бы увидеть полную версию статьи?

Если вы являетесь подписчиком журнала SAP Professional Journal, пожалуйста, авторизируйтесь на сайте.

Если вы хотите подписаться на журнала SAP Professional Journal, пожалуйста, обратитесь в редакцию или сделайте заказ на сайте.

Правила получения тестового доступа к статьям SAP Professional Journal


Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП» Copyright © 2010 Wellesley Information Services. All rights reserved.