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





n Наряду с подпрограммами и функциональными модулями, модули макросов - это ещё одна возможность представить программу в модульной форме. Модули макросов часто используются в Управлении персоналом.
n Код программы этих модулей записан в таблице Макросы в ABAP-программах (TRMAC). В аргументе таблицы код программы обобщается в названии.
n По правилу присвоения имен первые две буквы названия обозначают приложение. Макросы, определенные в таблице TRMAC, могут использоваться во всех отчетах без ограничений.

n Макрос RP_PROVIDE_FROM_LAST предоставляет последнюю запись данных, действительную в периоде выбора данных.
n Параметрами макроса RP_PROVIDE_FROM_LAST являются инфо-тип, подтип (если подтип не указывается, необходимо при кодировании поставить ПРОБЕЛ), даты начала и окончания.
n Аналогично последней записи можно обрабатывать первую запись данных, действительную в периоде выбора данных, с помощью макроса RP_PROVIDE_FROM_FRST.
n Эти макросы определены в программе SAPDBPNP (Include DBPNPMAC) посредством языкового элемента DEFINE. Они применимы только для тех программ, которые используют логическую базу данных PNP.

n С помощью макроса RP_SET_DATA_INTERVAL (в момент START-OF-SELECTION) достигается следующее: из таблицы базы данных PAnnnn во внутреннюю таблицу Pnnnn считываются только те записи, которые действительны в периоде выбора данных.

n Во многих случаях бывает необходимо прочитать группировки, записанные в таблице Раздел/подраздел персонала, поскольку они нужны как ключи дальнейших таблиц. Это должно происходить индивидуально для каждого обрабатываемого табельного номера.
n Для каждого сотрудника в инфо-типе 0001 записана принадлежность к разделу и подразделу персонала.
n Параметры макроса следующие:
)раздел персонала
)подраздел персонала
)реакция, если не найдена ни одна запись:
X = прерывание отчета с сообщением об ошибке “Нет записей в таблице...“
ПРОБЕЛ = SY-SUBRC устанавливается на 4.

n В некоторых исключительных случаях (например для собственных инфо-типов пользователя) может быть целесообразным создание утилит, которые изменяют данные персонала непосредственно в таблицах базы данных.
ВНИМАНИЕ! Проверка на непротиворечивость данных при этом не проводится. Необходимо параллельно обеспечить совместимость с записями таблиц. По этой причине изменения базы данных должны, как правило, проводиться с помощью пакетного ввода, поскольку при этом автоматически действуют диалоговые проверки данных!
n Изменение проходит в три этапа:
Сначала выбираются записи инфо-типов, которые необходимо изменить; затем в них выполняют изменения и вносят их в альтернативную таблицу. Затем эту таблицу сохраняют в базе данных.

n Обновление базы данных производится при помощи макроса RP-UPDATE. В качестве параметров указывается внутренняя таблица OLD со старыми записями (до изменений) и внутренняя таблица NEW, содержащая измененные записи.
n Этот макрос вызывает подпрограмму обновления файла данных персонала.
n Изменения ключей, например добавление или удаление данных, невозможны.

n Записи инфо-типа для табельного номера можно считывать и без логической базы данных.
n В этом случае может быть использован функциональный модуль HR_READ_INFOTYPE. Однако для этого необходимо, чтобы внутренняя таблица требуемого инфо-типа была определена посредством оператора INFOTYPE.

n Функциональный модуль считывает записи инфо-типа HR по отдельному лицу (сотруднику или кандидату) согласно заданным критериям выбора. Возврат выполняется во внутренней таблице, которая по своей структуре соответствует таблице инфо-типа (в вызывающей программе такую таблицу можно определить, например, с помощью оператора INFOTYPES). Отбираются те записи инфо-типа, у которых интервал действия пересекается с заданным интервалом.
n Функциональный модуль проводит проверку полномочий.
n Коды возврата могут иметь следующие значения:
n 0: таблица возврата содержит все запрошенные записи;
n 4: таблица возврата содержит не все записи из-за недостатка полномочий;
n 8: таблица возврата пустая, поскольку по заданным критериям не найдена ни одна запись;
n 12: таблица возврата пустая из-за недостатка полномочий.





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

n При проверке полномочий на сотрудников система в момент GET PERNR проверяет по всем выбранным сотрудникам, имеет ли пользователь полномочия, необходимые для организационных признаков этих сотрудников.
n Сотрудники, на которых пользователь не имеет полномочий, при анализе пропускаются и выводятся в контрольном списке в конце отчета.
n Основой проверки полномочий, так же как и для ввода данных, является объект HR: основные данные в классе Управление персоналом.

n При проверке полномочий на данные система проверяет, имеет ли пользователь полномочия на все инфо-типы, используемые в отчете.
n Если полномочия на какой-нибудь инфо-тип отсутствуют, то анализ прерывается и выдается сообщение об ошибке.

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

n Проверка полномочий не поддерживается оператором SELECT. Она должна проводиться на уровне программы.
n Оператор AUTHORITY-CHECK проверяет для объекта, имеет ли пользователь полномочия, которые содержат все значения.
n При этом должно быть задано значение для каждого поля (идентификатор) объекта полномочий (или DUMMY).
n SAP рекомендует использовать логическую базу данных PNP, поскольку она автоматически выполняет проверку полномочий.




n Если используется оператор PROVIDE, то при выводе списка период действия записей инфо-типов ограничивается тем периодом выбора данных, который задан на экране выбора.
n В связи с временной привязкой инфо-типов обработка временных данных имеет некоторые особенности. Ракурсы для временных данных, как правило, нецелесообразны, поскольку для временных инфо-типов данные определяются на основании периода действия.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 |


