31 августа 2018 г.

Всех с днём знаний! Скидки на обучение!

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



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

Ну и по традиции, в связи с праздником, скидка на первый обучающий пакет SAPADM_01.

Тому, кто напишет мне на почтовый ящик shibolov@gmail.com до 23:59 5 сентября 2018 года я отдам его за 8 000* рублей. 
А тому, кто купит все пакеты (а их на данный момент 5), я так же сделаю скидку, и отдам их все за 25 000* рублей.

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

Подробности про все обучающие пакеты и отзывы по ссылке.


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

27 августа 2018 г.

Компьютерный Мастер с "большой буквы"


Повесили у нас на подъезде, не смог не сфотографировать.

Как вам мастер? Никого не узнаете на фотографии?)

Как думаете, в объявлении правда написана и Windows из-за денег предпочтительнее, или он всё-таки тайно всем Linux ставит, когда приходит? :)


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

15 августа 2018 г.

НОУ "ИНТУИТ": изучение ОС Linux

Когда я только начинал свою карьеру после окончания института, в сети появился интересный проект - национальный открытый университет "Интуит" (НОУ "Интуит"). Мне кажется, тогда он назывался как-то попроще. На сайте университета выложено большое количество онлайн-курсов, которые можно пройти совершенно бесплатно.

В году 2004-м я зарегистрировался на этом сайте и прошел несколько онлайн-курсов, но потом забыл про этот проект. Этой весной у меня появилось время и желание вернуться к университету и посмотреть, что там есть для меня. Я выбрал 2 курса по ОС Linux и хочу поделиться впечатлениями, может быть кому-то пригодится.


1. Курс "Администрирование ОС Linux". Формат текстовый. Длительность указана чуть меньше 11 часов. Но если проходить основательно: делать свои записи-пометки, проверять что-то сразу в системе, проходить тестирование только на "отлично" и перечитывать материал перед каждым тестом, то уйдет конечно около недели работы по 2-3 часа в день. Автором курса является Сергей Гончарук (если я не ошибаюсь, то это один из авторов сайта ПроЛинукс и автор постов на Habr). Курс мне понравился. На твёрдые четыре бала, с учётом доступности. Открыл для себя несколько интересных моментов, которые не знал. Например, команды pushd, popd, сохраняющие историю переходов по директориям в стек. Или команду tac, которая выводит содержимое файла в обратной последовательности.
Претензия к курсу одна - устаревшая в некоторых аспектах информация. Например, в плане инициализации (запуска) системы. Если вы начинающий администратор, то потратить время на курс можно смело.




2. Курс "Внутреннее устройство ядра Linux". Формат видео-лекций, что мне нравится меньше. Нельзя просматривать весь материал целиком, найти и перепрыгнуть на конкретное место, зависимость скорости изучения от автора. Автор - Павел Емельянов. Судя по всему, один из прямых разработчиков ядра Linux, линуксоид до последнего волоска бороды и очень увлечённый человек. Интервью с ним можно прочитать, например, тут.
Не смотря на видео формат курса, недостаточную структуру и требования к хорошей подготовленности слушателей, курс мне понравился. Автор рассказывает очень интересные и глубокие вещи, хотя набор тем и ограничен. Понравилась манера преподавания - постановка вопроса-проблемы и подталкивание студентов к поиску решения.
Как мне кажется, курс больше рассчитан на программистов для ОС Linux, но мне тоже было интересно. Хотя тестирование для меня было тяжелым. Сдавал на "хорошо", на "отлично" сдать попытки бросил. :)
Резюме: советую, но только средне-подготовленному слушателю.

В целом, для начинающего специалиста университет "Интуит" неплох. Особенно в силу доступности материала, организации тестирования после каждого этапа-урока. Но, в комплексе, я вижу, что организаторы проекта просто выискивают "курсы" со всех возможных ресурсов, единой программы и развития нет, курсы устаревают и не обновляются. Например, вот этот курс - "Введение в системное администрирование Unix" Максима Мошкова это просто копия его онлайн-методички с lib.ru.

