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.


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


26 сентября 2016 г.

Мульти-логин в SAP систему

Как вы знаете, для входа в ABAP часть SAP системы используется клиентское место SAP GUI. При входе в SAP систему пользователь указывает свой ID (учетную запись), который часто, в российской SAP практике, совпадает с фамилией пользователя. Хотя, изначально подразумевалось, что ID пользователя будет совпадать с его табельным номером. Поэтому даже в последних релизах SAP систем это поле не больше 12 знаков (рис. 1). Но на каких российских предприятиях сотрудники знают свой табельный номер наизусть? :)

Рис. 1. Начальное окно входа в SAP систему.

После успешного входа в систему, при попытке повторно войти в систему с тем же ID появится окно с предупреждением, в котором указывается с какого терминала (IP адрес + hostname) и в какое время уже был выполнен вход в систему (рис. 2).

Рис. 2. Попытка входа в систему дважды.

В таком случае, по-умолчанию, система предлагает выбрать из трёх вариантов:
  • Выполнить этот логин, а прежние регистрации в систему отменить, то есть, принудительно выбросить из системы без сохранения данных.
  • Выполнить логин в систему параллельно. 
  • Отменить эту попытку входа.

При втором варианте произойдет, так называемый, мульти-логин в систему. Данные об этом SAP система тщательно сохраняет в таблице USR41_MLD (рис. 3).

Рис. 3. Пример записи в таблице USR41_MLD.

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

Информация о текущих регистрациях в систему хранится в таблице USR41 (рис. 4).

Рис. 4. Пример содержимого таблицы USR41.

Таким образом, когда пользователь входит в SAP систему, информация об этом записывается в таблицу USR41. При новой попытке входа, происходит считывание записей из этой таблицы и при обнаружении записи с таким ID, выдается вышеуказанное предупреждение (рис. 2).

Как вы, наверное, уже знаете, SAP системы лицензируются по количеству пользователей, работающих в продуктивной системе. Таким образом, мульти-логины, когда несколько пользователей одновременно работают в системе под одним ID, не только снижают безопасность системы и подвергают риску сохранение консистентности данных, но и нарушают лицензионное соглашение. Поэтому компания SAP SE отслеживает эти нарушения. При проведении лицензионного аудита (транзакция USMM) в отчёт, помимо всего прочего, попадает информация из таблицы USR41_MLD. На основании этого компания оставляет за собой право пожурить клиента за мульти-логины в систему.

Дабы не доводить до греха и повысить безопасность системы, можно отключить возможность мульти-логина в систему через установку параметра профиля SAP: login/disable_multi_gui_login = 1 (рис. 5).

Рис. 5. Описание параметра login/disable_multi_gui_login.

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

Рис. 6. Попытка входа в систему дважды после установки запрета на мульти-логин.

Одновременно с этим, в параметре login/multi_login_users можно указать пользователей, которым будет разрешён мульти-логин в SAP систему (рис. 7). ID пользователей следует перечислять через запятую без пробелов, заглавными буквами.

Рис. 7. Описание параметра login/multi_login_users.

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

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

Подробности про лицензионный аудит можно найти тут.


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


15 сентября 2016 г.

"Меню пользователя" vs "Меню SAP"

В клиентском месте SAP GUI на верхней панели слева есть две кнопки: "Меню пользователя", которое основано на ролях присвоенных пользователю и "Меню SAP", представляющее собой общее стандартное древовидное меню (рис. 1).

Рис. 1. Кнопки вызова меню SAP и меню пользователя.

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

Тут следует не путать отображаемые пункты меню и полномочия достаточные на запуск и работу в той или иной транзакции. Про полномочия, я рассказывал тут.

Отдельные пункты меню пользователь SAP системы может добавлять в Избранное или Фавориты, которые отображаются в верхней части при выборе любого типа меню. Добавить транзакцию в избранный список можно двумя способами. Либо через нажатие правой клавиши мыши на нужной функции в меню и выбор пункта "Добавить в избранное" (рис. 2). Либо через код транзакции, нажав правой клавишей на папку "Избранное" и выбрав пункт "Вставить транзакцию" (рис. 3).


