Открыть сервис

ABAP

ABAP (Advanced Business Application Programming, изначально — Allgemeiner Berichts-Aufbereitungs-Prozessor, «общий процессор подготовки отчётов») — это высокоуровневый язык программирования, созданный компанией SAP SE для разработки приложений в среде SAP. ABAP является основным языком для настройки, расширения и создания бизнес-приложений в экосистеме SAP ERP и SAP S/4HANA.

История

Создание и ранние годы (1980-е)

Разработка ABAP началась в начале 1980-х годов в штаб-квартире SAP в Вальдорфе, Германия. Первоначально язык назывался ABAP/4 (где «4» обозначал четвёртое поколение языков программирования, хотя позже аббревиатура изменилась с «Allgemeiner Berichts-Aufbereitungs-Prozessor» на «Advanced Business Application Programming»). Первая версия была выпущена в 1983 году в составе системы SAP R/2, работавшей на мейнфреймах IBM. Изначально ABAP предназначался для генерации отчётов и обработки больших объёмов данных.

Эра SAP R/3 (1990-е)

С выходом SAP R/3 в 1992 году язык ABAP был значительно расширен. Система работала на клиент-серверной архитектуре, а ABAP стал поддерживать модульное программирование, создание диалоговых программ (транзакций) и интеграцию с реляционными базами данных. В 1999 году был выпущен ABAP Objects — объектно-ориентированное расширение языка, внедрившее классы, наследование, полиморфизм и другие концепции ООП.

Современный этап (2000-е — настоящее время)

В 2000-х годах SAP представила Web Dynpro for ABAP (фреймворк для веб-приложений), ABAP для Java и ABAP для платформы SAP NetWeaver. В 2015 году с выпуском SAP S/4HANA язык получил поддержку новых возможностей: встроенная аналитика, работа с таблицами HANA (колоночное хранение), Core Data Services (CDS) и протокол OData. В последние годы SAP активно развивает ABAP Cloud — вариант языка, ориентированный на облачную среду SAP BTP (Business Technology Platform).

Архитектура и среда выполнения

Компоненты

ABAP выполняется в среде SAP NetWeaver Application Server ABAP (AS ABAP). Ключевые компоненты:

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

В ABAP выделяют несколько типов программ:

Ключевые особенности языка

Управление данными

ABAP нативно поддерживает работу с внутренними таблицами (internal tables), которые являются аналогом массивов, но с более сложной структурой — сортировка, поиск, группировка. Внутренние таблицы могут быть:

Open SQL

ABAP предлагает собственный диалект SQL — Open SQL, который абстрагируется от конкретной СУБД. Open SQL поддерживает конструкции SELECT, INSERT, UPDATE, DELETE, а также дополнительные возможности (JOIN, UNION, подзапросы). В современных версиях (SAP S/4HANA) через Open SQL можно напрямую обращаться к CDS-представлениям.

Типы данных

Язык использует статическую типизацию. Основные типы:

Обработка ошибок

В ABAP используются исключения (exceptions) и системные переменные SY-SUBRC (код возврата после выполнения оператора). Начиная с ABAP Objects, поддерживается конструкция TRY…CATCH…ENDTRY.

Кроссплатформенность

Несмотря на привязку к SAP, код ABAP переносим между разными операционными системами (Windows, Linux, AIX, HP-UX) через двоичную среду ABAP Runtime.

Основные области применения

Настройка и доработка SAP-систем

Основная задача ABAP-разработчика — доработка стандартных бизнес-процессов SAP. Типичные сценарии:

Разработка модулей расширения

Стандартный код SAP защищён от изменений, поэтому изменения выполняются через:

Производственные приложения (Smart Forms, SAPscript)

ABAP позволяет генерировать печатные формы (Smart Forms, SAPscript, а в последних версиях — Adobe Forms). Сценарий использует данные из базы и форматирует документы в PDF или XML.

Интеграция с облаком

В рамках ABAP Cloud разработчик может:

Пример синтаксиса

Ниже приведён пример простой программы на ABAP, которая выводит «Привет, мир!» в диалоговый сеанс:

```abap REPORT ZHELLO.

DATA lv_message TYPE string. lv_message = 'Привет, мир!'.

WRITE: / lv_message. ```

Для объектно-ориентированного варианта:

```abap CLASS cl_hello DEFINITION. PUBLIC SECTION. METHODS: say_hello. ENDCLASS.

CLASS cl_hello IMPLEMENTATION. METHOD say_hello. WRITE: / 'Привет, мир! (из класса)'. ENDMETHOD. ENDCLASS.

START-OF-SELECTION. DATA(lo_hello) = NEW cl_hello( ). lo_hello->say_hello( ). ```

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

Платформы и версии

Интересные факты

Критика

Некоторые разработчики критикуют ABAP за:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →