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 (в технических настройках таблицы).


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

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


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

Таблица SNAP

Я как-то писал пост про журналы SAP-системы. В рамках поста было указано, что дампы системы (транзакция ST22) хранятся в таблице SNAP. Предлагаю взглянуть на эту таблицу в Вашей системе. Если она занимает в базе данных 200 МБ и более (смотрим через детальный анализ в DB02), то вполне возможно, что она нуждается в реорганизации.


Переходим в транзакции ST22 в пункт меню "Перейти к -> Реорганизовать" (F7).


И удаляем записи о дампах старше 7 дней.


Для уменьшения реального размера таблицы в базе данных необходимо выполнить либо удаление с последующим созданием таблицы в транзакции SE14 (все дампы удалятся), либо реорганизацию таблицы через BRTOOLS/SAPDBA, но с сохранением данных.


Чтобы не проделывать данную операцию время от времени необходимо запланировать ежедневно отчет RSSNAPDL.


Здесь первый параметр - это не количество дампов, а количество строк в таблице SNAP. Один дамп занимает примерно 100 строк в таблице. Второй параметр - количество строк для commit. Он необходим для ограничения порций удаляемых данных, дабы не возникло переполнения rollback segments. В общем, оставляем значения по умолчанию и планируем выполнение раз в сутки.


Подробности можно прочитать в SAP-нотах:

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


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

SAP GUI 7.20 for Windows: настройка безопасности

В версии SAP GUI 7.20 for Windows появились особенности, которых не было в предыдущих версиях. Одна из них это усиленные меры безопасности при работе с клиентской машиной. При попытке передать файл с клиентской машины серверу приложений SAP или обратно выскакивает диалоговое окно вида:


Такие "приятные" меры безопасности одна из причин, почему я до сих пор сижу на MS Windows XP, а не перехожу на более поздние версии. =)

Настройки этого "безобразия" можно найти, открыв окно опций программы SAP GUI (Alt+F12 -> Опции):



В разделе "Безопасность" можно настроить правила, по которым SAP разрешает/запрещает/выдает диалоговое окно с запросом о действиях. Можно настроить правила, отключить некоторые из них, добавить новые. А можно просто отключить всё, выбрав в поле "Статус" - "Дективировано".


После этого диалоговое окно не будет мешать работать. =)
Настройки безопасности хранятся на уровне ОС в файле:  
C:\Program Files\SAP\FrontEnd\SAPgui\SAPrules.xml.

Подробности можно посмотреть в SAP note # 1540403 - SAP GUI: Deleting incorrectly created security rules.

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


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

С днём знаний

Всех поздравляю с прошедшим днём знаний! :)

А я к 1 сентября решил проапгрейдить свою учебную машинку. Оказалось, что версия процессора Intel Core 2 Quad Q8300 2,5 GHz, который мне достался, не имеет аппаратную виртуализацию, про которую я писал тут и без которой невозможно виртуализировать 64-битную виртуальную машину. К тому же бюджетных планок памяти DDR2 по 4 Гб тоже уже не найти. И очень хотелось попробовать организовать RAID массив. В итоге, было принято решение менять платформу целиком на AMD. Вложив около 6500 рублей, продав старое оборудование и заимев 3 диска Seagate SATA по 750 Гб выданных родной компанией на учебные цели, собрал вот такую систему:
  • корпус - GIGABYTE GZ-F2 (ATX, 5 внутренних 3,5” отсека) + блок питания - OCZ Fatal1ty (550 Watt),
  • материнская плата - ASUS M4A77T (AMD 770/SB710, AM3, HT 3.0 5.2 GT/s, 4xDIMM Dual Chanel DDR3 1800, 3xPCI, 1 Gb LAN, 1xIDE, 6xSATA 3 GB/s (RAID 0,1,10 и JBOD), BIOS: 2401), 
  • боксовый процессор+кулер - AMD Phenom II X6 1055T AM3, 6 cores, 2.8 ГГц или до 3.3 ГГц в режиме Turbo СORE, 
  • ОЗУ - 16 Гб DDR3 (Dual mode 4 x KINGMAX DDR3 4 Gb 1333), 
  • CD-ROM DVD-RW IDE,
  • HDD - 3 x 750 Gb Seagate 7200 rpm (RAID 0) + 2 x 1000 Gb Seagate 7200 rpm, 
  • видео - NVidia 7300 128 Mb PCI-E.

Машинка получилась просто зверь. Удачно перенес систему (MS Windows Server 2003 64-bit) без переустановки, данные 3-х уже установленных систем на RAID0 массив, который дал примерно двойное ускорение по записи (надеюсь, что по чтению не меньшее). Главное, вовремя бэкапить системы с RAID0, так как вероятность сбоя увеличивается линейно количеству добавляемых дисков. Диски ощутимо грелись - решением была установка дополнительного вентилятора перед ними. Из минусов - прилично шумит боксовый кулер.

Машина выдерживает запуск и работу 2-3 SAP-систем на родной ОС + 2-3 SAP-системы в виртуальных машинах. Есть потенциал для разгона. Дешево и очень сердито. Рекомендую.

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