Рис. 2. Добавление пункта меню в избранное.

Рис. 3. Добавление в избранное транзакции через её код.

Очень часто возникает ситуация, когда пользователь, случайно нажав на кнопку "Меню SAP", получил на экране не привычное ему меню, а стандартное меню SAP, в котором он не может найти необходимые ему для работы функции и транзакции. Поведение системы по-умолчанию подразумевает показ из двух этих типов меню того, которое было выбрано в последнюю сессию работы в системе. Таким образом, нажав однажды не на ту кнопку, пользователь будет при каждом логине иметь одну и ту же пугающую картину: огромное древовидное стандартное меню (рис. 4).

Рис. 4. Стандартное меню SAP.

Для решения этой проблемы есть два пути.

Первый предполагает деактивацию кнопки "Меню SAP" для всей системы. Для этого необходимо войти в транзакцию SM30, выбрать ракурс ведения для таблицы SSM_CUST (рис. 5) и параметру SAP_MENU_OFF присвоить значение 'YES' или 'X' (рис. 6). Следует помнить, что эта настройка производится для всех мандантов системы.

Рис. 5. Ведение ракурса таблицы SSM_CUST.

Рис. 6. Отключение кнопки стандартного меню SAP.

В результате у пользователей в системе всегда будет только меню на основе их ролей, а кнока "Меню SAP" будет деактивирована (рис. 7).

Рис. 7. Кнопка "Меню SAP" неактивна.

Если у пользователя нет ролей или в ролях нет меню, то его экран будет пустой (рис. 8).

Рис. 8. Пустое меню пользователя.

Таким же образом можно дективировать кнопку "Меню пользователя", указав в том же ракурсе ведения параметр ALL_USER_MENU_OFF =  'YES' (или 'X') (рис. 9 и 10).

Рис. 9. Отключение кнопки "Меню пользователя".

Рис. 10. Кнопка "Меню пользователя" неактивна.

При выставлении обоих параметров в 'YES' (или 'X') у пользователей будут на экране только списки избранного (рис. 11). То есть меню будет отключено.

Рис. 11. Деактивация меню у пользователей.

Второе решение подразумевает настройку доступности разных типов меню для каждого отдельного пользователя. Для этого необходимо в транзакции SM30 выбрать ракурс ведения к таблице USERS_SSM (рис. 12).

Рис. 12. Ведение ракурса таблицы USERS_SSM.

В таблице можно для каждого пользователя прописать какой тип меню для него будет доступен (рис. 13).

Рис. 13. Настройка меня для каждого пользователя.

Настройка из данной таблицы имеет больший приоритет, чем общесистемная настройка в таблице SSM_CUST. Поэтому для пользователей ADMIN и SHIBOLOV экраны будут выглядить согласно настройке из таблицы USERS_SSM (рис. 14 и 15).


Рис. 14. Экран пользователя ADMIN c активным "Меню пользователя".

Рис. 15. Экран пользователя SHIBOLOV с активным "Меню SAP".

В транзакции SSM2 можно переопределить меню, которое будет показываться в качестве начального "Меню SAP" (рис. 16).

Рис. 16. Установка меню в качестве стандартного.

Если выбрать в качестве основного, например, "S002 -Системное администрирование", то основной экран со стандартным меню будет выглядеть совсем по-другому (рис. 17).

Рис. 17. Стандартное начальное меню SAP с поддеревом "Системное администрирование".

Таким образом, данный набор настроек позволяет гибко настроить меню в системе:
  • отключить всё меню для всех,
  • деактивировать кнопку "Меню SAP" для основного числа пользователей или конкретных лиц,
  • деактивировать кнопку "Меню пользователя" для всех пользователей или конкретных лиц.

Подробности по этой теме можно найти в SAP note # 380029 - FAQ: Customizing of SAP Easy Access.


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


