23 сентября 2019 г.

Расширение функциональности транзакции SM04

В статье "Мониторинг рабочих процессов SAP системы" я описывал транзакцию SM50. Данная транзакция используется для мониторинга рабочих процессов ABAP инстанции. Так же в статье упоминалось, что начиная с релиза системы SAP NetWeaver 7.40 SP08, транзакция получила расширенную функциональность и позволяет просматривать рабочие процессы всех инстанций текущей SAP системы. Таким образом, произошла замена функциональности транзакции SM66. При запуске транзакции SM66 в новых релизах SAP систем вызывается транзакция SM50 с расширенным отображением рабочих процессов по всем инстанциям. Запуск старой версии транзакции SM66 возможен через код транзакции SM66_OLD. И в прошлом посте я объяснил, чем она может быть интересна и полезна. 

Теперь хочу рассказать о том, что такие же изменения произошли и в паре транзакций SM04 - AL08. Первая транзакция (SM04) служит для просмотра списка пользователей, выполнивших вход в текущую ABAP инстанцию. В транзакции можно просмотреть список открытых режимов каждого пользователя. Можно закрыть режим пользователя или все режимы, принудительно выбросив пользователя из SAP системы. Это бывает необходимо, например, перед ручным удалением блокировок из таблицы блокировок SAP, о чём я писал тут. Также в транзакции можно просмотреть количество памяти SAP системы выделенной пользователю. Начальный экран транзакции знаком всем тем, кто в той или иной степени приобщён к делу администрирования SAP системы (рис. 1).

Рис. 1. Список пользователей, выполнивших вход в ABAP инстанцию.

Как вы знаете, SAP система поддерживает горизонтальное масштабирование. Производительность уровня сервера приложений SAP может быть увеличена через установку дополнительных диалоговых инстанций, или как их сейчас называют Additional Application Server (AAS). В этом случае для просмотра пользователей, выполнивших вход во все ABAP инстанции текущей SAP системы, необходимо пользоваться транзакцией AL08 (рис. 2).

Рис. 2. Просмотр пользователей по всей системе в транзакции AL08.

В новых версиях SAP систем, основанных на SAP NetWeaver 7.40 SP08 и выше, ситуация немного изменилась. В транзакции SM04 появилась возможность перейти в режим просмотра пользователей по всей системе. Для этого необходимо перейти в пункт меню "Перейти к -> Список по всем системам" (рис. 3).

Рис. 3. Переход к просмотру пользователей по всем инстанциям в транзакции SM04.

После этого в списке появятся пользователи других ABAP инстанций, а в таблицу добавится столбец с именами инстанций серверов приложений (рис. 4).

Рис. 4. Просмотр пользователей по всем инстанциям в транзакции SM04.

И именно этот экран отображается в свежих релизах SAP систем при вызове кода транзакции AL08. 

Для вызова же старой версии транзакции AL08 служит отдельная транзакция - AL08_OLD. 
Кто-то может быть к ней очень сильно привык. :) 

Отличается она от новой версии, например, тем, что список всех инстанций системы с распределением пользователей по ним отображается сразу в верхней части экрана транзакции (рис. 5). Но каких-то функциональных особых "фишек" я в ней не знаю.

Рис. 5. Отображение ABAP инстанций SAP системы и пользователей в них в транзакции AL08_OLD.

Официально об этом в SAP note 2445935 - AL08 new layout as of EHP7.




16 сентября 2019 г.

Развитие SAP NetWeaver. Структура директорий

SAP NetWeaver 7.0 - SAP NetWeaver 7.0 EHP3

Начиная с первых версий SAP NetWeaver 7.0 (первоначальное название версии 2004s), компания SAP для систем, работающих на Unix-like операционных системах, внедрила новую структуру директорий и файловых систем (рис. 1).

Рис. 1. Структура директорий для систем на базе SAP NetWeaver 7.0.

Файловых систем, монтирование которых необходимо выполнить при подготовке операционной системы к установке SAP системы, только две:
  • /sapmnt
  • /usr/sap

Первая файловая система является хранилищем общих файлов для всех инстанций SAP системы:
  • общие файлы, например, журналы фоновых процессов (директория global), 
  • файлы профилей (директория profile), 
  • ядро SAP системы (директория exe).

