Язык программирования sap erp + видео обзор

SAP — язык программирования (ABAP)

В этой главе дается обзор ABAP — языка программирования, используемого в SAP для разработки поддержки и разработки бизнес-приложений.

ABAP (Расширенное программирование бизнес-приложений)

ABAP — это язык программирования, работающий в среде выполнения SAP ABAP, созданный и используемый SAP для разработки прикладных программ, включая:

Все приложения R / 3 и даже части его базовой системы были разработаны в ABAP.

ABAP — это язык программирования, управляемый событиями. Действия пользователя и системные события управляют выполнением приложения.

ABAP также называется ABAP / 4. «4» в ABAP / 4 означает «язык четвертого поколения» или 4GL.

ABAP Workbench

ABAP Workbench используется SAP для разработки стандартного и специального прикладного программного обеспечения. ABAP Workbench также используется для создания объектов словаря. Он состоит из следующих компонентов —

ABAP Editor используется для поддержки программ.

Словарь ABAP используется для поддержки объектов Dictionary.

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

Меню Painter используется для разработки графических пользовательских интерфейсов, включая строки меню и панели инструментов.

Screen Painter используется для поддержки компонентов экрана для онлайн-программ.

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

ABAP Editor используется для поддержки программ.

Словарь ABAP используется для поддержки объектов Dictionary.

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

Меню Painter используется для разработки графических пользовательских интерфейсов, включая строки меню и панели инструментов.

Screen Painter используется для поддержки компонентов экрана для онлайн-программ.

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

Язык программирования sap erp

Примечание. Инструментальные средства ABAP раньше назывались инструментальными средствами разработки ABAP / 4.

Составление отчетов

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

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

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

SAP Query или Ad-hoc Query или InfoSet Query — это инструмент, который позволяет конечному пользователю создавать различные запросы на основе разных входных и выходных параметров в системе SAP в соответствии с требованиями. Это один из инструментов отчетности, который в основном используется в модуле управления персоналом для извлечения данных из реляционных баз данных. InfoSet Query подходит для создания отчетов во всех областях системы SAP R / 3.

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

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

SAP Query или Ad-hoc Query или InfoSet Query — это инструмент, который позволяет конечному пользователю создавать различные запросы на основе разных входных и выходных параметров в системе SAP в соответствии с требованиями. Это один из инструментов отчетности, который в основном используется в модуле управления персоналом для извлечения данных из реляционных баз данных. InfoSet Query подходит для создания отчетов во всех областях системы SAP R / 3.

Специальный запрос предоставляет три различных вида отчетов:

Основной список — Простые отчеты.

Статистика — отчеты со статистическими функциями, такими как среднее, процент и т. Д.

Ранжированный список — для аналитических отчетов.

Основной список — Простые отчеты.

Статистика — отчеты со статистическими функциями, такими как среднее, процент и т. Д.

Ранжированный список — для аналитических отчетов.

Код транзакции, используемый для доступа к специальным запросам —

SQ01 — Ведение запросов

SQ02 — Показать инфо-набор

SQ03 — Ведение групп пользователей

SQ01 — Ведение запросов

SQ02 — Показать инфо-набор

SQ03 — Ведение групп пользователей

Ввод данных

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

Данные могут быть перенесены из SAP в SAP или SAP в не-SAP-системы (устаревшая система). Данные также могут быть переданы с помощью ручного ввода. Инструменты, используемые для передачи данных, следующие:

печать

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

В системе SAP требуются различные методы печати, такие как —

Язык программирования sap erp

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

Общее программирование

Программы могут быть написаны в интерактивном режиме с использованием возможностей системы R / 3. Программы могут выполняться как онлайн, так и в фоновом режиме. Фоновые задания также можно запланировать на определенные интервалы.

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

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

ABAP содержит операторы, которые соответствуют стандартам CPI-C (Common Program Interface — Communications). Они используются для программирования коммуникационных программ.

ABAP может читать и записывать последовательные наборы данных.

Источник

Введение в ABAP

Так как статей об ABAP’е на хабре совсем мало, а статьи вида «Hello, World!» совсем нету, решил немного написать об этом. Если вам интересно узнать про этот язык или же подумываете заниматься разработкой на ABAP’е, то добро пожаловать под кат.

