18 февраля 2014 г.

Как перенести содержимое таблицы

Иногда бывает необходимо решить задачу по переносу записей одной или нескольких таблиц из одной SAP системы в другую.

Как вы уже знаете, и в некоторых постах я упоминал про это, SAP системы объединяются в транспортные ландшафты, а транспортная система (TMS) позволяет осуществлять переносы (прежде всего настроек и разработок) между системами. Единицами переносов являются транспортные запросы, которые бывают двух основных типов:
  • запрос на настройку (customizing request),
  • запрос инструментальных средств (workbench request).
Как вы уже наверное догадались, для решения нашей задачи нам необходимо включить записи таблицы в транспортный запрос, а именно в запрос инструментальных средств.

Для этого входим в транзакцию SE10 (SE09 или SE01, кому что нравится) и создаем новый запрос, выбрав пункт меню "Запрос/Задача -> Создать". Выбираем нужный тип транспортного запроса (рис. 1).

Рис. 1. Создание запроса инструментальных средств.


Создаем описание для запроса и сохраняем. Обратите внимание, что задачу можно не создавать (рис. 2).

Рис. 2. Описание запроса инструментальных средств.

После этого необходимо встать на номер созданного запроса и нажать кнопку "Просмотр списка объектов" (рис. 3).

Рис. 3. Просмотр содержимого транспортного запроса.

На следующем экране необходимо перейти в режим редактирования и нажать на панели кнопку "Вставить строку" (рис. 4).

Рис. 4. Добавление объектов в транспортный запрос.

Теперь необходимо вписать строку вида: R3TR:TABU:<table_name>. Здесь TABU - это тип объекта, обозначающий содержимое таблицы (рис. 5).

Рис. 5. Добавление записей таблицы в запрос на перенос.

Если вы добавляете таблицу с данными, то есть типа "А", то система выдаст предупреждение (рис. 6).

Рис. 6. Предупреждение при включении записей таблицы в запрос на перенос.

Чтобы его проигнорировать, необходимо на клавиатуре нажать клавишу "Enter".

После этого следует определить ключ SQL-запроса, по которому будут выбраны записи таблицы для переноса. Для этого необходимо дважды щелкнуть левой клавишей мыши на добавленную запись с таблицей. Для добавления ключа на следующем экране необходимо нажать кнопку "Вставить строку" (рис. 7).

Рис. 7. Добавления ключа для выбора записей таблицы в транспортный запрос.

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

Рис. 8. Просмотр списка ключевых полей таблицы.

Можно задать SQL-запрос, заполнив все поля, можно использовать знак "*", но есть одно условие: ставить его можно только в конце запроса. В данном примере, можно задать запросы вида:
  • "*" - включить все записи всех мандантов, 
  • "300*" - включить записи только манданта 300, 
  • "30010000001*" - включить записи из манданта 300 для табельного номера 10000001,
  • и т.д.
Я думаю, что основная идея понятна.

Итак, задать ключ, после чего нажать кнопку "Сохранить" (рис. 9).

Рис. 9. Сохранение ключа для выборки записей таблицы.

Есть возможность просмотреть какие записи будут включены в запрос на перенос, если использовать тот ключ, который был задан. Для этого в экране с отображением ключа необходимо выбрать пункт меню "Перейти к -> Просмотр содержимого таблицы -> Определено через ключ" (рис. 10).

Рис. 10. Просмотр содержимого таблицы, определенного через ключ.

Если все в порядке, то сохранить ключ и запись о таблице. В один запрос можно добавить в несколько таблиц и для каждой определить несколько ключей для выборки. Выйти на экран отображения информации о запросе и деблокировать его, выделив курсором мыши и нажав соответствующую кнопку на панели (рис. 11).

Рис. 11. Деблокирование запроса с записями таблицы.

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

При переносе нескольких, выбранных записей эти записи просто добавляются/модифицируются в целевой системе. Однако SAP система предупреждает, что если переносить все записи с ключом "*", то в целевой системе все записи будут удалены, даже те, которых нет в исходной системе. То есть таблица будет предварительно очищена. Поэтому в данном случае, для ускорения процесса импорта рекомендую, с большой осторожностью, воспользоваться транзакцией SE14, о которой я писал в одноименном посте.

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


6 комментариев:

  1. Оооо спасибо )) как-то задавался таким вопросом

    ОтветитьУдалить
  2. Вячеслав, а как вы выгружаете данные из продуктивной системы?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Смотря какая цель для выгрузки данных. Можно пользоваться выгрузкой на уровне таблиц. Как указано в этом посте. Можно через копирование манданта. А можно и разворачивать тестовую систему, например, из резервной копии продуктивной системы.

      Удалить
  3. Интересует выгрузка на уровне таблиц

    ОтветитьУдалить
  4. Через экспорт/импорт (R3trans) можно сделать. Читайте ноту 1942...

    ОтветитьУдалить