Подтверждает правило: сколько заплатишь, столько и получишь. Профессиональных курсов, которые читаются за деньги, тут не ждите.


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

10 августа 2018 г.

Мастер-класс по чтению ABAP кода

Как вы знаете, мои посты появляются не только на этом сайте, но и на портале SAPLand, где я являюсь постоянным автором с 2012 года. И как автор статей, я имею право посещать их мастер-классы, которые они проводят дважды в год, на безвозмездной основе. В прошлый раз я был на прекрасном мастер-классе от Михаила Вронского по SAP HANA. Мой небольшой отчёт доступен по этой ссылке.

Этой весной, 19 апреля 2018 года, я побывал на мастер-классе у Олега Башкатова. Мастер-класс назывался "Read ABAP или чтение ABAP-кода". У Олега есть свой сайт - http://olegbash.ru/. Наполнение которого, как я понял, находится в процессе. Олег так же является активным автором портала SAPLand. Связаться с ним можно по почте - it@olegbash.ru.



Мастер-класс ориентирован прежде всего на неABAP специалистов, то есть функциональных консультантов. По мере работы им часто приходится ставить задачи разработчикам и писать технические задания (ТЗ). Логично предположить, что умение разбираться в коде и знание основ и возможностей языка, позволит им общаться с разработчиками на одном языке, а гладкий процесс общения специалистов позволит ускорить разработку программного обеспечения. Этот мастер-класс подразумевает получение таких навыков.

Хочу сразу "отругать" организаторов мероприятия, SAP Land. Я посещаю уже второй мастер-класс, и везде одна и та же картина! Где они находят таких специалистов? Это никуда не годится. Человек на столько увлечён своим делом, что готов делиться своими знаниями без перерывов и обеда! На обоих мастер-классах информации не на 6-8 часов однодневной встречи, а, как минимум на 2 полноценных дня! Энтузиазм захватывает так, что и ты забываешь про кофе и обед. Конечно, невозможно вместить невместимое. И начинаешь жалеть, что ты не Нео из фильма "Матрица", который за пару минут, просто подключив кабель к голове, выучил Кунг-Фу.


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

Вернёмся к данному мастер-классу. Автор рассказал, что такое ABAP, откуда у него ноги растут. Вы, кстати, знали, что прототипом ABAP был COBOL, один из самых живучих языков на планете? А что придумала его женщина по имени Grace Hopper? Почитайте, например, тут.


А что ABAP изначально только читал из базы данных и формировал отчёты, а писать не мог? ABAP тоже пытались "хоронить", о чём я слышал уже много раз, но язык развивается и используется. Почитать про это можно тут.

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

Большая часть времени была уделена на рассказ про все виды точек останова и работу с отладчиком.

Расширения стандартного кода, поиск BAPI, инструменты для анализа кода и производительности. Как я уже "ругался", информации очень много.

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

К сожалению, формат мастер-классов не подразумевает практическую работу слушателей с системой. Но, если добавить задания, то и мастер-класс надо удлинять на 2-3 дня, а это, в свою очередь, скажется на цене. В целом, я считаю, формат хороший: за один день вы получаете большой объем знаний и информации из первых рук.

Организованы мастер-классы были на базе учебного центра "Специалист при МГУ им. Н. Э. Баумана", как и в прошлый раз. Всё было хорошо. Даже кофе в этот раз был из машины, а не растворимый. Что явно жирный плюс.


У меня есть претензия только к бумажным материалам, которые выдали слушателям (первая фотография). Там просто читать нечего. Но! Это было компенсировано zip-архивом, который Олег выслал всем участникам. В архиве собрана вся информация, заметьте, на 2-3 дня изучения, с распечатками интересных SAP-нот, примеров использование, экранов из системы и ссылок. Просто полное собрание сочинений на тему.

Спасибо еще раз Олегу за прекрасный мастер-класс.

P.S. Забыл сказать, что еще получил от автора книгу с автографом - "Транзакция LSMW: инструкция по применению", что было приятной неожиданностью.


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

24 января 2018 г.

