Расписание всех мастер-классов этой осенней сессии можно найти по ссылке.
22 октября 2021 г.
Мастер-класс "SAP ландшафт и основы транспортной системы"
Расписание всех мастер-классов этой осенней сессии можно найти по ссылке.
2 августа 2021 г.
Ручная блокировка работы транспортной системы в SAP
Оба способа работают через файлы в транспортной директории. Вы, наверное, знаете, что в основе транспортной системы лежит файловая система /usr/sap/trans, которая состоит из ряда поддиректорий (рис. 1). Вот некоторые из них:
- /usr/sap/trans/cofiles - содержит управляющие файлы транспортных запросов,
- /usr/sap/trans/data - содержит файлы транспортных запросов с данными,
- /usr/sap/trans/EPS/in - используется при обновлении SAP системы, хранит файлы пакетов поддержки,
- /usr/sap/trans/buffer - хранит файлы-очереди систем, входящих в ландшафт,
- /usr/sap/trans/log - содержит журналы экспорта/импорта транспортных запросов,
- /usr/sap/trans/bin - хранит конфигурацию транспортной системы.
В исходной системе транспортного ландшафта, часто это система разработки (DEV), мы создаём и деблокируем транспортные запросы. В процессе деблокирования в файловую систему транспортной системы экспортируются данные, образуются файлы транспортного запроса. Затем мы, используя данные файлы, можем импортировать транспортные запросы в целевые системы транспортного ландшафта. Чаще всего целевые системы это система тестирования (QAS) и продуктивная (PRD).
![]() |
Рис. 1. Пример списка поддиректорий файловой системы /usr/sap/trans. |
Чтобы запретить деблокирование запросов и экспорт данных в файлы, можно воспользоваться первым хинтом. Для этого необходимо в поддиректории /usr/sap/trans/bin создать файл с именем T_OFF.<SID>. Здесь <SID> - системный идентификатор той системы, из которой мы запрещаем экспорт транспортных запросов. Причем, внутри файла может быть текст, который система будет отображать пользователю при попытке деблокировать транспортный запрос через транзакции SE01/SE09/SE10 (рис. 2 и 3).
![]() |
Рис. 2. Создание файла для запрета процесса деблокирования запросов. |
![]() |
Рис. 3. Диалоговое окно с сообщением о запрете деблокирования запросов в системе. |
Второй хинт касается процесса импорта транспортных запросов в систему. Для его выполнения необходимо в поддиректории /usr/sap/trans/tmp создать пустой файл с именем NOIMPORT.<SID>. Здесь <SID> - системный идентификатор уже целевой системы, в которую мы запрещаем импорт транспортных запросов. После этого при попытке импорта любого транспортного запроса в данную систему в транзакции STMS будет выдаваться сообщение об ошибке, в детальном выводе которого можно увидеть информацию о блокировке очереди через файл NOIMPORT.<SID> (рис. 4).
![]() |
Рис. 4. Блокировка импорта транспортных запросов в систему. |
Пока файл в поддиректории существует, импорт в систему невозможен.
Данные возможности могут быть полезны при блокировке систем во время обновления или миграции.
Автор: Шиболов Вячеслав Анатольевич
30 апреля 2021 г.
Мастер-класс "SAP ландшафт и основы транспортной системы"
Коллеги, друзья и просто сочувствующие, хочу поделиться новостью. Во вторник, 18 мая 2021 года, я буду проводить мастер-класс на площадке портала "SAPLAND". Мастер-классом назвать, наверное, это событие было бы слишком громко. Скорее это будет лекция "сборная солянка" на тему "SAP ландшафт и транспортная система".
Автор: Шиболов Вячеслав Анатольевич
9 сентября 2019 г.
Блокировка объектов SAP репозитория в транспортных запросах
- система разработки и настройки (DEV),
- система тестирования или контроля качества (QAS),
- продуктивная система или система промышленной эксплуатации (PRD).
Разработка новых решений и корректировки ошибок выполняются в первой системе. В тестовой системе производится тестирование изменений на продуктивном объеме данных. И в итоге, протестированное решение переносится в систему промышленной эксплуатации, где с ним сталкиваются конечные пользователи. Все эти системы объединяются в единый ландшафт с помощью транспортный системы, а изменения переносятся между системами с помощью транспортных запросов. Обо всём этом можно прочитать в этом или этом постах.
- E071 - хранит записи всех объектов в запросах/задачах,
- TLOCK - таблица блокировок объектов в открытых запросах.
Стоит отметить, что при нормальном функционировании транспортной системы записи таблицы с блокировками удаляются при деблокировании запроса. Так как в этот момент текущая версия объекта экспортируется в физические файлы транспортного запроса и возможна разработка новой версии.
![]() |
Рис. 1. Запуск программы RDDIT049. |
![]() |
Рис. 2. Запуск проверок блокировок в транспортных запросах. |
![]() |
Рис. 3. Результаты проверок. |
Автор: Шиболов Вячеслав Анатольевич
26 августа 2019 г.
Век живи, век учись! - II
Данный пост продолжает серию кратких записей о моих открытиях в мире SAP систем и около них. Согласно первой части пословицы: "Век живи, век учись..." такие открытия периодически случаются и в тех областях, где казалось бы всё изучено вдоль и поперёк.
Указать программу RDDIT076 в SE38 (привязанной транзакции к программе нет) и запустить на выполнение (рис. 1).
![]() |
Рис. 1. Запуск программы RDDIT076. |
![]() |
Рис. 2. Просмотр атрибутов запроса. |
![]() |
Рис. 3. Открытие диалогового окна с атрибутами запроса. |
![]() |
Рис. 4. Изменение параметров транспортного запроса. |
![]() |
Рис. 5. Изменение атрибутов запроса в транзакции SE01. |
Еще с помощью этого инструмента можно удалить деблокированный транспортный запрос: удалить файлы запроса на уровне операционной системы, после чего изменить статус запроса на "Изменяемо" и удалить транспортный запрос с уровня SAP системы.
Век живи, век учись!
Предыдущие выпуски:
Автор: Шиболов Вячеслав Анатольевич
11 декабря 2018 г.
Саповские секретики - VI
Про транспортную систему я писал уже не раз (прочитать можно тут или тут). Типичная картина: в системе настройки/разработки создаётся транспортный запрос, который содержит изменения (записи таблиц с настройками или объекты ABAP-словаря). Затем этот запрос деблокируется (released) и отправляется дальше по системам для тестирования и промышленной эксплуатации. Это все, наверное, знают.
Так же вы знаете, что ABAP-словарь системы является общим для всех мандантов системы, а настройки могут быть двух видов - манданто-зависимые (большинство) и манданто-независимые. Манданто-независимые объекты доступны для всех мандантов системы сразу после создания. А манданто-зависимые оказывают влияние только на текущий мандант.
Часто бывает ситуация, когда в системе настройки создано несколько мандантов: чистая разработка-настройка, первичный тест, "песочница" и так далее. Первый сегодняшний секретик заключается в том, что есть возможность перенести запрос с манданто-зависимыми настройками внутри одной системы - из одного манданта в другой. Причем, запрос даже не нужно деблокировать - он может оставаться открытым для изменения. Для этого, после создания запроса с настройками в исходном манданте, необходимо войти в целевой мандант той же системы и запустить транзакцию SCC1. На основном экране необходимо указать номер транспортного запроса и исходный мандант, в котором запрос был создан. После этого поставить галочку напротив пункта "Включ. нижестоящие задачи запроса" и нажать кнопку "Немедленный запуск" (рис. 1).
![]() |
Рис. 1. Основной экран транзакции SCC1. |
Подтвердить перенос данных, нажав "Да" в диалоговом окне (рис. 2).
![]() |
Рис. 2. Запрос на копирование данных между мандантами. |
После выполнения переноса, при возврате на шаг назад в транзакции, система выдаст журнал переноса запроса (рис. 3).
![]() |
Рис. 3. Журнал переноса запроса между мандантами одной системы. |
Отдельно журнал доступен в транзакции SCC3. Для отображения журналов переносов запросов между мандантами необходимо на панели нажать кнопку "Все запросы на перенос" (рис. 4 и 5).
![]() |
Рис. 4. Начальный экран транзакции SCC3. |
![]() |
Рис. 5. Просмотр журнала в транзакции SCC3. |
В данном примере, ошибка словаря связана с тем, что запрос содержал манданто-независимые данные, копировать которые нет необходимости.
Данный инструмент удобен в случае, если у вас мандант настройки не содержит данных (как и рекомендуется), но в системе разработки есть мандант для первичного теста с минимальным набором данных. Запрос не деблокируется, копируется в соседний мандант, проводится тест. Если результаты не удовлетворительны, то настройки можно подправить, изменив содержимое того же запроса, и снова скопировать его, используя транзакцию SCC1. Проведя несколько подобных итераций, получить работающую настройку и, только после этого, деблокировать запрос на перенос и импортировать его в тестовую систему для дальнейшего тестирования.
Секретик 2.
Как-то я писал пост про такой полезный инструмент, как "User Information System", к которому можно получить доступ через транзакцию SUIM. В транзакции представлен набор отчетов по пользователям/ролям/полномочиям в системе. Инструмент хороший, но очень объемный.
Поэтому второй секретик будет о том, как посмотреть документы изменений для пользователя ABAP системы. Необходимо войти в транзакцию SU01 (Ведение пользователей), ввести имя пользователя, а в меню выбрать пункт "Инфо -> Документы изменений для пользователей" (рис. 6).
![]() |
Рис. 6. Вызов отчета по документам изменений для пользователя. |
Откроется один из отчетов SUIM, в котором необходимо установить фильтр для событий, а так же можно указать временные рамки. После чего нажать "Выполнить" (рис. 7).
![]() |
Рис. 7. Начальный экран отчета по документам изменений для пользователя. |
Система выдаст всю информацию по пользователю: когда был создан, когда менялся пароль или был блокирован (рис. 8).
![]() |
Рис. 8. Информация по пользователю системы. |
Один интересный момент - если пользователь был удален из системы, то данный журнал изменений в системе всё равно хранится (обратите внимание на последнюю запись в отчете на рис. 8).
Таким образом можно просмотреть информацию и по удалённым пользователям. И вычислить кто, когда и кого удалил. :)
Секретик 3.
В нескольких постах я уже рассказывал, что в SAP системе можно увеличивать производительность уровня сервера приложений через установку дополнительных диалоговых инстанций (пост 1, пост 2). В случае нескольких установленных инстанций для входа в систему используют "Logon Group"-ы, которые указываются в программе SAP Logon. Основательный пост про это можно найти тут.
При входе в систему вы попадаете на одну из диалоговых инстанций, в зависимости от настроек вышеуказанных Logon Group и встроенной системы балансировки нагрузки со стороны Message Server.
Текущую диалоговую инстанцию можно посмотреть в правом нижнем углу любого окна SAP GUI (рис. 9).
![]() |
Рис. 9. Определение текущей диалоговой инстанции. |
Иногда возникает потребность перейти на другую инстанцию в рамках одной системы. Этому посвящен последний секрет. Все инстанции системы можно посмотреть в транзакции SM51. Причем, верхняя в списке будет та, через которую вы сейчас работаете с системой. Для перехода на любую другую инстанцию необходимо на основном экране транзакции SM51 установить курсор мыши на нужную инстанцию, а на панели нажать кнопку "Дистанционный вход в систему" (рис. 10).
![]() |
Рис. 10. Переход на другую диалоговую инстанцию в рамках одной системы. |
После этого все транзакции, что вы будете открывать в этом окне, будут работать на выбранной диалоговой инстанции. Причем, открывая новые режимы, вы будете так же работать на выбранной инстанции.
Предыдущие выпуски:
- Саповские секретики - I,
- Саповские секретики - II,
- Саповские секретики - III,
- Саповские секретики - IV,
- Саповские секретики - V.
Автор: Шиболов Вячеслав Анатольевич.
2 октября 2017 г.
Почему SAP рекомендует 3-х системный ландшафт?
Давайте остановимся на этом понятии поподробнее.
Итак, в посте "Копирование манданта SAP системы" я приводил структуру данных SAP системы (рис. 1).
![]() |
Рис. 1. Структура данных в SAP системе. |
В ABAP части SAP системы выделяют автономные единицы для работы и хранения данных предприятия. Данные единицы носят название - мандант. Мандант содержит основные данные (Master Data), записи пользователей с полномочиями и манданто-зависимые настройки. Манданты идентифицируется троичным номером и их в системе может быть несколько. Теоретически 1000 штук.
Помимо манданта, в системе есть общие для всех мандантов данные: манданто-независимые настройки и репозитарий SAP системы. Репозитарий это прежде всего ABAP-программы (reports, функциональные модули, экраны и т.п.). К репозитарию так же относится и ABAP-словарь, про который я писал в посте "Транзакция SE14 : утилита базы данных".
Ландшафт, как я уже упоминал ранее, это объединение нескольких систем одного назначения/версии для настройки/обеспечения контроля качества/поддержки того или иного решения компании SAP. Например, SAP ERP 6.0 EHP7 (кстати, самая распространенная версия по опросам) или SAP SRM 7.0 EHP3.
Ландшафты SAP систем могут быть:
- односистемными,
- двухсистемными,
- трёхсистемными.
Но основная проблема на самом деле в другом: в переносе изменений. Никто не может гарантировать, что транспортный запрос содержит все необходимые компоненты с изменениями и импортируется в систему промышленной эксплуатации без ошибок. В таком ландшафте это никто не проверял.
Поэтому переходим к последнему варианту - трёхсистемный ландшафт. Три системы (DEV, QAS, PRD) работают в связке, объединенные, корректно настроенной, транспортной системой. Такая связка обеспечивает независимость разработки и настройки в первой системе, тестирование разработанного решения и переноса транспортного запроса во второй и безопасный перенос готового, оттестированного решения в систему промышленной эксплуатации (рис. 4).
![]() |
Рис. 4. Трёх системный SAP ландшафт. |
В данном варианте разработчик создаёт новую версию объектов репозитария (программы, экраны, таблицы словаря, элементы данных и т.п.) в системе разработки (DEV). После этого, деблокировав транспортный запрос, содержащий необходимые объекты, переносит его в систему контроля качества (QAS). В тестовой системе производятся все виды тестирования: функциональное и нагрузочное на больших объёмах данных, решаются возникающие проблемы интеграции с другими разработками и модулями. Все доработки производятся в системе разработки (DEV) и переносятся новыми транспортными запросами в систему QAS. После того, как разработка подтверждается как завершённая, принимается решение о переносе её в продуктивную систему. И тогда производится перенос всей очереди сформированных запросов в рамках данной разработки. Запомните! Всей очереди, а не только последних запросов. Только так можно гарантировать, что во время переноса вы не получите что-то другое в системе промышленной эксплуатации. Все ваши запросы в систему QAS - это проверенная очередь, при переносе которой в новую систему вы ничего не потеряете и не забудете.
За промежуточные некорректные версии объектов, которые содержатся в такой очереди, можно не переживать. При импорте очереди запросов, автоматически активируются только последние версии каждого объекта.
А чтобы было меньше дампов у пользователей при переносе, осуществлять его лучше во время минимальной активности в системе. Вечер пятницы вроде бы идеально подходит, но иногда чреват незапланированной работой в выходные. :) Поэтому лучше вечер четверга.
Стоит еще отметить: систем в ландшафте может быть больше. Например, 2 тестовые системы, с разным срезом продуктивных данных. 2 продуктивные системы, которые поддерживаются одной парой разработка-тест.
Так же и мандантов внутри систем может быть больше. В системе разработки часто, кроме манданта для настройки и разработки (который в идеале не содержит основных данных), создают мандант первичного тестирования. В нём есть небольшой объем данных для первичного теста. Так же часто можно увидеть мандант-песочницу, в котором консультанты могут "побаловаться" с настройками. Главное, чтобы все изменения (мусор, песок) в этом манданте не включались в транспортные запросы и никуда не импортировались.
В тестовой системе часто создают отдельный мандант для обучения сотрудников. Так как для реальных примеров во время обучения нужен объем данных, а в продуктивной системе обучать новых людей нельзя по очевидным причинам.
В продуктивной системе могут быть несколько промышленных мандантов для работы отдельных предприятий в рамках одной системы.
Но самое главное, что я хотел сказать, это то, что для качественной разработки и поддержки нужны минимум 3 отдельные системы.
P.S. Всё что здесь описано, касается только AS ABAP, при разработке в AS JAVA требования к ландшафту несколько другие. Подробности можно найти в курсах SAP ADM325 и SAP ADM800.
21 сентября 2017 г.
Пользователь TMSADM
Данный пользователь имеет тип "Communication" или "System" (рис. 1). Но ни в коем случае не "Диалоговый", то есть вход в систему через SAP GUI ему должен быть запрещен.
![]() |
Рис. 1. Тип учетной записи TMSADM. |
Дело в том, что для работы транспортной системы используются RFC-соединения (рис. 2). Эти RFC-соединения генерируются так же при первоначальной настройке транспортной системы (TMS).
![]() |
Рис. 2. RFC-соединения, использующиеся в работе транспортной системы. |
RFC-соединения используются для обмена информацией между системами транспортного ландшафта (рис. 3).
![]() |
Рис. 3. Схема настройки RFC для работы транспортной системы. |
Как видно из схемы и рис. 2, используется 2 вида RFC-соединений:
- TMSADM@<SID>.<DOMAIN_NAME> - для аутентификации используется пользователь TMSADM, используется для некритичных операций, прежде всего на чтение информации;
- TMSSUP@<SID>.<DOMAIN_NAME> - используется для более критичных операций, прежде всего операций записи, для аутентификации требует пару пользователь/пароль.
- PASSWORD;
- $1Pawd2&.
Начиная с версии системы SAP NetWeaver 7.40, при настройке транспортной системы можно задать свой пароль. Или выбрать один из стандартных вариантов паролей (рис. 4).
![]() |
Рис. 4. Установка пароля для пользователя TMSADM. |
![]() |
Рис. 5. Проверка паролей системных пользователей. |
18 сентября 2017 г.
Использование транзакции SE03 для поиска запросов/задач
- "Запись каталога объекта: изменение системы оригинала" - здесь она упоминалась, как инструмент для смены системы оригинала для объекта ABAP-словаря системы.
- "Использование транзакции SE03 для поиска объектов в запросах" - как это и видно из названия, я рассказал как с помощью этой транзакции искать объекты ABAP-словаря, которые включены в запросы на перенос.
Рассмотрим еще некоторые функции этой транзакции.
![]() |
Рис.1. Вызов функции по поиску запросов на перенос. |
![]() |
Рис. 2. Набор фильтров для поиска запросов в системе. |
![]() |
Рис. 3. Результаты поиска транспортных запросов. |
![]() |
Рис. 4. Объединение списков объектов запросов. |
![]() |
Рис. 5. Объединение объектов двух транспортных запросов. |
![]() |
Рис. 6. Создание транспортного запроса для включения объектов. |
![]() |
Рис. 7. Снятие блокировки с объектов. |
![]() |
Рис. 8. Разблокирование объектов транспортного запроса. |
10 июля 2017 г.
Использование транзакции SE03 для поиска объектов в запросах
У этой транзакции есть еще несколько полезных функций. Рассмотрим функции по работе с объектами в транспортных запросах.
В посте "Как перенести содержимое таблицы" я описывал процесс включения объекта словаря в транспортный запрос. В данном случае это было описание структуры таблицы. Запросы на перенос или транспортные запросы хранят те или иные объекты ABAP словаря. До деблокирования (release) запроса в нём хранятся лишь ссылки на объекты, а реальная информация выгружается в файлы запроса только во время процесса деблокирования. Как вы помните, после деблокирования транспортного запроса в файловой системе сервера приложений формируется 2 файла с номером запроса.
Итак, чтобы найти объект, который был включен в транспортный запрос, необходимо войти в транзакцию SE03, выбрать в древовидном меню пункт "Поиск объектов в запросах/задачах" и нажать на панели кнопку "Выполнить" или клавишу F8 на клавиатуре (рис. 1).
![]() |
Рис. 1. Поиск объектов в запросах/задачах. |
На экране выбора необходимо указать объект, который мы ищем, и, при желании, дополнительные фильтры: диапазон номеров запросов/задач, владельца запроса, период времени, который нам интересен и статус запроса (деблокирован или нет). Например, мы хотим найти все запросы, в которых содержится программа Z_DELETE_FROM_DEVACCESS (рис. 2).
![]() |
Рис. 2. Поиск запросов, содержащих программу Z_DELETE_FROM_DEVACCESS. |
После установки фильтров и нажатии на панели кнопки "Выполнить" на экране отобразятся запросы, удовлетворяющие фильтрам. В данном случае, это те, которые содержат программу Z_DELETE_FROM_DEVACCESS (рис. 3).
![]() |
Рис. 3. Запросы, содержащие программу Z_DELETE_FROM_DEVACCESS. |
У запроса можно посмотреть заголовок, в котором есть, например, дата деблокирования (рис. 4), журналы экспорта и импорта (рис. 5), в которых указано когда запрос деблокировали, были ли ошибки, в какую систему и когда импортировали и т.д.
![]() |
Рис. 4. Заголовок запроса. |
![]() |
Рис. 5. Журнал экспорта и импорта запроса. |
Нажав дважды на номер запроса, можно посмотреть, полное содержимое запроса (рис. 6).
![]() |
Рис. 6. Содержимое запроса. |
Таким образом, можно найти все запросы, содержащие искомые объекты.
Также данный раздел транзакции SE03 позволяет анализировать объекты в запросах. Для этого необходимо в древовидном меню выбрать пункт "Анализ объектов в запросах/задачах" и нажать на панели кнопку "Выполнить" или клавишу F8 на клавиатуре (рис. 7).
![]() |
Рис. 7. Анализ объектов в запросах. |
На следующем экране указываем номер запроса и система выдает экран с объектами, содержащимися в запросе (рис. 8).
![]() |
Рис. 8. Анализ объектов в запросе. |
На данном экране можно посмотреть следующую информацию:
- список всех объектов запроса,
- записи каталогов объектов,
- класс разработки, систему оригинала, уровень переносов в транспортной системе и целевую систему,
- зависит ли объект от манданта системы и блокирован ли он в данный момент,
- атрибуты объекта на одном экране, нажав соответствующую кнопку на панели (рис. 9).
![]() |
Рис. 9. Атрибуты программы Z_DELETE_FROM_DEVACCESS. |
Автор: Шиболов Вячеслав Анатольевич