Установка SAP в Яндекс.Облаке

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

SAP в компании X

Представьте себе большую производственную компанию. Назовём эту абстрактную компанию как «X».

SAP EWM

Как театр начинается с вешалки, так и производство в компании X начинается с её склада. Чтобы быть сильным и конкурентным игроком на рынке, этой компании нужен современный, а это значит автоматизированный склад. Сырьё должно бесперебойно поставляться на производство, а готовая продукция отгружаться дистрибьюторам. Подбор сырья и готовой продукции должен вестись с соблюдением сложной бизнес-логики, например, в производство должно отправляться сырье с более ранним сроком годности. За всё это на складе отвечает SAP EWM.

SAP ERP

Как и в любой компании, которая следит за качеством своей продукции, в компании X реализован входной контроль сырья и выходной контроль готовой продукции. За это отвечает модуль QM.

Компании X нужны инструменты для планирования производства, инструменты которые позволят вовремя сделать закупки сырья и оптимально загрузить работу оборудования. За это отвечает модуль PP/DS. Само же оборудование должно сообщать о необходимости ремонта и планового обслуживания. За это отвечает SAP MII.

За входящие и исходящие поставки, всевозможные накладные и выстраивание сложных логистических цепочек внутри компании и с внешними контрагентами в компании X отвечают модули MM и SD. Выпускаемая в компании X продукция подлежит маркировке. За получение у государства QR-кодов, а также за отправку в государственные органы сведений о том какая продукция была с этими QR кодами выпущена отвечает SAP ATTP.

Как и положено каждой крупной компании в X есть свой отдел кадров, который отвечает за приём сотрудников на работу, предоставляет справки и ведёт личное дело работника. За это отвечает модуль HCM-HR. Также работникам в компании X необходимо производить начисление и выплату заработной платы, премий, декретных пособий. За это отвечает SAP ERP — модуль HCM-Payroll.

Как и в других крупных компаниях, в Х широко используются возможности корпоративного портала, сотрудники получают доступ к новостям, форумам, контактной и справочной информации. За это отвечает SAP Enterprise Portal. Невозможно представить и компанию без бухгалтерии, где за кассовые и банковские операции, предоставление отчётности и закрытие финансового периода отвечает модуль FI, а за различные виды учётов затрат и расчёт себестоимости продукции отвечает SAP ERP — модуль CO.

SAP OpenText

Масштаб компании не позволяет X обойтись без системы электронного документооборота (СЭД), различные цепочки согласования проходит и заявка на отпуск рядового сотрудника и многомиллионный договор на закупку нового оборудования. За это отвечает SAP OpenText.

Для заказов от дистрибьюторов в компании X используется B2B решение на базе SAP Hybris. Полученные через веб-витрину заказы загружаются в ERP-систему через единую шину данных компании на базе SAP PO. Через эту шину проходят и все другие информационные потоки, связывающие SAP-системы с системами других производителей, например, системой бюджетирования Infor, и с внешними сервисами, например, с системой юридически значимого электронного документооборота СБИС. Для принятия решений, руководящим сотрудникам компании X постоянно требуется аналитическая отчётность, в которой за консолидацию, хранение и подготовку данных отвечает SAP BW.

За мониторинг систем, репозиторий кода, прослеживаемость изменений и другие аспекты жизненного цикла SAP-систем в компании X отвечает SAP Solution Manager.

Типы SAP-систем

Приведённый выше пример достаточно условен. В зависимости от специфики той или иной компании меняется и набор модулей в SAP ERP и stand-alone-систем, которые в ней используются.

Теперь попробуем разобраться в типах SAP-систем. Условно их можно разделить на следующие категории:

  • ABAP. SAP-системы, построенные на платформе SAP NetWeaver ABAP Application Server (ABAP — это проприетарный язык программирования, разработанный в SAP и использующийся только в программных продуктах этой компании). Для приведенной в качестве пример компании X — ABAP-системами будут SAP ERP, SAP EWM, SAP Solution Manager и SAP ATTP.
  • JAVA. SAP-системы построенные на платформе SAP NetWeaver Java Application Server. В основе разработки лежит популярный в Enterprise — среде язык Java. Для компании X — это SAP Enterprise Portal. SAP PO, SAP MII и ещё раз SAP Solution Manager (SolMan — это dual-stack решение).
  • OTHER. В третью категорию попадают системы, которые достались SAP в ходе поглощения других компаний и к классической архитектуре SAP прямого отношения не имеют. Как правило это JAVA-системы использующие Apache и Tomcat. Для компании X — это SAP Hybris и SAP OpenText.

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

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