Транзакция SE14 : утилита базы данных. Дополнение.

В 2013 году я опубликовал пост "Транзакция SE14 : утилита базы данных", в которой описал основные моменты по использованию этой транзакции.

Как вы помните, в SAP системе существует два словаря:
  • ABAP Dictionary на уровне севера приложений,
  • Database Dictionary на уровне базы данных.

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

Рис. 1. Два словаря системы.

Давайте спустимся в кроличью нору немного глубже. :)

Когда я рассказывал про SAP Program buffer на уровне сервера приложений SAP, я упоминал про ABAP loads, которые генерируются для каждой ABAP программы и запускаются ABAP процессором в рабочих процессах инстанции. Для таблиц ситуация похожая. Для каждого объекта ABAP Dictionary (таблицы/домена/структуры и т.п.) существует динамический объект (Runtime object), который генерируется на основе записи из SAP словаря, и содержит техническую информацию об объекте. ABAP программа работает с элементами ABAP словаря не напрямую, а через динамические объекты.

Динамический объект генерируется автоматически при активации (транзакция SE11: ABAP словарь) новой таблицы или внесении изменений в существующую. Динамический объект можно просмотреть, если в транзакции SE11 выбрать пункт меню "Утилиты -> Динамический объект -> Просмотреть" (рис. 2).

Рис. 2. Просмотр динамического объекта для таблицы.

Динамические объекты, которые являются активными в текущий момент времени, отображаются в виде двух частей (рис. 3):
  • заголовок (хранится в таблице DDNTT),
  • описание полей (содержится в таблице DDNTF).

Рис. 3. Пример динамического объекта для таблицы T000.

Таблицы, в которых хранятся активные динамические объекты, существуют только на уровне базы данных и их нет в ABAP Dictionary. Поэтому посмотреть их структуру можно только в транзакции SE14 или на уровне базы данных. А для просмотра содержимого можно воспользоваться функциональным модулем DD_SHOW_NAMETAB (транзакция SE37). При обновлении объектов через транспортные запросы используется аналогичная пара таблиц для временного хранения неактивных объектов ABAP словаря - DDXTT и DDXTF.

Для того, чтобы проверить корректность динамического объекта, то есть соответствие его активному объекту ABAP словаря, необходимо в SE11 или SE14 выбрать пункт меню "Утилиты -> Динамический объект -> Проверить" (рис. 2). Результатом проверки будет окно вида (рис. 4).

Рис. 4. Результаты проверки динамического объекта.

Вернемся обратно к основной теме.

Почему я всё это рассказал? А потому что объект в Database Dictionary создается на основе динамического объекта (Runtime object). То есть только для активного объекта ABAP словаря, который прошёл все проверки на уровне сервера приложений SAP. И, если мы хотим проверить объект базы данных, выбрав в SE11 пункт меню "Утилиты -> Объект базы данных -> Проверить" (рис. 5), то будет произведена сверка объекта из Database Dictionary и динамического объекта на уровне сервера приложений SAP.

Рис. 5. Проверка объекта базы данных.

Таким образом, можно отобразить взаимосвязь объектов следующим образом (рис. 6).

Рис. 6. Работа с объектами в словарях данных системы SAP.

Иногда во всей этой отлаженной машине возникают коллизии. В основном, при изменении объектов ABAP словаря - перенос транспортных запросов, импорт пакетов обновлений и так далее.

Хочу рассказать историю, которая произошла у меня на проекте в канун последнего Нового Года. Разработчик расширил таблицу на одно поле в системе разработки. Так как тестовой системы временно не было (тут можно вспомнить о важности тестовой системы), было принято решение импортировать запрос с изменениями в продуктивную систему перед новогодними каникулами. При импорте запроса разработчик не учёл, что за время работы с данной функциональностью в системе, таблица выросла на 200 миллионов записей (как у классика: за время в пути собачка могла подрасти). В итоге, импорт запроса проходил успешно. Активация изменений в таблице на уровне ABAP словаря тоже выполнялась успешно. Изменённый динамический объект генерировался, а вот дальше происходил сбой. Таблица на уровне базы данных упрямо не хотела адаптировать изменения - добавлять новое поле.