ABAP (Advanced Business Application Programming) – внутренний язык высокого уровня программирования в среде SAP. Углубляться в историю особенно не хочется, но отмечу лишь, что язык синтаксис языка наиболее близок к языку программирования COBOL.

Язык позволяет работать с внутренними структурами данных, интерфейсами пользователя, транзакциями, отчётами, интерфейсами загрузки, выгрузки данных (word, excel, pdf, …); стоит отметить, что можно использовать объектно-ориентированные конструкции (ABAP Objects); существует множество технологий связи с другими системами (BAPI, RFC, …) для выгрузки и загрузки данных (или же сторонней обработки).

Типизация

Переменные в ABAP обычно объявляются с помощью конструкции DATA.

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

Можно сокращать объявление нескольких переменных через запятую и используя символ двоеточия:

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

Пример со структурой:

В динамическом программировании принято использовать поля типа FIELD SYMBOLS (аналог указателя):

Таблицы можно объявлять как из словаря ABAP, так же и из своих внутренних типов структур:

Среда разработки

ABAP имеет свою собственную среду разработки, которая называется ABAP Workbench, имеющую отладчик, средства трассировки, систему контроля версий, средства работы с буфером, журналы использования, и так далее.
В 2012 году разработчики интегрировали ABAP со всем известной IDE Eclipse. Правда работает это на последних версиях ядра, что есть не на всех проектах.

Язык программирования sap erp

Предисловие перед «Hello, World»

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

В абапе существуют подпрограммы, функциональные модули, макросы, работа с вебом (Web Dynpro, BSP), выгрузка данных в word, excel (посредством OLE), пользовательские интерфейсы, диалоги и так далее. Существует даже несколько сертификаций разработчиков. Об этом всем постараюсь рассказать в следующих постах.

Hello, World!

Итак, если же вам посчастливилось получить доступ к системе разработки SAP или же вы нашли виртуальную машину, на всем любимом русском трекере по запросу «mini sap on vmware (abap)», то дальше я покажу как создать свою программу.

Первым делом заходим в систему SAP (через SAP GUI):
Язык программирования sap erp

Далее в окошке вводим транзакцию se38:
Язык программирования sap erp

В соответствии с именованием пользовательский программ (начиная с Z), вводим название своей программы:

Язык программирования sap erp

и нажимаем кнопку создать. Далее вводим заголовок программы, выбираем тип и нажимаем сохранить.

Язык программирования sap erp

Язык программирования sap erp

Далее мы попадаем в окно ABAP-редактора. Вводим код нашей программы:

Активируем программу:
Язык программирования sap erp

И запускаем:
Язык программирования sap erp

Результат:
Язык программирования sap erp

Заключение

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

Источник

Хочу всё знать. Язык ABAP

Язык программирования sap erp

Краткая справка

ABAP/4 – проприетарный (т.е. не распространяющийся свободно) язык программирования высокого уровня, разработанный немецкой софтверной компанией SAP и предназначенный исключительно для работы с выпускаемым ей ПО. В январском рейтинге популярности языков ABAP/4 занимает 22 место прямо перед Scratch.

Он был разработан в 1983 году для работы с внутренней системой SAP R/2. Цифра 4, которая присутствует в названии, не имеет практического смысла и лишь указывает, что язык относится к 4 поколению. SAP R/2 – это система управления предприятием, предполагающая стандартную связь между клиентской базой и сервером. Позднее была заменена трёхзвенной системой R/3 – клиент, сервер приложений и система управления базами данных.

Синтаксис

Во многих источниках вы можете найти замечание про схожесть синтаксиса ABAP с COBOL. Однако не стоит принимать это за чистую монету, схожесть касается исключительно внешнего вида, в то время как структура и возможности совсем разные. Сравните базовый код любого программиста “Hello World”:

WRITE / ‘Hello World’.

DISPLAY «Hello, world.».

END PROGRAM HELLO-WORLD.

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

Область применения

Работа