SAP в Яндекс Облаке

Шаг 1. Скачиваем установочные файлы SAP

Заходим на портал SAP Community Trials and Downloads. В строке поиска укажем, что хотим загрузить SAP NetWeaver AS ABAP Developer Edition 7.52 SP04.

Загружаем все 11 частей RAR-архива, внутри в котором SAP Application сервер, база данных SAP ASE и Frontend — клиент SAP Logon.

SAP Application

Шаг 2. Создаём виртуальную машину в Яндекс.Облаке

Для подключения к виртуальной машине в Яндекс.Облаке необходимо сгенерировать пару Public/Private ключей.

Смотрите пошаговые инструкции для Linux/macOS и Windows 10 в документации.

Для машин с ОС Windows 7/8 понадобится следующий бесплатный софт:

  • PuTTY — SSH-клиент.
  • PuTTYgen — Генератор Public/Private ключей.
  • WinSCP — SFTP-клиент.

Создадим связку Public-Private ключ с помощью PuTTYgen.

PuTTYgen

Регистрируемся / заходим в Яндекс Облако (https://cloud.yandex.ru/). Переходим в раздел Compute Cloud и приступаем к созданию виртуальной машины.

Важно

Необходимо иметь в виду, что имя виртуальной машины при создании должно быть задано как vhcalnplci. Именно на этот hostname завязан скрипт установки SAP.

Зададим подходящие для SAP NetWeaver AS ABAP Developer Edition характеристики ВМ:

  • vCPU — 2
  • RAM — 6 GB
  • SSD — 13 GB

В качестве операционной системы выберем последнюю стабильную ОС OpenSUSE, на момент написания статьи — это версия ОС OpenSUSE 42.3. Загрузочный диск 13 ГБ.

Создание ВМ

Укажем Логин и Public SSH-ключ, сгенерированный с помощью PuTTYgen

SSH ключ

В разделе Диски создаем отдельный диск на 87 ГБ.

Создание диска

Шаг 3. Подготавливаем виртуальную машину к установке SAP

Находим в настройках Публичный IPv4 адрес:

IP адрес

Подключаемся к созданной ВМ с помощью Putty-клиента, указав в подключении публичный IPv4, заданный логин и путь к Private–ключу.

Подключение к ВМ

Подготовим файловую структуру созданной ВМ к установке SAP.

lsblk

sda — boot диск, sdb — диск под данные.

Проверка дисков ВМ

Создадим на нём два раздела под дистрибутивы (20 GB) и SAP (остальное), сделаем это с помощью утилиты fdisk:

fdisk /dev/sdb

Создание раздела с дистрибутивами

Создание раздела SAP

Проверим ещё раз структуру дисков и создадим файловую систему ext4:

lsblk
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2

Проверка структуры

Создадим директории под дистрибутив и SAP Application Server, а также примонтируем к ним созданные на предыдущем шаге разделы. Также обновим файл /etc/fstab, чтобы монтирование восстанавливалось при перезагрузке.

mkdir /usr/sap
mkdir /distr
mount /dev/sdb1 /distr
mount /dev/sdb1 /usr/sap
vi /etc/fstab

Создание директорий

Обновление /etc/fstab

Импортируем в WinSCP настройки из Putty. Подключимся к ВМ и загрузим в /distr установочные файлы SAP.

SAP installation pack

Установим и запустим UUIDD демон. UUIDD — universally unique identifiers (этот сервис требуется для работы SAP)

zypper install uuidd
service uuidd start

UUIDD

Проверим наличие библиотек libaio / libaio1. В версии openSUSE 42.3 эти библиотеки есть, поэтому шаг носит опциональный характер.

rpm -qa | grep libaio
rpm -qa | grep libaio1

Libraries

С помощью команды ifconfig находим внутренний IPv4-адрес и добавляем его в виде такой строчки в файл /etc/hosts:

vi /etc/hosts

<inet addr> vhcalnplci vhcalnplci.ru-central1.internal

ifconfig

Установим разрешение на папку с установочными файлами SAP:

chmod -R 777 /distr

Шаг 4. Устанавливаем SAP

Запускаем скрипт инсталляции с правами root — пользователя.

cd /distr ./install.sh

Install SAP

Соглашаемся с условиями лицензионного соглашения.

License Agreement

Указываем мастер-пароль для пользователей, которых SAP создаст во время инсталляции.

Password

SAP NetWeaver 7.52 SP04 и база данных SAP ASE успешно установлены и запущены.

Installation complete

Шаг 5. Запуск SAP и пост-инсталляционные шаги

Устанавливаем Front-End клиент SAP Logon.

Настраиваем строку подключения:

Application Server — публичный IPv4-адрес Instance number — 00 System ID — NPL

Connection parameters

После установки нам доступны манданты 000 и 001. 000 — Технический мандант для настроек и обновлений. Создаётся во всех SAP-системах. 001 — Мандант для работы.

  • Мандант — это логическое разделение системы и базы данных. Классический пример использования мандантов — это разделение системы между филиалами одной компании, где есть манданто-зависимые данные, например, учетные записи сотрудников, и манданто-независимые, например, версия ядра и компонентов системы.

Авторизоваться можно под одним из следующих предустановленных пользователей:

Users

В целях безопасности рекомендуется зайти под пользователем SAP и сменить стандартные пароли. Сделать это можно в транзакции SU01.

  • Транзакция в SAP — это технически ярлык на ABAP-программу. Для SU01 запуск этой транзакции — это вызов программы SAPLSUID_MAINTENANCE. Код транзакции необходимо вводить в строке Command Field либо добавлять их в Favorites.

Users

SAPLSUID_MAINTENANCE

Logon data

Шаг 6. Обновление лицензии

Для продолжения работы требуется обновить начальную лицензию. Для этого необходимо перейти в транзакцию SLICENSE и скопировать значение Active Hardware Key.

Active Hardware Key

Переходим на портал SAP License Keys for Preview, Evaluation and Developer Versions:

https://go.support.sap.com/minisap/#/minisap

Выбираем пункт NPL — SAP NetWeaver 7.x (Sybase ASE). Заполняем Имя, Фамилию и Hardware Key, скопированный из SLICENSE.

Active Hardware Key

Загружаем сгенерированный файл с лицензией (NPL.txt) в транзакции SLICENSE.

Active Hardware Key

Шаг 8. Начало работы

Заходим в SAP под предустановленной учетной записью DEVELOPER и приступаем к разработке. Для этого запускаем транзакцию SE38 и создаём ABAP — программу ZTEST, в которой реализуем простой отчёт выгрузки существующих в системе пользователей (записи из таблицы USR01).

Developer

ABAP — код:

TYPE-POOLS: slis.
  
*&---------------------------------------------------------------------*

*& Data Declaration

*&---------------------------------------------------------------------*

DATA: it_usr01     TYPE TABLE OF USR01.
DATA: it_fieldcat  TYPE slis_t_fieldcat_alv,
      wa_fieldcat  TYPE slis_fieldcat_alv.`

*&---------------------------------------------------------------------*

*& START-OF-SELECTION`

*&---------------------------------------------------------------------*

START-OF-SELECTION.
*Fetch data from the database
  SELECT * FROM USR01 INTO TABLE it_usr01.
  
*Build field catalog
  wa_fieldcat-fieldname  = 'MANDT'.    
  wa_fieldcat-seltext_m  = 'MANDT'.  
  APPEND wa_fieldcat TO it_fieldcat.

  wa_fieldcat-fieldname  = 'BNAME'.
  wa_fieldcat-seltext_m  = 'USER'.
  APPEND wa_fieldcat TO it_fieldcat.

* display ALV list
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat   = it_fieldcat
    TABLES
      t_outtab      = it_usr01
    EXCEPTIONS
      program_error = 1
      OTHERS        = 2

Результат вывода:

Results

Заключение

Установить SAP и написать свою первую программу оказалось достаточно просто. В следующей части этой серии блогов установим в Яндекс Облаке базу данных со встроенным веб-сервером SAP HANA XS и напишем своё первое веб-приложение для неё.

  • Туториалы