Что же может помочь при решении проблем с объектами ABAP словаря?

Во-первых, два инструмента - транзакции SE11 и SE14, которые можно использовать для локализации проблемы. Необходимо проверить статусы объекта на уровне всех словарей: динамический объект, таблицу на уровне базы данных. Нет ли где несоответствий и ошибок. При работе системы с некорректным динамическим объектом возникают дампы вида DDIC_TYPE_INCONSISTENCY, DDIC_TYPELENG_INCONSISTENT, DDIC_TYPE_REF_ACCESS_ERROR, TYPELOAD_NEW_VERSION и т.п.

Во вторых, при проблемах на уровне базы данных: для создания отсутствующих объектов или активации изменений на уровне базы данных необходимо использовать транзакцию SE14 (первый пост про транзакцию SE14).

В-третьих, при коллизиях с динамическим объектом можно попробовать удалить его (то есть записи из таблиц DDNTT и DDNTF) через функциональный модуль DD_NAMETAB_DELETE (транзакция SE37). После этого динамический объект можно попробовать заново сгенерировать через активацию таблицы в транзакции SE11.

Ну и наконец, при проблемах с объектом базы данных, когда объект ABAP словаря и динамический объект консистентны, а объект базы данных не проходит проверку, можно осторожно выполнить операцию пересоздания динамического объекта (Runtime object), при этом взяв в качестве источника данных - таблицу на уровне базы данных. Напоминаю, что обычно для генерации динамического объекта используется объект ABAP словаря.
Для пересоздания необходимо войти в транзакцию SE14 в 000 манданте под пользователем DDIC. Задать необходимую таблицу и выбрать пункт меню "Таблица -> Реконструировать" или "Table -> Reconstruct" (рис. 7).

Рис. 7. Инициирование пересоздание динамического объекта из таблицы на уровне базы данных.

Так как после этой операции динамический объект скорее всего будет не соответствовать объекту в ABAP словаре, обязательно в SE11 активировать таблицу ещё раз, приведя в соответствие динамический объект и объект ABAP словаря.

Так же стоит иметь ввиду, что во время пересоздания объекта с данными на уровне базы данных, используется пространство в табличном пространстве PSAPUNDO (или PSAPROLL). А при пересоздании индекса для таблицы - пространство в табличном пространстве PSAPTEMP. При внесении изменений в большие таблицы имейте это в виду.

Возвращаясь к моей новогодней истории, я потратил 2 дня на решение проблемы. Изначально импорт и активация таблицы не произошли корректно из-за недостаточного места в PSAPROLL, а потом, после 3-4 автоматических попыток адаптировать таблицу на уровне базы данных, система уже не реагировала на несоответствия между словарями. Пришлось пересоздать динамический объект указанным выше способом. Расширить место во всех необходимых табличных пространствах, включая табличные пространства, в которых хранилась сама таблица и её индексы, и запустить процесс адаптации таблицы и её индексов в ручном режиме через SE14. 2 дня были потрачены из-за длительности обработки таблицы с таким количеством записей.

После решения всех проблем, обязательно проверьте динамический объект и объект базы данных через соответствующие пункты меню в SE11/SE14.

Полезные SAP ноты на данную тему:


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


19 января 2018 г.

SAP Download Manager 3.1.1

В ноябре 2017 года в очередной раз обновилась утилита для скачивания дистрибутивов программных продуктов SAP и обновлений для них. Последняя версия на данный момент это 3.1.1.

Для скачивания утилиты самой утилиты не требуется. :) Скачивание архива происходит напрямую по нажатию на номер архива (рис. 1).

Рис. 1. Скачивание новой версии SAP Download Manager.

В загруженном zip-архиве находится jar-файл с утилитой. Как и в предыдущей версии, про которую я писал в этом посте, процесса установки нет, а вся программа находится в одном файле, который одинаково работает на Windows/Mac OS/Linux и т.п.