8 сентября 2016 г.

SAP ERP 6.0 EHP8, DELL и Windows 10

В 2013 году я опубликовал пост "Версии SAP ERP и SAP NetWeaver", в котором я выкладывал таблицу соответствия версий SAP ERP, SAP NetWeaver и SAP BASIS компонент. В начале этого года вышел EHP 8 для SAP Business Suite и для SAP ERP 6.0, включительно. Система базируется на последней версии SAP NetWeaver 7.5. В живую систему пока не "щупал". IDES версии тоже пока нет. Добавил этот релиз в таблицу и актуализировал пост (рис. 1).

Рис. 1. Таблица версий SAP NetWeaver и SAP ERP.

Еще хочу поделиться новостью о своём новом рабочем месте. Открыл для себя ноутбуки фирмы DELL. На работе у меня теперь DELL Inspiron 7559. Единственный в своем роде 4-х ядерный мобильный процессор - Core i5 6300HQ, 16 Гб оперативной памяти и SSD диск на 240 Гб (разъём M.2) + HDD на 1 Тб.

Отличительной особенностью ноутбуков DELL является тот факт, что они не боятся на большинство моделей ставить IPS матрицы. Может быть хоть эта компания сдвинет тренд. А то надоело наблюдать наличие в лептопах унылых TN-матриц при повсеместном использовании IPS в смартфонах и планшетах.


Домой тоже взял DELL. Немного другую модель, но тот же 4-х ядерный Core i5 6300HQ, который уделывает некоторые мобильные Core i7, и конечно же IPS матрица.

Единственной ложкой дёгтя в рабочем ноутбуке является наличие Windows 10 в качестве операционной системы. Причем, при отсутствии предустановленных версий Windows 7 на данную модель ноутбука, она (Windows 7) не хочет корректно на нём работать. Домашний я перевел на 7-ку и всё прекрасно работает.

Помните, как в 2011 году, я тяжело принимал Windows 7 и пытался вернуться на Windows XP? Но в итоге пересел на Windows 7. Тут ситуация хуже. Мне не нравится слишком много вещей:
  • интерфейс в целом и в частности,
  • слишком агрессивные обновления с принудительной перезагрузкой ноутбука,
  • недостаточность нужных мне нововведений для перехода с привычной Windows 7.

Есть, конечно же, и некоторые плюсы. Например, переписанная командная строка Windows, пункты меню по нажатию правой клавиши на кнопке "Пуск", общая стабильность системы (но я не жаловался на это и работая на Windows XP и 7). 

Хотел бы услышать ваше мнение. В догонку к прошлому опросу, как вы относитесь к Windows 10?

Спасибо за мнение. Как и обещал результаты.


Проголосовало 24 человека. Выводы: большинство смирилось и работает на Windows 10, даже если и не очень нравится.

P.S. ClassicShell, который посоветовал Zeroes в комментариях, я попробовал. Работает стабильно.


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


6 сентября 2016 г.

Как восстановить cofile из datafile транспортного запроса

Как вы прекрасно знаете, в SAP системе есть такая чудесная вещь, как транспортная система (Transport Management System или TMS), которая позволяет производить изменения (настройку и разработку) в одной SAP системе, а в последующем переносить изменения в другие системы. SAP системы с помощью транспортной системы объединяются в ландшафты. В ландшафты можно объединять системы одного типа и одной версии (рис. 1).

Рис. 1. Объединение SAP систем в транспортные ландшафты.

Юнит, в котором в SAP ландшафте переносятся изменения, называется транспортным запросом (Transport Request). Сразу после создания транспортный запрос находится в состоянии "Изменяемо" (Modifiable). А после окончания разработки и готовности импортировать изменения в целевые системы запрос необходимо деблокировать, то есть перевести его в статус "Деблокировано" (Released). Второй статус часто вызывает недоумение, но здесь, как мне кажется, виноват неудачный перевод. По английски он звучит "Released", то есть готовый к импорту в другую систему, а по русски "Деблокировано". Мне кажется, что русское название статуса идёт от того факта, что с объектов, которые лежали в запросе сняли блокировку. Блокировка программ и других объектов ABAP-словаря нужна для того, чтобы исключить одновременное внесение изменений разными программистами в один объект.

