Paradigm | Объектно-ориентированный, структурированный, императивный |
---|---|
Разработан | SAP SE |
Впервые появился | 1983; 37 лет назад (1983 г.) |
Стабильный выпуск | 7.55 / 2 сентября 2020 г.; 54 дня назад (02.09.2020) |
Печатная дисциплина | Статический, сильный, безопасный, именительный падеж |
OS | Кросс-платформенный |
Веб-сайт | scn.sap.com/community/abap |
Основные реализации | |
SAP R / 2, SAP R / 3, SAP S / 4HANA | |
Испытал влияние | |
Objective-C, COBOL, SQL |
ABAP(Advanced Business Application Programming, первоначально Allgemeiner Berichts-Aufbereitungs-Prozessor, Немецкий язык для "общего процессора создания отчетов") - это язык программирования высокого уровня, созданный немецкой программной компанией SAP SE. Он извлечен из базовых языков программирования Java, C, C ++ и Python. В настоящее время он позиционируется вместе с Java как язык для программирования сервера приложений SAP NetWeaver, который является частью платформы SAP NetWeaver для создания бизнес-приложений.
ABAP - один из многих языков четвертого поколения для конкретных приложений (4GL ) Впервые разработан в 1980-х годах. Первоначально это был язык отчетов для SAP R / 2, платформы, которая позволяла крупным корпорациям создавать бизнес-приложения для мэйнфреймов для управления материальными потоками, а также финансового и управленческого учета. ABAP устанавливает интеграцию между независимым программным обеспечением.
ABAP раньше было аббревиатурой Allgemeiner Berichts- Aufbereitungs- Prozessor, по-немецки "универсальный процессор подготовки отчетов", но позже был переименован в английское Advanced Business Application Pпрограммирование. ABAP был одним из первых языков, который включил концепцию логических баз данных (LDB), которая обеспечивает высокий уровень абстракции от базового уровня (уровней) базы данных, который поддерживает каждую платформу, язык и единицы.
Язык ABAP изначально использовался разработчиками для разработки платформы SAP R / 3. Он также был предназначен для использования клиентами SAP для улучшения приложений SAP - клиенты могут разрабатывать собственные отчеты и взаимодействовать с программированием ABAP. Язык был ориентирован на более технических клиентов с опытом программирования.
ABAP остается языком для создания программ для системы клиент-сервер R / 3, которую SAP впервые выпустила в 1992 году. По мере развития компьютерного оборудования в течение 1990-х годов все больше и больше продуктов SAP приложения и системы были написаны на ABAP. К 2001 году все функции, кроме самых основных, были написаны на ABAP. В 1999 году SAP выпустила объектно-ориентированное расширение для ABAP под названием ABAP Objects, вместе с версией 4.6 R / 3.
Текущая платформа разработки SAP NetWeaver поддерживает как ABAP, так и Java..
В ABAP есть абстракция между бизнес-приложениями, операционной системой и базой данных. Это гарантирует, что приложения не зависят напрямую от конкретного сервера или платформы базы данных и могут быть легко перенесены с одной платформы на другую.
SAP Netweaver в настоящее время работает на UNIX (AIX, HP-UX, Solaris, Linux ), Microsoft Windows, i5 / OS в IBM System i (ранее iSeries, AS / 400) и z / OS в IBM System z (ранее zSeries, S / 390). Поддерживаемые базы данных: HANA, SAP ASE (ранее Sybase), IBM DB2, Informix, MaxDB, Oracle и Microsoft SQL Server (поддержка Informix была прекращена в SAP Basis версии 7.00).
Все программы ABAP находятся внутри базы данных SAP. Они не хранятся в отдельных внешних файлах, таких как программы на Java или C ++. В базе данных весь код ABAP существует в двух формах: исходный код, который можно просматривать и редактировать с помощью инструментов ABAP Workbench; и сгенерированный код, двоичное представление, несколько сопоставимое с байт-кодом Java. Программы ABAP выполняются под управлением системы времени выполнения, которая является частью ядра SAP. Система времени выполнения отвечает за обработку операторов ABAP, управление логикой отображения экранов и реакцию на события (например, нажатие пользователем кнопки на экране); в этом отношении ее можно рассматривать как виртуальную машину, сравнимую с виртуальной машиной Java. Ключевым компонентом системы выполнения ABAP является интерфейс базы данных, который превращает независимые от базы данных операторы ABAP («Открытый SQL») в операторы, понятные базовой СУБД («Собственный SQL»). Интерфейс базы данных обрабатывает все коммуникации с реляционной базой данных от имени программ ABAP; Он также содержит дополнительные функции, такие как буферизация таблиц и часто используемые данные в локальной памяти сервера приложений.
Все данные SAP существуют, и все программное обеспечение SAP работает в контексте системы SAP. Система состоит из центральной реляционной базы данных и одного или нескольких приложений («экземпляров»), обращающихся к данным и программам в этой базе данных. Система SAP содержит по крайней мере один экземпляр, но может содержать и больше, в основном из-за размеров и производительности. В системе с несколькими экземплярами механизмы балансировки нагрузки обеспечивают равномерное распределение нагрузки по доступным серверам приложений.
Установки сервера веб-приложений (ландшафты) обычно состоят из трех систем: одна для разработки; один для тестирования и обеспечения качества; и один для производства. Ландшафт может содержать больше систем (например, отдельные системы для модульного тестирования и предпроизводственного тестирования) или может содержать меньше (например, только разработка и производство, без отдельного контроля качества); тем не менее, три - наиболее распространенная конфигурация. Программы ABAP создаются и проходят первое тестирование в системе разработки. Впоследствии они распространяются на другие системы ландшафта. Эти действия выполняются под управлением системы изменений и транспорта (CTS), которая отвечает за контроль параллелизма (например, предотвращение одновременного изменения одного и того же кода двумя разработчиками), управление версиями и развертывание программ в QA и производственные системы.
Сервер веб-приложений состоит из трех уровней: уровень базы данных; прикладной уровень; и уровень представления. Эти уровни могут работать на одной или на разных физических машинах. Уровень базы данных содержит реляционную базу данных и программное обеспечение базы данных. Знания прикладного уровня содержат экземпляр или экземпляры системы. Все процессы приложения, включая бизнес-транзакции и разработку ABAP, выполняются на уровне приложения. Уровень представления обрабатывает взаимодействие с пользователями системы. Онлайн-доступ к серверам приложений ABAP может осуществляться через собственный графический интерфейс, который называется «SAP GUI», или через веб-браузер.
Программное обеспечение ABAP развертывается в программных компонентах. Примеры:
Транзакция в терминологии SAP - это выполнение программы. Обычный способ выполнения кода ABAP в системе SAP - ввод кода транзакции (например, VA01 - это код транзакции для «Создать заказ на продажу»). Транзакции можно вызывать через определяемые системой или определяемые пользователем меню на основе ролей. Их также можно запустить, введя код транзакции непосредственно в поле команды, которое присутствует на каждом экране SAP. Транзакции также можно вызывать программно с помощью операторов ABAP CALL TRANSACTION и LEAVE TO TRANSACTION. Общее понятие транзакции в терминологии SAP называется логической единицей работы (LUW); краткая форма кода транзакции - T-code.
Как и в других языках программирования, программа ABAP является либо исполняемым модулем, либо библиотекой, которая предоставляет повторно используемый код другим программам и не является независимо исполняемой.
ABAP различает два типа исполняемых программ:
Отчеты следуют относительно простой модели программирования, при которой пользователь может вводить набор параметров (например, выбор над подмножеством данных), а затем программа использует входные параметры для создания отчета в форме интерактивного списка. Термин «отчет» может вводить в заблуждение, поскольку отчеты также могут быть разработаны для изменения данных; Причина, по которой эти программы называются отчетами, заключается в "ориентированном на список" характере вывода, который они производят.
Пулы модулей определяют более сложные модели взаимодействия с пользователем с помощью набора экранов. Термин «экран» относится к реальному физическому изображению, которое видит пользователь. Каждый экран также имеет «логику потока», которая относится к коду ABAP, неявно вызываемому экранами, который разделен на разделы «PBO» (Обработка перед выводом) и «PAI» (Обработка после ввода). В документации SAP термин «dynpro» (динамическая программа) относится к комбинации экрана и логики его выполнения.
Неисполняемые типы программ:
Модуль INCLUDE включается во время генерации в вызывающий модуль; его часто используют для разделения больших программ.
Пулы подпрограмм содержат подпрограммы ABAP (блоки кода, заключенные в операторы FORM / ENDFORM и вызываемые с помощью PERFORM).
Функциональные группы - это библиотеки автономных функциональных модулей (заключенные в FUNCTION / ENDFUNCTION и вызываемые с помощью CALL FUNCTION).
Классы объектов и интерфейсы аналогичны классам и интерфейсам Java; первые определяют набор методов и атрибутов, вторые содержат определения «пустых» методов, для которых любой класс, реализующий интерфейс, должен предоставлять явный код.
Типовые пулы определяют коллекции типов данных и констант.
Программы ABAP состоят из отдельных предложений (операторов). Первое слово в инструкции называется ключевым словом ABAP. Каждый оператор заканчивается точкой. Слова всегда должны быть разделены хотя бы одним пробелом. Заявления могут иметь произвольный отступ. С ключевыми словами, дополнениями и операндами система времени выполнения ABAP не делает различий между верхним и нижним регистром.
Заявления могут выходить за пределы одной строки. У вас может быть несколько операторов в одной строке (хотя это не рекомендуется). Строки, начинающиеся со звездочки * в первом столбце, распознаются системой выполнения ABAP как строки комментариев и игнорируются. Двойные кавычки (") указывают на то, что остаток строки является комментарием.
Существует два возможных способа разработки на ABAP. Доступность зависит от версии ABAP.
ABAP Workbenchявляется частью системы ABAP и доступен через SAP GUI. Он содержит различные инструменты для редактирования Наиболее важные из них (коды транзакций показаны в скобках):
Навигатор объектов (транзакция SE80) предоставляет единый интегрированный интерфейс для этих различных инструментов.
Инструменты разработки ABAP(ADT), формально известные как «ABAP в Eclipse», представляют собой набор подключаемых модулей для платформа Eclipse для разработки ABAP.
В этом сценарии разработчик ABAP устанавливает необходимые инструменты на свой компьютер и работает локально, при этом выполняется непрерывная синхронизация с серверной частью.
Словарь ABAP содержит все метаданные о данных в системе SAP. Он тесно связан с ABAP Workbench в том смысле, что любая ссылка на данные (например, таблицу, представление или тип данных) будет получена из словаря. Разработчики используют транзакции словаря ABAP (напрямую или через навигатор объектов SE80 внутри ABAP Workbench) для отображения и поддержки этих метаданных.
При изменении объекта словаря программа, которая ссылается на измененный объект, автоматически будет ссылаться на новую версию при следующем запуске программы. Поскольку ABAP интерпретируется, нет необходимости перекомпилировать программы, которые ссылаются на измененные объекты словаря.
Ниже приводится краткое описание наиболее важных типов объектов словаря:
Это краткое описание синтаксиса ABAP начинается с вездесущая программа "Hello world ".
ОТЧЕТ О ТЕСТЕ. НАПИШИТЕ «Привет, Филиппины».
Этот пример содержит два оператора: REPORT
и WRITE
. Программа отображает список на экране. В этом случае список состоит из единственной строки «Hello World». Оператор REPORT
указывает, что эта программа является отчетом. Эта программа может быть пулом модулей после замены оператора REPORT
на PROGRAM
.
Последовательные операторы с идентичной первой (крайней левой) частью могут быть объединены в " в цепочке "оператор цепочки :
. Общая часть операторов пишется слева от двоеточия, разные части записываются справа от двоеточия и разделяются запятыми. Оператор двоеточия присоединяется непосредственно к предыдущему токену без пробела (то же самое относится к запятым в списке токенов, как показано в примерах ниже).
Цепочка часто используется в операторах WRITE
. WRITE
принимает только один аргумент, поэтому, например, если вы хотите отобразить три поля из структуры с именем FLIGHTINFO, вам нужно будет ввести код:
WRITE FLIGHTINFO-CITYFROM. НАПИШИТЕ РЕЙС ИНФО-СИТИТО. НАПИШИТЕ FLIGHTINFO-AIRPTO.
Объединение операторов приводит к более удобочитаемой и интуитивно понятной форме:
WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.
В операторе цепочки первая часть (перед двоеточием) не ограничивается только именем оператора. Вся общая часть последовательных операторов может быть помещена перед двоеточием. Пример:
ЗАМЕНИТЕ 'A' НА 'B' НА ФАМИЛИЮ. ЗАМЕНИТЕ "A" НА "B" НА ИМЯ. ЗАМЕНИТЕ "A" НА "B" В НАЗВАНИЕ ГОРОДА.
можно переписать в цепочке как:
ЗАМЕНИТЬ 'A' НА 'B' НА: LASTNAME, FIRSTNAME, CITYNAME.
ABAP имеет 2 способа определения текста как комментария :
Пример:
***************** ********************* ** Программа: БРОНИРОВАНИЕ ** ** Автор: Джо Байт, 7 июля 2007 г. ** ******** ****************************** ОТЧЕТ О БРОНИРОВАНИИ. * Чтение бронирований рейсов из базы данных ВЫБРАТЬ * ИЗ FLIGHTINFO WHERE CLASS = 'Y '"Y = экономичный ИЛИ КЛАСС =' C '. "C = business (...)
Код в ABAP чувствителен к пробелам.
x = a + b (c).
присваивает переменной x подстроку переменная a, начиная с b с длиной, определенной переменной c.
x = a + b (c).
присваивает переменной x сумму переменной a и результат вызова метода b с параметр c.
В отличие от таких языков, как C / C ++ или Java, которые определяют ограниченный набор зависящих от языка операторов и предоставляют большую часть функций через библиотеки, ABAP содержит обширный количество встроенных операторов. В этих операторах традиционно используются структуры, подобные предложениям, и отсутствуют символы, что делает программы ABAP относительно многословными. Однако в более поздних версиях языка ABAP возможен более сжатый стиль.
Пример синтаксиса на основе операторов (синтаксис которого происходит в COBOL) по сравнению с синтаксисом на основе выражений (как в C / Java):
ДОБАВИТЬ НАЛОГ К ЦЕНЕ. * эквивалентно ЦЕНА = ЦЕНА + НАЛОГ.
ABAP предоставляет набор встроенных типов данных. Кроме того, каждая структура, таблица, представление или элемент данных, определенные в словаре ABAP, могут использоваться для ввода переменной. Кроме того, в качестве типов могут использоваться классы объектов и интерфейсы.
Встроенные типы данных:
Тип | Описание |
---|---|
I | Целое число |
P | Упакованное десятичное число |
F | Плавающая точка |
N | Символьный числовой |
C | Символьный |
D | Дата |
T | Время |
X | Шестнадцатеричный (необработанный байт) |
STRING | Строка переменной длины |
XSTRING | Необработанный байтовый массив переменной длины |
Переменные даты или константы (тип D) содержат количество дней, прошедших с 1 января 1 года нашей эры. Временные переменные или константы (тип T) содержат количество секунд, прошедших с полуночи. Особенностью обоих типов является то, что к ним можно обращаться как в виде целых чисел, так и в виде символьных строк (с внутренним форматом «ГГГГММДД» для дат и «ччммсс» для времени), которые могут использоваться для обработки даты и времени. Например, в приведенном ниже фрагменте кода вычисляется последний день предыдущего месяца (примечание: SY-DATUM - это системная переменная, содержащая текущую дату):
DATA LAST_EOM TYPE D. "дата последнего конца месяца * Начните с сегодняшней даты LAST_EOM = SY-DATUM. * Установите символы 6 и 7 (относительно 0) строки YYYYMMDD на «01», * что даст первый день текущего месяца LAST_EOM + 6 (2) = '01'. * Вычтите один день LAST_EOM = LAST_EOM - 1. WRITE: 'Последний день предыдущего месяца был', LAST_EOM.
Все переменные ABAP должны быть явно объявлены, чтобы их можно было использовать. Их можно объявить либо с отдельными операторами и явной типизацией, либо, начиная с ABAP 7.40, встроенными с предполагаемой типизацией.
Обычно все объявления размещаются в верхней части модуля кода (программа, подпрограмма, функция) перед первым исполняемым оператором; это размещение является соглашением, а не принудительным правилом синтаксиса. Объявление состоит из имени, типа, длины (где e применимо), дополнительные модификаторы (например, количество подразумеваемых десятичных знаков для упакованного десятичного поля) и необязательно начальное значение:
* Типы примитивов: ДАННЫЕ: СЧЕТЧИК ТИПА I, ДЕЙСТВИТЕЛЬНОСТЬ ТИПА I ЗНАЧЕНИЕ 60, ТАКСРАТ (3) ТИП P ДЕСЯТИЧНЫЕ ЧАСТИ 1, ФАМИЛИЯ (20) ТИП C, ОПИСАНИЕ ТИП СТРОКИ. * Типы словарей: DATA: ORIGIN TYPE COUNTRY. * Внутренняя таблица: DATA: T_FLIGHTS TYPE TABLE OF FLIGHTINFO, T_LOOKUP TYPE HASHED TABLE OF FLT_LOOKUP. * Объекты: ДАННЫЕ: ТИП БРОНИРОВАНИЯ REF TO CL_FLT_BOOKING.
Обратите внимание на использование двоеточия для объединения последовательных операторов DATA.
Начиная с ABAP 7.40, переменные могут быть объявлены встроенным со следующим синтаксисом:
DATA (имя_переменной) = 'VALUE'.
Для этого типа объявления должна существовать возможность статического вывода типа, например по сигнатуре метода или структуре таблицы базы данных.
Этот синтаксис также возможен в операторах OpenSQL:
SELECT * FROM ekko в @DATA (lt_ekko) WHERE ebeln EQ @lv_ebeln.
Язык ABAP поддерживает объектно-ориентированное программирование с помощью функции, известной как «объекты ABAP». Это помогает упростить приложения и сделать их более управляемыми.
Объекты ABAP полностью совместимы с существующим языком, поэтому можно использовать существующие операторы и модули модуляризации в программах, использующих объекты ABAP, а также можно использовать объекты ABAP в существующих программах ABAP. Проверка синтаксиса сильнее в программах ABAP Objects, и некоторые синтаксические формы (обычно более старые) определенных операторов не разрешены.
Объекты образуют капсулу, которая объединяет характер и соответствующее поведение. Объекты должны позволять программистам сопоставить реальную проблему и предлагаемое программное решение на индивидуальной основе. Типичными объектами бизнес-среды являются, например, «Клиент», «Заказ» или «Счет-фактура». Начиная с версии 3.1 репозиторий бизнес-объектов (BOR) сервера веб-приложений SAP ABAP содержит примеры таких объектов. Объектная модель BOR будет интегрирована в объекты ABAP в следующем выпуске путем переноса типов объектов BOR в библиотеку классов ABAP. Исчерпывающее введение в объектную ориентацию в целом выходит далеко за рамки этого введения в объекты ABAP. В этой документации представлен ряд терминов, которые универсально используются в объектной ориентации, а также встречаются в объектах ABAP. В последующих разделах более подробно обсуждается, как эти термины используются в объектах ABAP. В конце этого раздела содержится список для дальнейшего чтения с подборкой заголовков об ориентации объекта.
В объектно-ориентированном программировании объекты обычно имеют следующие свойства:
Базовые службы данных ABAP (ABAP CDS) представляют собой реализацию общей концепции CDS для AS ABAP.. ABAP CDS позволяет определять семантические модели данных в центральной базе данных сервера приложений. В AS ABAP эти модели могут быть определены независимо от системы баз данных. Сущности этих моделей предоставляют расширенные функции доступа по сравнению с существующими таблицами базы данных и представлениями, определенными в словаре ABAP, что позволяет оптимизировать приложения на основе Open SQL. Это особенно очевидно, когда AS ABAP использует базу данных SAP HANA, поскольку ее характеристики в памяти могут быть реализованы оптимальным образом.
Модели данных определяются с использованием языка определения данных (DDL) и языка управления данными (DCL), предоставленных в ABAP CDS в синтаксисе ABAP CDS. Объекты, определенные с помощью этих языков, интегрированы в ABAP Dictionary и также управляются здесь.
Исходный код CDS можно запрограммировать только в инструментах разработки ABAP (ADT) на основе Eclipse. Язык определения данных (DDL) и язык управления данными (DCL) используют разные редакторы.
SAP NW ABAP | Соединения SQL | Операции набора SQL | Пункты SELECT |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 | |||
7.50 | |||
7.51 |
|
SAP NW ABAP | Литералы | Арифметические операторы | Условные выражения |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
| ||
7.50 | |||
7.51 |
|
SAP NW ABAP | Агрегатные функции | Числовые функции | Строковые функции |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
| |
7.50 |
| ||
7,51 |
|
|
|
SAP NW ABAP | Функции с байтовой строкой | Функции даты и времени | Другие функции |
---|---|---|---|
7.40 SP05 |
| ||
7.40 SP08 |
| ||
7.50 |
|
| |
7.51 |
|
|
SAP NW ABAP | Условные (CASE) выражения | Расширяемость | (Неуправляемые) ассоциации |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
| |
7.50 |
|
| |
7.51 |
|
|
|
SAP NW ABAP | Переменные сеанса | Входные параметры | Прочие |
---|---|---|---|
7.40 SP05 |
| ||
7.40 SP08 |
| ||
7.50 |
|
|
|
7.51 |
|
|
Внутренние таблицы - важная особенность языка ABAP. Внутренняя таблица определяется аналогично вектору структур в C ++ или вектору объектов в Java. Основное отличие этих языков заключается в том, что ABAP предоставляет набор операторов для удобного доступа и управления содержимым внутренних таблиц. Обратите внимание, что ABAP не поддерживает массивы; единственный способ определить многоэлементный объект данных - использовать внутреннюю таблицу.
Внутренние таблицы - это способ хранения переменных наборов данных фиксированной структуры в рабочей памяти ABAP, обеспечивающий функциональность динамические массивы. Данные хранятся построчно, каждая строка имеет одинаковую структуру.
Внутренние таблицы предпочтительно используются для хранения и форматирования содержимого таблиц базы данных изнутри программы. Кроме того, внутренние таблицы в связи со структурами являются важным средством определения сложных структур данных в программе ABAP.
В следующем примере определяется внутренняя таблица с двумя полями с форматом таблицы базы данных VBRK.
* Сначала определите структурированный тип TYPES: BEGIN OF t_vbrk, VBELN TYPE VBRK-VBELN, ZUONR TYPE VBRK-ZUONR, END OF t_vbrk. * Теперь определите внутреннюю таблицу нашего определенного типа t_vbrk ДАННЫЕ: gt_vbrk СТАНДАРТНАЯ ТАБЛИЦА ТИПА t_vbrk, gt_vbrk_2 СТАНДАРТНАЯ ТАБЛИЦА ТИПА t_vbrk. "легко определить больше таблиц * При необходимости определите структуру (строка внутренней таблицы) * Определение с типом или ссылкой на внутреннюю таблицу: DATA: gs_vbrk TYPE t_vbrk, gs_vbrk2 КАК СТРОКА gt_vbrk2. * Вы также можете определить тип таблицы, если необходимо ТИПЫ tt_vbrk ТИП СТАНДАРТНОЙ ТАБЛИЦЫ t_vbrk.
В следующем списке дается только приблизительный обзор некоторых важных вех в истории языка ABAP. Подробнее см. ABAP - Версия- Особые изменения.
Версия | Дата выпуска | Основные изменения |
---|---|---|
4.6C | Май 2000 г. |
|
6.40 | 2004 | |
7.0 | 2006 |
|
7.02 |
| |
7.40 | 2012-11-29 |
|
7.40 SP05 | декабрь 2013 г. |
|
7.40 SP08 | Сентябрь 2014 г. |
|
7.50 | ноябрь 2015 г. |
|
7.51 | October 2016 |
|
7.52 | September 2017 |
|
7.54 | September 2019 |
|