Если ABAP не является языком, вечно мелькающим в списке требований работодателей, если его не изучают в университетах, то это совсем не означает, что он не востребован. ABAP имеет свою аудиторию, эко-систему, поэтому требует от соискателей осознанного выбора будущей деятельности. Прямо сейчас на популярном рекрутинговом ресурсе вы можете найти свыше 100 вакансий, причём среди них есть те, где знание продуктов компании SAP и опыт работы с ABAP – едва ли не единственное требование.

Язык программирования sap erp

Полезные ссылки

ABAP Community – официальное сообщество разработчиков;

ABAP-blog – один из немногих очень качественных и визуально приятных отечественных ресурсов, где можно почитать про программирование на ABAP;

Викиучебник – основы на русском языке;

Habrahabr SAP ERP ABAP – дополнительный набор справочных ресурсов по ABAP и всему, что его касается;

Habrahabr Course Guide – путеводитель по онлайн-курсам ABAP.

Книги

Мы продолжаем говорить о не самых популярных языках программирования, заслуживающих тем не менее внимания настоящих гиков. В этот раз речь пойдёт о языке ABAP/4 или просто ABAP. О том, что эта самая четвёрка в названии означает, зачем нужен этот язык, а главное где и как ему обучиться – далее.

Язык программирования sap erp

Краткая справка

ABAP/4 – проприетарный (т.е. не распространяющийся свободно) язык программирования высокого уровня, разработанный немецкой софтверной компанией SAP и предназначенный исключительно для работы с выпускаемым ей ПО. В январском рейтинге популярности языков ABAP/4 занимает 22 место прямо перед Scratch.

Он был разработан в 1983 году для работы с внутренней системой SAP R/2. Цифра 4, которая присутствует в названии, не имеет практического смысла и лишь указывает, что язык относится к 4 поколению. SAP R/2 – это система управления предприятием, предполагающая стандартную связь между клиентской базой и сервером. Позднее была заменена трёхзвенной системой R/3 – клиент, сервер приложений и система управления базами данных.

Синтаксис

Во многих источниках вы можете найти замечание про схожесть синтаксиса ABAP с COBOL. Однако не стоит принимать это за чистую монету, схожесть касается исключительно внешнего вида, в то время как структура и возможности совсем разные. Сравните базовый код любого программиста “Hello World”:

WRITE / ‘Hello World’.

DISPLAY «Hello, world.».

END PROGRAM HELLO-WORLD.

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

Область применения

Работа

Если ABAP не является языком, вечно мелькающим в списке требований работодателей, если его не изучают в университетах, то это совсем не означает, что он не востребован. ABAP имеет свою аудиторию, эко-систему, поэтому требует от соискателей осознанного выбора будущей деятельности. Прямо сейчас на популярном рекрутинговом ресурсе вы можете найти свыше 100 вакансий, причём среди них есть те, где знание продуктов компании SAP и опыт работы с ABAP – едва ли не единственное требование.

Язык программирования sap erp

Полезные ссылки

ABAP Community – официальное сообщество разработчиков;

ABAP-blog – один из немногих очень качественных и визуально приятных отечественных ресурсов, где можно почитать про программирование на ABAP;

Викиучебник – основы на русском языке;

Habrahabr SAP ERP ABAP – дополнительный набор справочных ресурсов по ABAP и всему, что его касается;

Habrahabr Course Guide – путеводитель по онлайн-курсам ABAP.

Книги

Источник

СОДЕРЖАНИЕ

Введение

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

Среда выполнения ABAP

Системы и ландшафты SAP

Сервер веб-приложений состоит из трех уровней: уровень базы данных; прикладной уровень; и уровень представления. Эти уровни могут работать на одной или на разных физических машинах. Уровень базы данных содержит реляционную базу данных и программное обеспечение базы данных. Прикладной уровень знания содержат экземпляр или экземпляры системы. Все процессы приложения, включая бизнес-транзакции и разработку ABAP, выполняются на уровне приложения. Уровень представления обрабатывает взаимодействие с пользователями системы. Онлайн-доступ к серверам приложений ABAP может осуществляться через собственный графический интерфейс, который называется «SAP GUI», или через веб-браузер.

Уровни программного обеспечения

Программное обеспечение ABAP развертывается в виде программных компонентов. Примеры для них:

Сделки

