3 марта 2014 г.

Механизм импорта транспортных запросов. Решение проблем

В этом посте рассказывая про транспортную систему (TMS), я уже упоминал, что она используется не только для импорта транспортных запросов, но и для обновления системы пакетами поддержки (SAP Support Packages), и при установке дополнений в систему (add-ons).

Процесс импорта в SAP систему, в отличии от экспорта (деблокирования транспортных запросов), сложный многофазный процесс. Во время импорта используется большое количество утилит:
  • tp - утилита на уровне операционной системы, которая управляет всем процессом импорта, согласовывая работу всех инструментов;
  • R3trans - утилита на уровне операционной системы, которая умеет выгружать и загружать данные в любую базу данных, поддерживаемую компанией SAP AG;
  • RDDIMPDP - диспетчер импорта в SAP системе, запускающий фоновые RDD*-задания;
  • RDD*-задания - набор фоновых ABAP-отчетов, которые выполняют различные фазы импорта в SAP системе. 
Утилита tp согласовывает работу фоновых заданий через таблицы базы данных TRBAT и TRJOB. В первую из них утилита tp добавляет задания для диспетчера импорта (RDDIMPDP) в виде списка запросов на импорт с обозначением текущих фаз импорта. Во второй фиксируются номера и ID фоновых RDD*-заданий во время выполнения. После окончания импорта утилита tp удаляет записи из таблиц, считывая коды возврата. Таким образом, если в данный момент не происходит импорт запросов на перенос, то данные таблицы не должны содержать записи.

Основные шаги импорта перечислены в таблице на рисунке 1.

Рис. 1. Шаги по импорту транспортных запросов/пакетов поддержки в SAP систему.

Как вы наверное знаете, при импорте нескольких запросов каждый шаг выполняется для всех запросов на импорт одновременно. Это приводит к тому, что на этапе, например, активации, если какой-то объект существует в нескольких запросах, то выбирается и активируется только самая последняя (можно считать самая корректная) версия объекта.

Но вернемся к таблице. Для каждого шага утилитой tp вызывается своя утилита (поле "Инструмент"). Каждый инструмент в поддиректории /usr/sap/trans/tmp генерирует журнал выполнения (поле "Вид журнала"), который после завершения этапа переносится в поддиректорию /usr/sap/trans/log.

Диспетчер импорта (RDDIMPDP) запускается по событию SAP_TRIGGER_RDDIMPDP, которое инициализирует tp с уровня операционной системы через утилиту sapevt (рис. 2). Все RDD*-задания выполняются из под пользователя DDIC (рис. 3).


Рис. 2. Настройки задания RDDIMPDP.

Рис. 3. Пример выполненных фоновых RDD*-заданий при импорте запросов.

Планирование диспетчера импорта производится через отчет RDDNEWPP (000 мандант, пользователь DDIC, транзакция SE38 -> отчет RDDNEWPP -> Выполнить) (рис. 4).

Рис. 4. Планирование фонового задания RDDIMPDP.

Итак, если по какой-то причине импорт запросов/пакетов поддержки не происходит, то проверяем следующее:
  • журнал утилиты tp, который доступен по следующему пути "транзакция STMS -> Обзор -> Импорты -> Перейти к -> ПрогрУпрПереносом (TP): системный журнал (выбрать систему)" (или на уровне операционной системы файл /usr/sap/trans/log/SLOG*.SID);
  • не блокирован ли пользователь DDIC в 000 манданте;
  • в транзакции SM37 анализ запуска диспетчера импорта (RDDIMPDP) и RDD*-заданий;
  • на уровне операционной системы в поддиректориях /usr/sap/trans/tmp и
    /usr/sap/trans/log анализ журналов (рис. 1), определение сбойного шага импорта;
  • в транзакции SE16 проверка записей таблиц TRBAT и TRJOB.

Если перенос запроса завис на одном из этапов, за который отвечает одно из RDD*-заданий, то можно попробовать, войдя в 000 мандант под пользователем DDIC, выполнить программу RDDIMPDP через транзакцию SE38 вручную.

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

Дополнительная информация по данной теме:

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

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