28 сентября 2011 г.

Изменения объектов в SAP системе. Часть I.

Вся функциональность SAP системы, за исключением SAP-ядра (поставляется в бинарных файлах), написана на языке ABAP (или JAVA). Все коды программ хранятся в базе данных системы и открыты для просмотра. В системе есть две области имен: область имен клиента (объекты начинающиеся с символов Z и Y) и область имен SAP (область стандартных объектов; объекты начинающиеся с остальных символов).
Для того, чтобы пользователь смог создавать (а в последующем и редактировать) объекты в области имен клиента, он должен иметь:
  1. соответствующие полномочия на разработку в системе,
  2. ключ разработчика (developer key).
С первым пунктом все понятно - нужен набор полномочий для работы с транзакциями SE37, SE38, SE80, SE11 и т.п. Остановимся на втором пункте. При попытке создать новый объект SAP система выдает запрос вида:


Начиная с SAP системы версии 3.0A, SAP отслеживает изменения, вносимые в систему. Это называется - SAP SOFTWARE CHANGE REGISTRATION (SSCR). И одна из частей этой системы регистрации изменений - это отслеживание всех разработчиков клиента.

Осуществляется это через ключ разработчика, который состоит из 20 цифр и запрашивается в соответствующей части SAP Support Portal (quick link - http://service.sap.com/sscr). Для получения необходимо войти под S-user'ом клиента и запросить ключ, указав номер инсталляции и ID пользователя. При введении ключа в поле "Ключ доступа" в диалоговом окне и нажатии "Дальше", SAP система проверяет корректность ключа, запуская C-программу SAP-ядра "CHECK_DEVELOPER_KEY", и в случае прохождения проверки, вносит ключ и ID разработчика в таблицу DEVACCESS. После этого пользователь с данным ID зарегистрирован в системе, как разработчик, и может, при желании, создавать/редактировать объекты в области имен клиента.

Повторная проверка происходит так: SAP система проверяет наличие ключа разработчика для данного ID пользователя в таблице DEVACCESS, проверяет корректность данного ключа, с помощью все той же "CHECK_DEVELOPER_KEY", и если все верно, то пользователю предоставляется доступ к ABAP-редактору в режиме редактирования (диалоговое окно с запросом ключа разработчика в данном случае не выдается). Если ключ не прошел проверку на корректность, то система просит ввести его заново.

Список зарегистрированных в системе разработчиков можно увидеть, просмотрев содержимое таблицы DEVACCESS в транзакции SE16. Список всех запрошенных ключей разработчиков для данной инсталляции SAP системы можно увидеть на SAP Support Portal (quick link - http://service.sap.com/sscr). SAP AG отслеживает количество ключей разработчиков, так как это ограничено пакетом лицензий.

Бывают ситуации, когда необходимо удалить записи из таблицы DEVACCESS. Например, когда пользователь, который был зарегистрирован в системе как разработчик, удаляется из системы. Или когда обнаруживается система (тестовая, продуктивная), где не должно быть ни одного разработчика, с не пустой таблицей DEVACCESS. Сделать это можно несколькими способами.

Если надо очистить всю таблицу, то можно ее пересоздать без сохранения данных в транзакции SE14.


Если же надо удалить лишь отдельные записи, то это можно сделать через уровень DB (SQL запросом удаляющим запись из таблицы) или через отладку (как с ней работать, можно посмотреть тут). А можно поступить более корректно и создать в системе небольшую ABAP-программу со следующим кодом:
REPORT  ZBCDEVACCESS.
* ===============================================================
*
*  TITLE: Delete Record from Table DEVACCESS
*
*  DESCRIPTION: This program deletes the SSCR Developer Keys from the
*  table DEVACCESS. There is no maintenance dialog available via SM30
*  and thus this program is necessary.
*
* ===============================================================
TABLES: DEVACCESS.
PARAMETERS: p_user LIKE DEVACCESS-UNAME.
DELETE FROM DEVACCESS WHERE UNAME EQ p_user.
IF SY-SUBRC EQ 0.
WRITE: 'User and key for ', p_user, 'deleted from table DEVACCESS.'
.
ELSE.
WRITE: 'Error deleting user and key for ', p_user, ' return code ',
SY-SUBRC.
ENDIF.

Вводите имя пользователя для удаления и, если запись для данного пользователя существует в таблице DEVACCESS, то программа удалит его вместе с ключом разработчика из таблицы (из системы соответственно тоже).

Также в целях повышения безопасности рекомендуется включить журналирование таблицы DEVACCESS (в технических настройках таблицы).


Подробнее про журналирование таблиц написано тут.

Автор: Шиболов Вячеслав Анатольевич


Комментариев нет:

Отправить комментарий