Вторая файловая система содержит отдельную директорию для транспортной системы (trans), общую логическую директорию (SYS) и директории для каждой инстанции SAP системы:
  • DVEBMGS<No> - директория для центральной инстанции (CI),
  • D<No> - директория для дополнительной инстанции (DI),
  • ASCS<No> - директория для инстанции центральных сервисов,
  • ERS<No> - директория для Enqueue Replication Server (ERS) инстанции, используемой в отказоустойчивых инсталляциях.

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

Вернёмся к директории /usr/sap/<SAPSID>/SYS. Данная директория является в большей степени логической структурой, так как содержит ссылки на реальные директории файловой системы /sapmnt. То есть директории global, profile, run это символьные ссылки на физические директории в другой файловой системе (фиолетовые пунктирные линии на рисунке). На центральную логическую директорию с ядром SAP (/usr/sap/<SAPSID>/SYS/exe/run) указывает параметр SAP системы с именем DIR_CT_RUN. Данная директория является лишь хранилищем для исполняемых файлов ядра, запуска процессов из неё не происходит. Для каждой инстанции системы есть собственная директория с исполняемыми файлами ядра SAP. Например, для центральной инстанции это директория - /usr/sap/<SAPSID>/DVEBMGS<No>/exe. И на эту директорию указывает уже другой параметр - DIR_EXECUTABLE. Вот эти файлы и создают рабочие процессы текущей инстанции.

Зачем же нужно центральное хранилище SAP ядра? Для упрощения поддержки и обновления. Дело в том, что при старте каждой инстанции SAP системы в первую очередь запускается процесс sapcpe, который актуализирует локальные файлы ядра из центрального хранилища. Таким образом, при обновлении SAP ядра системы достаточно только сменить файлы в центральном хранилище (/sapmnt/<SAPSID>/exe), а остальную работу за вас выполнит программа sapcpe. При работы программы создаётся журнал sapcpe.log, который можно найти в локальных work-директориях инстанций. Процесс актуализации ядра SAP инстанций на рисунке 1 отображён пунктирными стрелками черного цвета.


SAP NetWeaver 7.10 - SAP NetWeaver 7.40

Начиная с версии SAP NetWeaver 7.10, структура директорий изменилась. Основная цель изменений - упрощение поддержки гетерогенных установок, когда в системе используются SAP ядра для различных платформ (рис. 2).

Рис. 2. Структура директория для систем на базе SAP NetWeaver 7.10.

Изменения коснулись лишь директории с SAP ядром. В ней появились следующие поддиректории:
  • jvm - содержит файлы виртуальной машины JAVA от SAP (используется с 2011 года),
  • uc/<platform> - содержит исполняемые файлы для Unicode ядра конкретной платформы (например, linuxx86_64),
  • nuc/<platform> - содержит исполняемые файлы для Non-Unicode ядра конкретной платформы.

Количество символических ссылок из директории /usr/sap/<SAPSID>/SYS тоже увеличилось. Концепция при этом осталась прежней: центральное хранилище исполняемых файлов в файловой системе - /sapmnt, а /usr/sap/<SAPSID>/SYS лишь логическая структура с ссылками.

В SAP note # 1104735 - Upgrade to the new instance-specific directory on UNIX описана процедура перевода системы на новую структура директорий при обновлении с ранних версий SAP NetWeaver.



SAP NetWeaver 7.5

Здесь нововведений не так много. Если вы читали пост "Развитие SAP NetWeaver. ASCS инстанция", то помните, что c версии SAP NetWeaver 7.3 произошло переименование инстанций. Это и отразилось в структуре директорий, начиная с версии SAP NetWeaver 7.5 (рис. 3).

Рис. 3. Структура директорий для систем на базе SAP NetWeaver 7.50.

Теперь директории D<No> могут содержать файлы или Primary Application Server (PAS) или Additional Application Server (AAS).

Реальный пример структуры директорий на системе SAP ERP 6.0 EHP8 (основана на SAP NetWeaver 7.50) можно посмотреть на рисунке 4.

Рис. 4. Пример структуры директорий на системе SAP ERP 6.08.


Предыдущие статьи рубрики:
- "Развитие SAP NetWeaver. ASCS инстанция".
- "Развитие SAP NetWeaver. Start profile".
- "Развитие SAP NetWeaver. Мандант 066".


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

9 сентября 2019 г.

Блокировка объектов SAP репозитория в транспортных запросах