Типы программ ABAP

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

ABAP различает два типа исполняемых программ:

Отчеты следуют относительно простой модели программирования, посредством которой пользователь необязательно вводит набор параметров (например, выбор из поднабора данных), а затем программа использует входные параметры для создания отчета в форме интерактивного списка. Термин «отчет» может вводить в заблуждение, поскольку отчеты также могут быть разработаны для изменения данных; Причина, по которой эти программы называются отчетами, заключается в «ориентированном на список» характере вывода, который они производят.

Пулы модулей определяют более сложные шаблоны взаимодействия с пользователем с помощью набора экранов. Термин «экран» относится к реальному физическому изображению, которое видит пользователь. Каждый экран также имеет «логику потока», которая относится к коду ABAP, неявно вызываемому экранами, который разделен на разделы «PBO» («Обработка перед выводом») и «PAI» («Обработка после ввода»). В документации SAP термин «dynpro» (динамическая программа) относится к комбинации экрана и логики его выполнения.

К неисполняемым программам относятся:

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

Заявления могут выходить за пределы одной строки. У вас может быть несколько операторов в одной строке (хотя это не рекомендуется). Строки, начинающиеся со звездочки * в первом столбце, распознаются системой выполнения ABAP как строки комментариев и игнорируются. Двойные кавычки («) означают, что остаток строки является комментарием.

Среда разработки

Есть два возможных способа разработки на ABAP. Доступность зависит от выпуска системы ABAP.

Инструментальные средства ABAP

Объекта Навигатор (транзакция SE80) обеспечивает единый интегрированный интерфейс в эти различные инструменты.

Инструменты разработки ABAP

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

Словарь ABAP

Словарь ABAP содержит все метаданные о данных в системе SAP. Он тесно связан с ABAP Workbench в том смысле, что любая ссылка на данные (например, таблицу, представление или тип данных) будет получена из словаря. Разработчики используют транзакции словаря ABAP (напрямую или через навигатор объектов SE80 внутри ABAP Workbench) для отображения и поддержки этих метаданных.

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

Ниже приводится краткое описание наиболее важных типов словарных объектов:

Синтаксис ABAP

Это краткое описание синтаксиса ABAP начинается с повсеместной программы « Hello world ».

Привет мир

Связанные заявления

В WRITE операторах часто используется цепочка. WRITE принимает только один аргумент, поэтому, если, например, вы хотите отобразить три поля из структуры с именем FLIGHTINFO, вам придется закодировать:

Объединение операторов в цепочку приводит к более удобочитаемой и интуитивно понятной форме:

В операторе цепочки первая часть (перед двоеточием) не ограничивается только именем оператора. Вся общая часть последовательных операторов может быть помещена перед двоеточием. Пример:

можно переписать в цепочке как:

Комментарии

В ABAP есть 2 способа определения текста как комментария :

Пространства

Код в ABAP чувствителен к пробелам.

присваивает переменной x подстроку переменной a, начиная с b с длиной, определенной переменной c.

присваивает переменной x сумму переменной a и результат вызова метода b с параметром c.

Заявления ABAP

В отличие от таких языков, как C / C ++ или Java, которые определяют ограниченный набор специфичных для языка операторов и предоставляют большую часть функций через библиотеки, ABAP содержит большое количество встроенных операторов. В этих инструкциях традиционно использовались структуры, подобные предложениям, и не использовались символы, что делало программы ABAP относительно многословными. Однако в более поздних версиях языка ABAP возможен более лаконичный стиль.

Пример синтаксиса на основе операторов (синтаксис которого происходит в COBOL) по сравнению с синтаксисом на основе выражений (как в C / Java):

Типы данных и переменные

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

Встроенные типы данных:

ТипОписание
яЦелое число
пУпакованный десятичный
FПлавающая точка
NЧисловой символ
CХарактер
DДатировать
ТВремя
ИксШестнадцатеричный (необработанный байт)
НИТЬСтрока переменной длины
XSTRINGНеобработанный байтовый массив переменной длины

Явно типизированное объявление