Напомню, что один небольшой хинт про статусы запросов я описывал в этом посте.

Стоит учесть, что пока транспортный запрос находится в состоянии "Изменяемо", физически никакие объекты никуда не выгружены и существуют только в исходной SAP системе. Чаще всего это система разработки (DEV). А в запросе хранятся лишь ссылки на данные объекты. И только во время процесса "Деблокирования" или "Releasing" происходит выгрузка объектов, в их текущих версиях, в файлы транспортного запроса. Транспортный запрос представляет собой два файла (рис. 2):
  • контрольный файл в директории /usr/sap/trans/cofiles,
  • дата-файл в директории /usr/sap/trans/data.

Рис. 2. Файлы транспортного запроса.

Контрольный файл или cofile содержит информацию об объектах транспортного запроса, шаги импорта, которые необходимо будет выполнить и т.п. Дата файл содержит экспорт данных из базы данных.

На уровне операционной системы сервера работу транспортной системы обеспечивает утилита tp.

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

Формат команды восстановления следующий:
tp createcofile <транспортный запрос> pf=<path_to_tp_profile> -s <SAP SID>

Пример выполнения на рисунке 3.

Рис. 3. Восстановление контрольного файла из дата файла транспортного запроса.

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

Про транспортную директорию можно найти информацию тут.

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


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


2 сентября 2016 г.

Транзакция ST01: трассировка полномочий

В одном из прошлых постов с названием "Как понять каких полномочий не хватает пользователю?" я описал процесс, как с помощью транзакции SU53 проверить каких именно полномочий не хватает пользователю в SAP системе для выполнения той или иной операции.

Данный инструмент удобен для отлаживания готовой роли или исправления ошибок в полномочиях пользователя. В случае создания новой роли или добавления в существующую роль набора полномочий для выполнения новой операции или бизнес процесса данный инструмент не подходит. Специалист вынужден проходить все проверки полномочий одну за другой, внося изменения в роль. Если проверок больше 2-3, то процесс растягивается во времени и превращается в рутинную операцию.

Поэтому в данном случае, удобнее воспользоваться другим инструментом - транзакцией ST01. Данный инструмент позволяет провести системную трассировку, в том числе и проверяемых полномочий.

Входим в систему под пользователем, который имеет достаточный набор полномочий для выполнения нужной операции или бизнес процесса. Открываем два режима (сессии). В одном режиме запускаем транзакцию ST01 и активируем трассировку, включив опции для трассировки полномочий (рис. 1).

Рис. 1. Активация трассировки для проверки полномочий.

После того, как трассировка активировалась (рис. 2), переходим ко второму режиму.

Рис. 2. Статус об активности трассировки.

Во втором режиме выполняем полностью операцию или бизнес процесс, полномочия для которого мы хотим получить. Например, транзакцию SM04 (список пользователей системы). Можно посмотреть список режимов для пользователя и удалить один режим (рис. 3).

Рис. 3. Запуск транзакции SM04.

Возвращаемся к первому режиму и выключаем трассировку (рис. 4).

Рис. 4. Выключение трассировки в транзакции ST01.

Теперь можно проанализировать журнал трассировки, нажав кнопку "Анализ" (рис. 5).

Рис. 5. Анализ трассировки полномочий.

Устанавливаем фильтр на отображение только записей о проверке полномочий (рис. 6).

Рис. 6. Установка фильтров для чтения журнала трассировки.

Анализируем журнал, получая необходимые нам объекты полномочий со значениями (рис. 7). Обратите внимание, вот наш объект полномочий S_ADMI_FCD из прошлого поста.

Рис. 7. Журнал трассировки полномочий.

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


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