При внедрении своих систем компания SAP рекомендует использовать трёхсистемный ландшафт, в который обычно объединены:
  • система разработки и настройки (DEV),
  • система тестирования или контроля качества (QAS),
  • продуктивная система или система промышленной эксплуатации (PRD).

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

Родоначальницей транспортных запросов в ландшафте является система разработки и настройки. Когда разработчик изменяет или создаёт новый объект SAP репозитория (например, программу или функциональный модуль), то для объекта автоматически создаётся транспортный запрос с типом "запрос инструментальных средств" (Worbench request). Так как разработчиков, работающих в системе, обычно больше одного, то для сохранения целостности и безопасности необходим механизм, гарантирующий, что с одним объектом репозиториия одновременно может работать только один разработчик. И до тех пор, пока он не закончит разработку-изменение и не деблокирует запрос (released), объекты привязанные к запросу будут не доступны для изменения со стороны других разработчиков. 

На уровне SAP системы (сервера приложений ABAP) этот механизм реализован с помощью двух таблиц:
  • E071 - хранит записи всех объектов в запросах/задачах,
  • TLOCK - таблица блокировок объектов в открытых запросах.

Таким образом, пока запрос открыт, его объекты должны присутствовать в таблице TLOCK. При попытке других разработчиков (отличных от владельца запроса)  внести изменения в объект репозитория, система проверяет записи в таблице TLOCK. Если запись с объектом есть, то разработчик получает отказ на изменение объекта.

В посте "Использование транзакции SE03 для поиска запросов/задач" (рис. 7) я описывал возможность снять блокировку с объекта транспортного запроса. При использовании этой функции как раз и происходит удаление соответствующей строки из таблицы TLOCK.

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

Иногда в работе данного механизма SAP системы происходит сбой. В результате чего объект SAP репозитория может быть блокирован ошибочно (остались строки в таблице TLOCK) или не блокирован вовсе (нет записей в таблице TLOCK). Второе возможно при использовании вышеуказанного функционала транзакции SE03.

Для отслеживания соответствия объектов в транспортных запросах и их блокировок в SAP системе существует ABAP-программа RDDIT049. У программы нет привязанной транзакции, поэтому запуск осуществляется через транзакцию SE38 (рис. 1).

Рис. 1. Запуск программы RDDIT049.

На начальном экране программы необходимо галочками выбрать необходимые проверки и нажать на панели кнопку "Выполнить" (F8) (рис. 2).

Рис. 2. Запуск проверок блокировок в транспортных запросах.

Первая проверка проверяет все ли блокировки в таблице TLOCK принадлежат открытым запросам. А вторая часть - проверяет все ли блокировки корректны. Результат проверок выводится на экран (рис. 3).

Рис. 3. Результаты проверок.

Текущие блокировки можно просмотреть, просто щелкнув дважды левой клавишей мыши на строку с объектами на экране с результатами.

Если вы столкнётесь с ситуацией, когда транспортная система ругается на блокировки объектов, а открытых запросов с данными объектами в системе нет, то теперь вы знаете где искать корни проблемы и как её исправить.


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


1 сентября 2019 г.

Полезные видео-лекции к дню знаний

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

Академия Яндекса

Первый проект, на который я наткнулся, это видео-лекции "Академии Яндекса". В своё время у них был проект Яндекс.Кит - расшифровывается как "Курсы информационных технологий" (не путать с мобильной операционной системой с идентичным названием). В рамках этих курсов набирали слушателей на лекции по различным направлениям, в том числе и по администрированию операционных систем. Причём, на сколько я понял, обучение проходит в вечернее время и на бесплатной основе. Яндекс после этого из этих групп набирает людей к себе на стажировку, высеивая таким образом наиболее интересных будущих сотрудников. В рамках данного направления курсы последний раз проводились в 2014 году, сейчас у них упор больше на разработчиков. Наверное, администраторов набрали достаточно. :)

Данный курс хорош тем, что курировал его и читал Виктор Ашик. Я уже в свое время натыкался в сети на его видео. Человек очень увлечен концепцией Unix/Linux, знает как глубокие основы, так и много нюансов работы с Linux. Люблю слушать увлечённых своей работой людей.

Рис. 1. Виктор Ашик.



Курс состоит из 7 лекций, записанных в 2011 году. Плейлист из всех 7-ми лекций доступен по ссылке.


Лекториум