Обычно все объявления помещаются в верхней части модуля кода (программы, подпрограммы, функции) перед первым исполняемым оператором; это размещение является соглашением, а не принудительным правилом синтаксиса. Объявление состоит из имени, типа, длины (если применимо), дополнительных модификаторов (например, количества подразумеваемых десятичных знаков для упакованного десятичного поля) и, необязательно, начального значения:

Обратите внимание на использование двоеточия для объединения последовательных операторов DATA.

Встроенное объявление

Начиная с ABAP 7.40, переменные можно объявлять встроенными со следующим синтаксисом:

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

Этот синтаксис также возможен в операторах OpenSQL:

Объекты ABAP

Язык ABAP поддерживает объектно-ориентированное программирование с помощью функции, известной как «объекты ABAP». Это помогает упростить приложения и сделать их более управляемыми.

Объекты ABAP полностью совместимы с существующим языком, поэтому можно использовать существующие операторы и модули модуляризации в программах, использующих объекты ABAP, а также можно использовать объекты ABAP в существующих программах ABAP. Проверка синтаксиса сильнее в программах ABAP Objects, и некоторые синтаксические формы (обычно более старые) определенных операторов не разрешены.

Объекты образуют капсулу, которая объединяет характер и соответствующее поведение. Объекты должны позволять программистам отображать реальную проблему и предлагаемое программное решение на индивидуальной основе. Типичными объектами бизнес-среды являются, например, «Клиент», «Заказ» или «Счет-фактура». Начиная с версии 3.1 репозиторий бизнес-объектов (BOR) сервера веб-приложений SAP ABAP содержит примеры таких объектов. В следующем выпуске объектная модель BOR будет интегрирована в объекты ABAP путем переноса типов объектов BOR в библиотеку классов ABAP. Исчерпывающее введение в объектную ориентацию в целом выходит далеко за рамки этого введения в объекты ABAP. В этой документации представлен набор терминов, которые универсально используются в объектной ориентации, а также встречаются в объектах ABAP. В последующих разделах более подробно обсуждается, как эти термины используются в объектах ABAP. В конце этого раздела содержится список для дальнейшего чтения с подборкой заголовков об ориентации объекта.

В объектно-ориентированном программировании объекты обычно имеют следующие свойства:

Просмотры CDS

Модели данных определяются с использованием языка определения данных (DDL) и языка управления данными (DCL), представленных в ABAP CDS в синтаксисе ABAP CDS. Объекты, определенные с помощью этих языков, интегрированы в ABAP Dictionary и также управляются здесь.

Исходный код CDS можно запрограммировать только с помощью средств разработки ABAP (ADT) на основе Eclipse. Язык определения данных (DDL) и язык управления данными (DCL) используют разные редакторы.

Функции

Внутренние таблицы в ABAP

Внутренние таблицы предпочтительно используются для хранения и форматирования содержимого таблиц базы данных из программы. Кроме того, внутренние таблицы в связи со структурами являются важным средством определения сложных структур данных в программе ABAP.

В следующем примере определяется внутренняя таблица с двумя полями в формате таблицы базы данных VBRK.

История

Источник

Видео

SAP программа. Первая ABAP программа se80 и se38.

SAP программа. Первая ABAP программа se80 и se38.

Стандартное меню SAP ERP

Стандартное меню SAP ERP

Что такое SAP ERP Общие сведения

Что такое SAP ERP Общие сведения

Вопрос-Ответ: стоит ли изучать 1C, SAP, Directum

Вопрос-Ответ: стоит ли изучать 1C, SAP, Directum

Обучение ABAP-разработке. Часть 1

Обучение ABAP-разработке. Часть 1

ДОБАВЛЕНИЕ ПОЛНОМОЧИЙ SAP ERP

ДОБАВЛЕНИЕ ПОЛНОМОЧИЙ SAP ERP

Урок 1. SAP Buisness one: Интерфейс системы

Урок 1. SAP Buisness one: Интерфейс системы

SAP Введение урок 1

SAP Введение урок 1

ABAP разработка: боль и(или) удовольствие - Илья Казначеев

ABAP разработка: боль и(или) удовольствие - Илья Казначеев

ABAP SAP урок 1 упрощенный

ABAP SAP урок 1 упрощенный
Поделиться или сохранить к себе:
Добавить комментарий

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