четверг, 29 сентября 2016 г.

Как вручную добавить транспортный запрос в очередь

В корректно настроенной транспортной системе (TMS) всё работает как часы:
  1. При деблокировании (Released) транспортного запроса в системе разработки на уровне файловой системы сервера создаются файлы с данными.
  2. Транспортный запрос автоматически, в зависимости от настроек путей переноса, попадает в очередь одной или нескольких целевых систем.
  3. После импорта запроса в целевую систему, запрос автоматически попадает в очередь следующей системы (обычно продуктивной), опять же, в зависимости от настроек путей переноса.
Про транспортный запрос я писал недавно тут.

Но иногда бывают ситуации, когда необходимо добавить запрос в очередь транспортной системы вручную. Например, данный запрос был принесен извне: из другой системы, которая по территориально-географическим или организационно-политическим причинам не может быть связана транспортной системой с целевой, либо транспортный запрос рекомендован к импорту в систему нотой или службой поддержки SAP. Или даже, разработчик создал запрос в своей локальной системе разработки или на другом проекте и хочет импортировать в текущую систему. Так же можно возвращать удаленные из очереди запросы.

Как вы уже знаете, транспортный запрос представляет собой два файла:
  • контрольный файл вида K9<номер_запроса>.<SID> в директории /usr/sap/trans/cofiles,
  • дата-файл вида R9<номер_запроса>.<SID> в директории /usr/sap/trans/data.

Перед добавлением транспортного запроса в очередь целевой системы необходимо скопировать файлы запроса на уровень файловой системы сервера приложений. Файлы раскладываем согласно их назначения (директории cofiles и data). На Unix-like системах не забываем выставить необходимые полномочия/владельца файлов (команды chmod, chown).

После этого переходим в транзакции STMS в очередь необходимой системы. Выбираем пункт меню "Дополнительная информация -> Другие запросы -> Добавить" и указываем имя запроса по форме <SID>K9<номер_запроса> (рис. 1, 2 и 3).

Рис. 1. Добавление запроса в очередь на перенос - I.

Рис. 2. Добавление запроса в очередь на перенос - II.

Рис. 3. Добавление запроса в очередь на перенос - III.

После этого запрос будет в очереди и появится возможность импорта его в текущую систему.

Стоит отметить, что технически очередь транспортной системы представляет собой плоский файл с именем <SID>, который находится в директории /usr/sap/trans/buffer. При обновлении очереди в транзакции STMS происходит анализ этого файла на предмет новых записей о запросах в очереди. Новые записи добавляются в таблицу TMSBUFREQ в базе данных (рис. 4 и 5).

Рис. 4. Пример файла буфера транспортной системы.

Рис. 5. Пример таблицы TMSBUFREQ.

Причем, те запросы, что удаляются из очереди на перенос, остаются в файле в виде строки со знаком комментария (#) (рис. 4).

Запрос в очередь импорта можно добавить и на уровне командной строки сервера приложений, что удобнее при большом количестве добавляемых запросов. Формат команды:
> tp addtobuffer <transport_number> <SID>  pf=/usr/sap/trans/bin/<transport profile>
Пример выполнения (рис. 6).

Рис. 6. Пример добавления транспортного запроса в буфер через командную строку.

Для того, чтобы таблица TMSBUFREQ, а с ним и экран транзакции STMS, обновлялись автоматически, можно настроить автообновление. Для этого в транзакции STMS перейти в пункт меню "Дополнительная информация -> Личные параметры настройки" и установить check-box "Автомат. обновить просмотр" (рис. 7 и 8).

Рис. 7. Установка личных параметров настройки в STMS.

Рис. 8. Настройка автоматического обновления в STMS.

Если у вас в настройках транспортной системы в качестве целевой системы используется система с указанием целевого манданта, то при добавлении запроса в очередь не забывайте указывать мандант. Иначе система заблокирует очередь и не даст импортировать запросы (рис. 9).

Рис. 9. Запрос без указания целевого манданта.

Настройку и нюансы работы с транспортной системой в SAP можно найти в курсе SAP ADM325 - Software Logistics.


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


2 комментария:

  1. Для указания целевого манданта можно использовать параметр CLIENT для tp. Например "client=300" Тогда не нужно будет явно указывать в ABAP-ной части.

    ОтветитьУдалить
    Ответы
    1. Да, не учёл этот параметр. Спасибо большое за комментарий.

      Удалить