Еще один просветительский проект в сети Интернет - Лекториум. На портале есть онлайн-курсы и медиатека с записями уже проведенных курсов. Вот в записях я и обнаружил курс "Архитектура ЭВМ и основы ОС". Читают курс на пару Кирилл и Михаил Кринкины (как я подозреваю, отец и сын).

Рис. 2. Кирилл Кринкин и Михаил Кринкин.

Курс ориентирован на будущих системных программистов, но из 12-ти лекций, только пара была не так интересна и близка мне, как системному администратору. Это там где много про ассемблер, который я с института "не брал в руки". Остальные лекции прекрасны.


Курс из 12 лекции выложен на YouTube, дата записи 2014 год. Весь плейлист можно получить по этой ссылке. 

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


Кому это будет интересно? Прежде всего начинающим специалистам, погружающимся в секреты компьютерных технологий и операционных систем. Отличные лекции по базовым и, часто, практическим вещам. Опытным будет полезно просмотреть в "свободное время". Я начал и так увлёкся, что никаких сериалов не надо. :) 

Полезный совет: лекции легко смотрятся на скорости 1,5х от базовой, а Кирилла Кринкина даже на 2х легко можно понять. 




29 августа 2019 г.

С наступающим днём знаний! Скидки на пакеты обучения SAPADM 2.0

Поздравляю всех с наступающим днём знаний!


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

Ну и по традиции, в связи с праздником, скидка на первый обучающий пакет нового обучающего курса SAPADM 2.0. Пакет 01. Напоминаю, что курс абсолютный новый, полностью переписанный и основанный на версии SAP NetWeaver 7.50 и платформе Linux/Oracle. 

Тому, кто напишет мне на почтовый ящик shibolov@gmail.com до 23:59 6 сентября 2019 года я отдам его за 8 000* рублей. 

А тому, кто купит два первых доступных пакета, я так же сделаю скидку, и отдам их за 22 000* рублей.

Условия акции:
* - в случае покупки первого пакета или обоих пакетов со скидкой, их надо будет оплатить до конца сентября 2019 года.

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


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

26 августа 2019 г.

Век живи, век учись! - II


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



В одном из первых постов этого блога в 2008 году был рассказ о том, как с помощью механизма отладки поменять статус транспортного запроса: из деблокированного (released) сделать его снова открытым на изменения. По прошествии стольких лет я обнаружил более простой способ изменять все атрибуты запроса, включая его статус. В системе существует программа RDDIT076. Проверял в системах основанных на SAP_BASIS от версии 4.6 до SAP NetWeaver 7.50, везде программа существует.

Указать программу RDDIT076 в SE38 (привязанной транзакции к программе нет) и запустить на выполнение (рис. 1). 

Рис. 1. Запуск программы RDDIT076.

На экране выбора в единственном поле указать транспортный запрос, атрибуты которого необходимо изменить, и нажать кнопку "Выполнить" (рис. 2).

Рис. 2. Просмотр атрибутов запроса.

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

Рис. 3. Открытие диалогового окна с атрибутами запроса.

Для редактирования полей нажать на кнопку "Редактирование", а после изменения необходимого параметра или параметров, - кнопку "Сохранения" (рис. 4).

Рис. 4. Изменение параметров транспортного запроса.

Таким образом можно изменить краткое описание, владельца запроса, статус - деблокировано (R) или изменяемо (D). Можно поменять целевую систему и даже исходный мандант (хотя у меня ни разу такой потребности не было). 

Какие-то моменты, например, владельца или краткое описание, можно поменять и через стандартные транзакции работы с транспортными запросами SE01/SE09/SE10 (рис. 5).

Рис. 5. Изменение атрибутов запроса в транзакции SE01.

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

ПРЕДУПРЕЖДЕНИЕ: Будьте внимательны! Описанный отчёт предназначен только для экспертов. Не стоит им злоупотреблять. А при работе с деблокированными запросами будьте крайне осторожны. Все последствия ложатся на Ваши плечи.

Век живи, век учись!



Предыдущие выпуски:


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


19 августа 2019 г.

Мониторинг рабочих процессов SAP системы

Как вы знаете, ядром любой ABAP инстанции SAP системы является ABAP-диспетчер, который управляет рабочими процессами (рис. 1).

Рис. 1. Архитектура ABAP части SAP NetWeaver.

