При внедрении своих систем компания SAP рекомендует использовать трёхсистемный ландшафт, в который обычно объединены:
- система разработки и настройки (DEV),
- система тестирования или контроля качества (QAS),
- продуктивная система или система промышленной эксплуатации (PRD).
Разработка новых решений и корректировки ошибок выполняются в первой системе. В тестовой системе производится тестирование изменений на продуктивном объеме данных. И в итоге, протестированное решение переносится в систему промышленной эксплуатации, где с ним сталкиваются конечные пользователи. Все эти системы объединяются в единый ландшафт с помощью транспортный системы, а изменения переносятся между системами с помощью транспортных запросов. Обо всём этом можно прочитать в этом или этом постах.
Родоначальницей транспортных запросов в ландшафте является система разработки и настройки. Когда разработчик изменяет или создаёт новый объект SAP репозитория (например, программу или функциональный модуль), то для объекта автоматически создаётся транспортный запрос с типом "запрос инструментальных средств" (Worbench request). Так как разработчиков, работающих в системе, обычно больше одного, то для сохранения целостности и безопасности необходим механизм, гарантирующий, что с одним объектом репозиториия одновременно может работать только один разработчик. И до тех пор, пока он не закончит разработку-изменение и не деблокирует запрос (released), объекты привязанные к запросу будут не доступны для изменения со стороны других разработчиков.
На уровне SAP системы (сервера приложений ABAP) этот механизм реализован с помощью двух таблиц:
- E071 - хранит записи всех объектов в запросах/задачах,
- TLOCK - таблица блокировок объектов в открытых запросах.
Таким образом, пока запрос открыт, его объекты должны присутствовать в таблице TLOCK. При попытке других разработчиков (отличных от владельца запроса) внести изменения в объект репозитория, система проверяет записи в таблице TLOCK. Если запись с объектом есть, то разработчик получает отказ на изменение объекта.
В посте "Использование транзакции SE03 для поиска запросов/задач" (рис. 7) я описывал возможность снять блокировку с объекта транспортного запроса. При использовании этой функции как раз и происходит удаление соответствующей строки из таблицы TLOCK.
Стоит отметить, что при нормальном функционировании транспортной системы записи таблицы с блокировками удаляются при деблокировании запроса. Так как в этот момент текущая версия объекта экспортируется в физические файлы транспортного запроса и возможна разработка новой версии.
Стоит отметить, что при нормальном функционировании транспортной системы записи таблицы с блокировками удаляются при деблокировании запроса. Так как в этот момент текущая версия объекта экспортируется в физические файлы транспортного запроса и возможна разработка новой версии.
Иногда в работе данного механизма SAP системы происходит сбой. В результате чего объект SAP репозитория может быть блокирован ошибочно (остались строки в таблице TLOCK) или не блокирован вовсе (нет записей в таблице TLOCK). Второе возможно при использовании вышеуказанного функционала транзакции SE03.
Для отслеживания соответствия объектов в транспортных запросах и их блокировок в SAP системе существует ABAP-программа RDDIT049. У программы нет привязанной транзакции, поэтому запуск осуществляется через транзакцию SE38 (рис. 1).
Рис. 1. Запуск программы RDDIT049. |
На начальном экране программы необходимо галочками выбрать необходимые проверки и нажать на панели кнопку "Выполнить" (F8) (рис. 2).
Рис. 2. Запуск проверок блокировок в транспортных запросах. |
Первая проверка проверяет все ли блокировки в таблице TLOCK принадлежат открытым запросам. А вторая часть - проверяет все ли блокировки корректны. Результат проверок выводится на экран (рис. 3).
Рис. 3. Результаты проверок. |
Текущие блокировки можно просмотреть, просто щелкнув дважды левой клавишей мыши на строку с объектами на экране с результатами.
Если вы столкнётесь с ситуацией, когда транспортная система ругается на блокировки объектов, а открытых запросов с данными объектами в системе нет, то теперь вы знаете где искать корни проблемы и как её исправить.
Автор: Шиболов Вячеслав Анатольевич
Автор: Шиболов Вячеслав Анатольевич
Комментариев нет:
Отправить комментарий