При первом запуске инициируется начальный процесс настройки. Сразу бросается в глаза новый значок: привет облачным технологиям (рис. 2).

Рис. 2. Запуск начальной настройки утилиты.

На следующем экране указываем настройки соединения с порталом: адрес, S-пользователь и пароль. Стоит отметить, что адрес портала по-умолчанию в новой версии стоит некорректный - https://tech.support.sap.com (рис. 3). Необходимо указать, как раньше, - https://service.sap.com (рис. 4).

Рис. 3. Экран настройки соединения SAP Download Manager 3.1.1.

Рис. 4. Экран настройки соединения SAP Download Manager 2.1.143.

Далее, как обычно, настраивается целевая директория для хранения скаченных файлов (рис. 5).

Рис. 5. Настройка целевой директории.

Основной экран утилиты после смены основного номера версии претерпел явные изменения, прежде всего в дизайне (рис. 6). Так же стоит отметить появление на панели новой кнопки "Download new version SAP Download Manager". Эта кнопка становится активной, если на SAP портале появляется новая версия утилиты. И теперь обновить утилиту можно будет прямо из основного экрана программы.

Рис. 6. Основной экран утилиты SAP Download Manager.

Дизайн мне понравился. Единственное, что сильно бросается в глаза, как инородный элемент, это новая иконка программы. Ну мы не дизайнеры, привыкнем. :)

Еще одно нововведение касается меню "Help". Помимо классического пункта, нажав который можно увидеть номер текущей версии программы (рис. 7), появился пункт "SAP Download Manager online help" (рис. 8).

Рис. 7. Просмотр текущей версии утилиты.

Рис. 8. Ссылка на подробную документацию по утилите.

Открыв страницу по данной ссылке, можно найти подробную документацию по установке, настройке и работе с SAP Download Manager с подбором SAP нот в конце.

Дополнительно в диалоговом окне с информацией по текущей версии приложения во вкладке "System information" можно поменять дизайн приложения, посмотреть сколько памяти использует Java и принудительно очистить, занимаемую память, нажав кнопку "Force GC" и вызвав Java garbage collector (рис. 9).

Рис. 9. Дополнительные опции SAP Download Manager.

В командной строке Linux для запуска Java-приложения необходимо выполнить команду вида:
> java - classpath DLManager.jar dlmanager.Application 
Поэтому я рекомендую создать небольшой bash-скрипт для запуска, в котором прописать данную команду, и в дальнейшем запускать через скрипт (рис. 10). В остальном работа с утилитой ничем не отличается от Windows или Mac OS.

Рис. 10. Пример работы с утилитой в Linux.


В итоге, стоит отметить ряд значительных нововведений:
  • полностью переработанный дизайн,
  • произведенная оптимизация: размер уменьшился с 4 Мб до 2 Мб,
  • добавление оповещения о наличии обновлений для утилиты с возможностью скачать новую версию прямо из приложения,
  • добавление ссылки на свежую подробную документацию.

Предыдущие мои посты про SAP Download Manager:


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

28 декабря 2017 г.

Опрос: что будет с блогом в 2018 году?


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

Просьба высказать своё честное мнение.

Опрос закончен. Спасибо всем, кто участвовал.

В опросе приняло участие 58 человек. Большинство требует "продолжения банкета" без изменения формата (рис. 1).

Рис. 1. Результаты опроса.


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

Один человек предложил переходить на написание статей на других ресурсах. И у меня есть предположение кто это мог быть. :)

Географию читателей можно посмотреть на диаграммах (рис. 2 и 3).

Рис. 2. География читателей по странам.


Рис. 3. География читателей из России по городам.

Выводы из итогов опроса я делаю такие, что надо продолжать вести блог. Другого варианта вы мне не дали. 10 лет скоро будет, как я его веду. Ну что ж, the show must go on!

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

Ну и напоминаю, что мне всегда можно написать на shibolov@gmail.com. Комментарии, критика, предложения, всё туда. Читаю обычно всё.

P.S. Еще одно нововведение - писать комментарии к постам теперь можно без регистрации.


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