Рабочие процессы разделяются по назначению:
  • диалоговые (DIA) - отвечают за работу диалоговых пользователей системы;
  • фоновые (BTC) - выполняют фоновые задания;
  • обновления (UPD, UP2) - отвечают за обновление данных в таблицах;
  • блокировки (ENQ) - управляют блокировками на уровне сервера приложений;
  • печати (SPO) - отвечают за печать из SAP системы.

Мониторинг рабочих процессов осуществляется в транзакции SM50. Классический вариант транзакции хорошо известен администраторам SAP системы (рис. 2).

Рис. 2. Пример основного экрана транзакции SM50 в системе на SAP_BASIS 620.

Транзакция позволяет выполнять мониторинг всех рабочих процессов текущей инстанции. Процессы могут иметь различный статус - ожидать запросов (простаивать), выполнять задачу, ожидать сообщения или быть остановленными на уровне операционной системы по причине ошибки или сбоя. По каждому процессу можно:
  • просмотреть журнал (пункт меню "Процесс -> Трассировка -> Просмотреть файл"), 
  • перейти в отладку работающей программы (пункт меню "Программа/Режим -> Программа -> Отладка"), 
  • сбросить задачу, работающую на рабочем процессе (пункт меню "Процесс -> Отменить с (без) дампом"),
  • перезапустить процесс после сбоя (пункт меню "Процесс -> Перезапуск после ошибки -> Да").

Для просмотра рабочих процессов всех инстанций SAP системы (в случае использования системы с больше, чем одной ABAP инстанцией) используется транзакция SM66.

В свежих релизах SAP системы (SAP NetWeaver 7.40 SP08 и выше) дизайн и функциональность транзакции SM50 притерпели некоторые изменения (рис. 3).

Рис. 3. Пример транзакции SM50 в системе SAP NetWeaver 7.50.

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

Рис. 4. Отображение только активных рабочих процессов в транзакции SM50.

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

Рис. 5. Получение списка всех рабочих процессов SAP системы в транзакции SM50.

Причем, если запустить транзакцию SM66 в новых релизах SAP NetWeaver, то можно увидеть интерфейс очень похожий на SM50 (рис. 6).

Рис. 6. Пример транзакции SM66 в системе SAP NetWeaver 7.50. 

Такая же кнопка переключения между отображением всех процессов или только активных (рис. 6 и 7).

Рис. 7. Пример транзакции SM66 в системе SAP NetWeaver 7.50 с полным списком рабочих процессов.

Дополнительно есть возможность переключить режим отображения рабочих процессов на отображение только по конкретной ABAP инстанции. Для этого в меню транзакции SM66 есть пункт "Перейти к -> Переключить на инстанцию" (рис. 8).

Рис. 8. Переключение в транзакции SM66 на отображение рабочих процессов конкретной инстанции.

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

Старая версия транзакции SM66 обладала рядом полезных функций, которых я не нашел в новой версии. 

По умолчанию транзакция отображает список активных рабочих процессов всех ABAP инстанций SAP системы. Но на панели есть полезная кнопка "Process Selection", нажав на которую появляется возможность в диалоговом окне настроить режимы отображения (рис. 9).

Рис. 9. Настройка режима отображения процессов в старой версии транзакции SM66.

В диалоговом окне можно ограничить выборку рабочих процессов:
  • по типу, 
  • по статусу, 
  • по пользователю, задачи которого обрабатывает процесс,
  • по времени работы задачи на процессе,
  • по таблице, с которой работает процесс,
  • и так далее (рис. 10).

Рис. 10. Ограничение рабочих процессов для отображения в SM66.

Таким образом, поигравшись с настройками, можно выполнять мониторинг процессов, решая разные задачи. Например:
  • отобразить все фоновые рабочие процессы в системе (рис. 11),
  • отобразить все рабочие процессы, работающие больше определённого периода времени,
  • отобразить все рабочие процессы, которые не обрабатывают в данный момент времени запросы пользователей - для того, чтобы понять сколько свободных ресурсов есть в системе (рис. 12).

Рис. 11. Список всех фоновых процессов в SAP системе.

Рис. 12. Список рабочих процессов в статусе "Ожидает".

Но для новых версий систем (SAP NetWeaver 7.40 SP08 и выше) не всё потеряно. Старая версия транзакции SM66 доступна через транзакцию SM66_OLD, за которой скрывается та же программа - SAPMSM66.




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