ABAP - ABAP

ABAP / 4
Парадигма Объектно-ориентированный , структурированный , императивный
Разработано SAP SE
Впервые появился 1983 ; 38 лет назад ( 1983 )
Стабильный выпуск
7.55 / 2 сентября 2020 г . ; 11 месяцев назад ( 2020-09-02 )
Печатная дисциплина Статичный , сильный , безопасный , именительный падеж
Операционные системы Кроссплатформенность
Интернет сайт scn .sap .com / community / abap% 20scn .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 как язык программирования сервера приложений SAP NetWeaver , который является частью платформы SAP NetWeaver для создания бизнес-приложений.

Вступление

ABAP - один из многих прикладных языков четвертого поколения ( 4GL ), впервые разработанных в 1980-х годах. Первоначально это был язык отчетов для SAP R / 2 , платформы, которая позволяла крупным корпорациям создавать бизнес-приложения для мэйнфреймов для управления материальными потоками, а также финансового и управленческого учета. ABAP устанавливает интеграцию между независимым программным обеспечением.

ABAP раньше аббревиатура от A llgemeiner B erichts- A ufbereitungs- P rozessor , немецкой для «общего отчета процессора подготовки», но позже была переименована в английском A dvanced B usiness A РИМЕНЕНИЕ P rogramming . 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

Все программы ABAP находятся в базе данных SAP. Они не хранятся в отдельных внешних файлах, таких как программы на Java или C ++. В базе данных весь код ABAP существует в двух формах: исходный код, который можно просматривать и редактировать с помощью инструментов ABAP Workbench; и сгенерированный код, двоичное представление, несколько сопоставимое с байт-кодом Java . Программы ABAP выполняются под управлением системы времени выполнения, которая является частью ядра SAP. Система времени выполнения отвечает за обработку операторов ABAP, управление логикой работы экранов и реагирование на события (например, нажатие пользователем кнопки на экране); в этом отношении ее можно рассматривать как виртуальную машину, сопоставимую с виртуальной машиной Java. Ключевым компонентом системы выполнения ABAP является интерфейс базы данных, который превращает независимые от базы данных операторы ABAP («Открытый SQL») в операторы, понятные базовой СУБД («Собственный SQL»). Интерфейс базы данных обрабатывает все коммуникации с реляционной базой данных от имени программ ABAP; Он также содержит дополнительные функции, такие как буферизация таблиц и часто используемые данные в локальной памяти сервера приложений.

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

Все данные SAP существуют, и все программное обеспечение SAP работает в контексте системы SAP . Система состоит из центральной реляционной базы данных и одного или нескольких приложений («экземпляров»), обращающихся к данным и программам в этой базе данных. Система SAP содержит по крайней мере один экземпляр, но может содержать и больше, в основном по причинам размера и производительности. В системе с несколькими экземплярами механизмы балансировки нагрузки гарантируют, что нагрузка равномерно распределяется по доступным серверам приложений.

Установки сервера веб-приложений ( ландшафты ) обычно состоят из трех систем: одна для разработки; один для тестирования и контроля качества; и один для производства. Ландшафт может содержать больше систем (например, отдельные системы для модульного тестирования и предпроизводственного тестирования) или может содержать меньше (например, только разработка и производство, без отдельного контроля качества); тем не менее, три - наиболее распространенная конфигурация. Программы ABAP создаются и проходят первое тестирование в системе разработки. Впоследствии они распространяются на другие системы ландшафта. Эти действия выполняются под управлением системы изменений и транспорта (CTS), которая отвечает за контроль параллелизма (например, предотвращение одновременного изменения одного и того же кода двумя разработчиками), управление версиями и развертывание программ в QA и производственные системы.

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

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

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

  • SAP_BASIS - это необходимый технический базовый уровень, который требуется в каждой системе ABAP.
  • SAP_ABA содержит функции, необходимые для всех видов бизнес-приложений, таких как управление деловыми партнерами и адресами.
  • SAP_UI предоставляет функциональные возможности для создания приложений SAP UI5.
  • BBPCRM - это пример бизнес-приложения, в данном случае приложения CRM.
  • SAP ABAP - это язык программирования ERP.

Сделки

Транзакция в терминологии SAP - это выполнение программы. Обычным способом выполнения кода ABAP в системе SAP является ввод кода транзакции (например, VA01 - это код транзакции для «Создать заказ на продажу»). Транзакции могут быть вызваны через определяемые системой или определяемые пользователем меню на основе ролей. Их также можно запустить, введя код транзакции непосредственно в поле команды, которое присутствует на каждом экране SAP. Транзакции также можно вызывать программно с помощью операторов ABAP CALL TRANSACTION и LEAVE TO TRANSACTION. Общее понятие транзакции в терминологии SAP называется логической единицей работы (LUW); краткая форма кода транзакции - T-код .

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

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

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

  • Отчеты
  • Модульные пулы

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

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

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

  • ВКЛЮЧИТЬ модули
  • Подпрограммные пулы
  • Функциональные группы
  • Классы объектов
  • Интерфейсы
  • Типы бассейнов

Модуль INCLUDE включается во время генерации в вызывающий модуль; он часто используется для разделения больших программ.
Пулы подпрограмм содержат подпрограммы ABAP (блоки кода, заключенные в операторы FORM / ENDFORM и вызываемые с помощью PERFORM).
Функциональные группы - это библиотеки автономных функциональных модулей (заключенных в FUNCTION / ENDFUNCTION и вызываемых с помощью CALL FUNCTION).
Классы объектов и интерфейсы аналогичны классам и интерфейсам Java; первые определяют набор методов и атрибутов, вторые содержат определения «пустых» методов, для которых любой класс, реализующий интерфейс, должен предоставлять явный код.
Пулы типов определяют коллекции типов данных и констант.

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

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

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

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

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

Инструментальные средства ABAP являются частью системы ABAP и доступны через графический интерфейс SAP . Он содержит различные инструменты для редактирования программ. Наиболее важные из них (коды транзакций указаны в скобках):

  • Редактор ABAP для написания и редактирования отчетов, пулов модулей, включений и пулов подпрограмм (SE38)
  • Словарь ABAP для обработки определений таблиц базы данных и получения глобальных типов (SE11)
  • Menu Painter для разработки пользовательского интерфейса (строка меню, стандартная панель инструментов, панель инструментов приложения, назначение функциональных клавиш) (SE41)
  • Screen Painter для проектирования экранов и логики потока (SE51)
  • Конструктор функций для функциональных модулей (SE37)
  • Класс Builder для ABAP Objects классов и интерфейсов (SE24)

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

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

В Инструменты ABAP развития ( ADT ), официально известный как «ABAP в Затмении», представляет собой набор плагинов для платформы Eclipse , для разработки ABAP.

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

Словарь ABAP

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

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

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

  • Таблицы - это контейнеры данных, которые существуют в базовой реляционной базе данных. В большинстве случаев существует взаимосвязь 1: 1 между определением таблицы в словаре ABAP и определением той же таблицы в базе данных (то же имя, те же столбцы). Эти таблицы известны как «прозрачные». Есть два типа непрозрачных таблиц: «объединенные» таблицы существуют как независимые объекты в словаре ABAP, но сгруппированы вместе в большие физические таблицы («пулы») на уровне базы данных. Объединенные таблицы часто представляют собой небольшие таблицы, содержащие, например, данные конфигурации. «Кластерные» таблицы физически группируются в «кластеры» на основе их первичных ключей; например, предположим, что кластерная таблица H содержит данные «заголовка» о счетах-фактурах, тогда как другая кластеризованная таблица D содержит отдельные позиции счета-фактуры. Каждая строка H затем будет физически сгруппирована со связанными строками из D внутри «таблицы кластеров» в базе данных. Этот тип кластеризации, предназначенный для повышения производительности, также существует как встроенная функция в некоторых, хотя и не во всех, системах реляционных баз данных.
  • Индексы обеспечивают ускоренный доступ к данным таблицы для часто используемых условий выбора. Каждая таблица SAP имеет «первичный индекс», который неявно создается вместе с таблицей и используется для обеспечения уникальности первичного ключа. Могут быть определены дополнительные индексы (уникальные или неуникальные); они называются «вторичными индексами».
  • Представления имеют ту же цель, что и в базовой базе данных: они определяют подмножества столбцов (и / или строк) из одной или - с использованием условия соединения - нескольких таблиц. Поскольку представления представляют собой виртуальные таблицы (они относятся к данным в других таблицах), они не занимают значительного места.
  • Структуры - это сложные типы данных, состоящие из нескольких полей (сопоставимые со структурой в C / C ++).
  • Элементы данных предоставляют семантическое содержимое для поля таблицы или структуры. Например, десятки таблиц и структур могут содержать поле с ценой (готового продукта, сырья, ресурса и т. Д.). Все эти поля могут иметь один и тот же элемент данных "PRICE".
  • Домены определяют структурные характеристики элемента данных. Например, элементу данных PRICE может быть назначен домен, который определяет цену как числовое поле с двумя десятичными знаками. Домены также могут нести семантическое содержание, предоставляя список возможных значений. Например, домен «BOOLEAN» может определять поле типа «символ» с длиной 1 и без учета регистра, но также ограничивает возможные значения до «T» (истина) или «F» (ложь).
  • Помощники поиска (преемники устаревших «кодов соответствия») предоставляют расширенные стратегии поиска, когда пользователь хочет увидеть возможные значения для поля данных. Среда выполнения ABAP предоставляет неявную помощь (перечисляя все значения для поля, например, все существующие номера клиентов), но для уточнения этой функциональности можно использовать поисковые подсказки, например, обеспечивая поиск клиентов по географическому положению, кредитному рейтингу и т. Д.
  • Объекты блокировки реализуют блокировку на уровне приложения при изменении данных.

Синтаксис ABAP

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

Привет мир

REPORT TEST.
WRITE 'Hello World'.

Этот пример содержит два оператора: REPORTи WRITE. Программа отображает список на экране. В этом случае список состоит из единственной строки «Hello World». В REPORTзаявлении указано, что эта программа является отчетом. Эта программа может быть пулом модулей после замены REPORTоператора на PROGRAM.

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

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

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

WRITE FLIGHTINFO-CITYFROM.
WRITE FLIGHTINFO-CITYTO.
WRITE FLIGHTINFO-AIRPTO.

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

WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.

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

REPLACE 'A' WITH 'B' INTO LASTNAME.
REPLACE 'A' WITH 'B' INTO FIRSTNAME.
REPLACE 'A' WITH 'B' INTO CITYNAME.

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

REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.

Комментарии

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

  • Звездочка (*) в крайнем левом столбце строки делает всю линию и оставить комментарий
  • Двойной кавычки ( ") в любом месте на линии делает остальную часть этой линии прим

Пример:

***************************************
** Program: BOOKINGS                 **
** Author: Joe Byte, 07-Jul-2007     **
***************************************

REPORT BOOKINGS.

* Read flight bookings from the database
SELECT * FROM FLIGHTINFO
  WHERE CLASS = 'Y'       "Y = economy
  OR    CLASS = 'C'.      "C = business
(...)

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

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

x = a+b(c).

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

x = a + b( c ).

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

Заявления ABAP

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

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

ADD TAX TO PRICE.
* is equivalent to
PRICE = PRICE + TAX .

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

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

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

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

Переменные или константы даты (тип D) содержат количество дней, прошедших с 1 января 1 года нашей эры. Временные переменные или константы (тип T) содержат количество секунд, прошедших с полуночи. Особенностью обоих типов является то, что к ним можно обращаться как в виде целых чисел, так и в виде символьных строк (с внутренним форматом «ГГГГММДД» для дат и «ччммсс» для времени), которые можно использовать для обработки даты и времени. Например, в приведенном ниже фрагменте кода вычисляется последний день предыдущего месяца (примечание: SY-DATUM - это системная переменная, содержащая текущую дату):

DATA LAST_EOM    TYPE D.  "last end-of-month date

* Start from today's date
  LAST_EOM = SY-DATUM.
* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",
* giving the first day of the current month
  LAST_EOM+6(2) = '01'.
* Subtract one day
  LAST_EOM = LAST_EOM - 1.

  WRITE: 'Last day of previous month was', LAST_EOM.

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

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

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

* Primitive types:
DATA: COUNTER      TYPE I,
      VALIDITY     TYPE I VALUE 60,
      TAXRATE(3)   TYPE P DECIMALS 1,
      LASTNAME(20) TYPE C,
      DESCRIPTION  TYPE STRING.

* Dictionary types:
DATA: ORIGIN       TYPE COUNTRY.

* Internal table:
DATA: T_FLIGHTS    TYPE TABLE OF FLIGHTINFO,
      T_LOOKUP     TYPE HASHED TABLE OF FLT_LOOKUP.

* Objects:
DATA: BOOKING      TYPE REF TO CL_FLT_BOOKING.

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

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

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

DATA(variable_name) = 'VALUE'.

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

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

SELECT * FROM ekko into @DATA(lt_ekko) WHERE ebeln EQ @lv_ebeln.

Объекты ABAP

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

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

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

  • Объекты - это экземпляры классов. Они содержат данные и предоставляют услуги. Данные формируют атрибуты объекта. Услуги известны как методы (также известные как операции или функции). Обычно методы работают с личными данными (атрибутами или состоянием объекта), которые видны только методам объекта. Таким образом, атрибуты объекта не могут быть изменены непосредственно пользователем, а могут быть изменены только методами объекта. Это гарантирует внутреннюю непротиворечивость объекта.
  • Классы описывают объекты. С технической точки зрения объекты являются экземплярами класса во время выполнения. Теоретически может быть создано любое количество объектов на основе одного класса. Каждый экземпляр (объект) класса имеет уникальную идентичность и свой собственный набор значений для его атрибутов.
  • Ссылки на объекты - это уникальные адреса, которые могут использоваться для идентификации и указания объектов в программе. Ссылки на объекты позволяют получить доступ к атрибутам и методам объекта.

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

  • Инкапсуляция - объекты ограничивают видимость своих ресурсов (атрибутов и методов) для других пользователей. У каждого объекта есть интерфейс, который определяет, как другие объекты могут с ним взаимодействовать. Реализация объекта инкапсулирована, то есть невидима вне самого объекта.
  • Наследование - существующий класс может использоваться для создания нового класса. Производные классы наследуют данные и методы суперкласса. Однако они могут перезаписывать существующие методы, а также добавлять новые.
  • Полиморфизм. Идентичные (с одинаковыми именами) методы ведут себя по-разному в разных классах. В объектах ABAP полиморфизм реализуется путем переопределения методов во время наследования и использования конструкций, называемых интерфейсами.

Просмотры CDS

Базовые службы данных 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
  • В списке SELECT, например, буквальный как FieldName
  • Как значение RHS
  • +
  • -
  • *
  • Логические операторы
    • НЕ, И, ИЛИ
  • Операторы сравнения
    • МЕЖДУ, =, <>, <,>, <=,> =, НРАВИТСЯ
    • IS [NOT] NULL (только в условии WHERE)
7.40 SP08
  • / (Деление с плавающей запятой)
7,50
7,51
  • Функция как значение RHS
SAP NW ABAP Агрегатные функции Числовые функции Строковые функции
7.40 SP05
  • СРЕДНЕЕ ([ОТЛИЧИТЕЛЬНО])
  • МАКСИМУМ
  • MIN
  • СУММ ([РАЗЛИЧИЕ])
  • COUNT ([DISTINCT])
  • СЧИТАТЬ(*)
  • CEIL
  • MOD
  • ПОДСТАВКА
  • LPAD
7.40 SP08
  • АБС
  • DIV (целочисленное деление)
  • РАЗДЕЛЕНИЕ (деление на десятичные дроби)
  • ПОЛ
  • КРУГЛЫЙ
  • КОНКАТ
  • ЗАМЕНЯТЬ
7,50
  • CONCAT_WITH_SPACE
  • INSTR
  • ЛЕВЫЙ
  • ДЛИНА
  • LTRIM
  • ВЕРНО
  • RPAD
  • RTRIM
7,51
  • AVG ([AS]), чтобы указать тип возвращаемого значения.
  • FLTP_TO_DEC
  • ВЕРХНИЙ
  • НИЖЕ
SAP NW ABAP Функции с байтовой строкой Функции даты и времени Прочие функции
7.40 SP05
  • CAST для встроенных типов DDIC, например abap.fltp
7.40 SP08
  • КОЛЕСЦЕ
  • ОБМЕН ВАЛЮТЫ
  • UNIT_CONVERSION
  • DECIMAL_SHIFT
7,50
  • BINTOHEX
  • ГЕКСТОБИН
  • DATS_DAYS_BETWEEN
  • DATS_ADD_DAYS
  • DATS_ADD_MONTHS
  • DATS_IS_VALID
  • TIMS_IS_VALID
  • TSTMP_IS_VALID
  • TSTMP_CURRENT_UTCTIMESTAMP
  • TSTMP_SECONDS_BETWEEN
  • TSTMP_ADD_SECONDS
  • В РОЛЯХ
    • к элементам данных, например, CHAR80
    • может быть вложенным
7,51
  • ABAP_SYSTEM_TIMEZONE
  • ABAP_USER_TIMEZONE
  • TSTMP_TO_DATS
  • TSTMP_TO_TIMS
  • TSTMP_TO_DST
  • DATS_TIMS_TO_TSTMP
  • В РОЛЯХ
    • КОНСЕРВНЫЙ ТИП
    • SSTRING на другие типы
    • CLNT, LANG, TIMS, UNIT для элементов данных типа CHAR и SSTRING
    • CHAR, SSTRING, NUMC в ACCP и наоборот
    • Агрегатная функция как операнд
SAP NW ABAP Условные (CASE) выражения Расширяемость (Неуправляемые) ассоциации
7.40 SP05
  • «Простой» СЛУЧАЙ (действует как оператор switch)
  • Вложенные операторы CASE
  • $ EXTENSION. * (Поддержка расширений таблиц базы данных)
  • Выражения пути в
    • ВЫБРАТЬ список
    • Предложение FROM
    • Предложение WHERE
    • Пункт HAVING
  • Условия фильтрации в выражениях пути, например Products._Texts [lagu = 'EN'] как english_name
7.40 SP08
  • CASE "искал" (ведет себя как если ... иначе, если)
  • РАСШИРЯТЬ ВИД
7,50
  • Выражения CASE могут использоваться как операнды в функциях CAST
  • РАСШИРЕНИЕ ВИДА с входными параметрами, выражениями пути, преобразованиями, функциями даты и времени
7,51
  • Функция как значение RHS
  • РАСШИРЕНИЕ ВИДА с агрегатными функциями, предложениями GROUP BY и UNION
  • Определения ассоциаций в представлениях с UNION
  • Фильтры по умолчанию для ассоциаций (С ФИЛЬТРОМ ПО УМОЛЧАНИЮ)
  • Количество элементов "ко многим" (* :) можно указать в фильтрах пути.
SAP NW ABAP Переменные сеанса Входные параметры Другой
7.40 SP05
  • Ключевые элементы
7.40 SP08
  • входные параметры на большинстве БД
7,50
  • $ session.user (sy-uname)
  • $ session.client (sy-mandt)
  • $ session.system_language (sy-язык)
  • Входные параметры на AnyDB
  • Табличная функция (только SAP HANA)
7,51
  • $ session.system_date (sy-данные)
  • Расширения метаданных

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

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

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

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

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

* First define structured type
TYPES: BEGIN OF t_vbrk,
         VBELN TYPE VBRK-VBELN,
         ZUONR TYPE VBRK-ZUONR,
       END OF t_vbrk.

* Now define internal table of our defined type t_vbrk
DATA : gt_vbrk TYPE STANDARD TABLE OF t_vbrk,
       gt_vbrk_2 TYPE STANDARD TABLE OF t_vbrk.   "easy to define more tables

* If needed, define structure (line of internal table)
* Definition with type or with reference to internal table:
DATA : gs_vbrk TYPE t_vbrk,
       gs_vbrk_2 LIKE LINE OF gt_vbrk_2.

* You can also define table type if needed
TYPES tt_vbrk TYPE STANDARD TABLE OF t_vbrk.

История

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

Версия Дата выпуска Большие перемены
4.6C Май 2000 г.
  • Объекты ABAP
6,40 2004 г.
7.0 2006 г.
  • Платформа коммутатора / концепция расширения
7.02
  • Выражения вроде
    check lcl=>mi(1) + abs( -2 ) >= 3.
    
7,40 2012-11-29
  • "Раскрытие кода" - использование дополнительных функций из базовой базы данных.
  • Выражения конструктора (NEW, VALUE, REF, CONV, CAST, EXACT, COND, SWITCH)
  • Частично реализованные интерфейсы тестовых классов
  • Табличные выражения
  • Функции существования внутренней строки таблицы / индекса строки
7.40 SP05 Декабрь 2013
  • MOVE-CORRESPONDING для внутренних таблиц
  • Выражение LET в выражениях конструктора
  • СООТВЕТСТВУЮЩИЙ оператор
  • Просмотры CDS
  • Процедуры управляемой базы данных ABAP
7.40 SP08 Сентябрь 2014 г.
  • FOR выражения
  • Оператор-конструктор REDUCE
  • Начальное значение для выражений конструктора
  • GROUP BY для внутренних таблиц
  • Выражения фильтра и значения по умолчанию для табличных выражений
  • Открытие встроенных объявлений SQL после оператора INTO
  • Дополнительные методы интерфейса
7,50 Ноябрь 2015
  • Новый встроенный тип данных INT8
  • Выражение отношения - ЭТО ИНСТАНЦИЯ
  • Открытые выражения хоста SQL
  • Откройте выражения SQL ROUND, CONCAT, LPAD, LENGTH, REPLACE, RIGHT, RTRIM и SUBSTRING
  • Открытые выражения пути SQL
  • Открыть SQL SELECT UNION
  • Открыть SQL INSERT FROM подзапрос
7,51 Октябрь 2016 г.
  • Перечисления
  • Общие табличные выражения в Open SQL
  • Открыть SQL / CDS CROSS JOIN
  • Обслуживание клиентов CDS
  • Расширения метаданных в CDS
  • Дата и время в открытом SQL / CDS
  • Плавающая точка в Open SQL / CDS
7,52 Сентябрь 2017 г.
  • Виртуальная сортировка внутренних таблиц
7,54 Сентябрь 2019 г.
  • Новые встроенные типы данных
  • Новый встроенный тип ABAP utclong
  • Расчетные задания
  • Десятичные разряды в отметках времени
  • Работа с клиентами
  • Расширение INTOстатьи
  • Определение ассоциаций
  • Новая функция агрегирования STRING_AGG
  • Новые встроенные функции
  • Добавление DISTINCTнеобязательно в функции агрегированияCOUNT
  • Оконные выражения
  • Условия SQL пересмотрены
  • Временные иерархии
  • Новые навигаторы иерархии
  • Агрегатные выражения в выражениях SQL
  • CAST Матрица пересмотрена
  • Строгий режим при проверке синтаксиса
  • Проверка синтаксиса литералов и констант хоста
  • Аннотация для подсказок базы данных
  • Аннотации для освобождения элементов
  • Указание объектов CDS после USING
  • Кавычки для логических схем
  • Дополнение in placeк заявлениюlate numbering
  • Добавление in class ... unique
  • Внешнее имя действия
  • Управление статическим полем
  • Произвольное имя для методов-обработчиков
  • Пул поведения без исключений
  • Язык манипулирования сущностями
  • TYPE STRUCTURE FOR
  • Информация об ответе
  • Абсолютные имена типов
  • Бизнес Сервис
  • Проверки авторизации в обновлениях
  • Неявный тип сообщения в IF_T100_DYN_MSG
  • Использование тестовых классов
  • Дополнение COMBINATION MODE OR|ANDк заявлениюGRANT SELECT ON
  • Дополнение REDEFINITIONк заявлениюGRANT SELECT ON
  • Предикат VOID
  • Дополнение IN SCENARIOк заявлениюGRANT SELECT ON
  • Условие общего аспекта утверждения DEFINE ROLE
  • Новый вариант INHERITING CONDITIONS FROM SUPER
  • Разные REPLACINGоператоры
  • Определение общего аспекта
  • Ограничения DCL для иерархий ABAP CDS
  • Ограничения DCL для объектов представления транзакционной проекции
7,55 Сентябрь 2020 г.
  • Внутренний оператор ABAP EXPORT NAMETAB больше не может использоваться и приводит к ошибке выполнения.
  • Внутренний оператор ABAP IMPORT NAMETAB все еще частично поддерживается по причинам обратной совместимости. Любой доступ к записям для типов таблиц DDIC приводит к ошибке выполнения. Любой другой доступ приводит к ошибкам со стороны ATC.
  • Прежняя собственная таблица базы данных DDNTF для отдельных описаний полей nametab больше не поддерживается и будет удалена.
  • Теперь можно определять новые связи с внешними источниками данных в проекционных ракурсах CDS.
  • Доступен новый вид представления CDS: объект представления CDS.
  • Значение по умолчанию параметра профиля rdisp / max_alt_modes, которое определяет возможное количество сеансов ABAP на сеанс пользователя, было увеличено с 6 до 16 и теперь совпадает с максимальным количеством сеансов ABAP на сеанс пользователя.
  • В присваиваниях, стоящих за добавлением NEXT оператора конструктора REDUCE, теперь можно использовать операторы присваивания вычислений + =, + =, * =, / = или && =, и применяются соответствующие правила.
  • Поддержка регулярных выражений, совместимых с Perl
  • Дословные замены
  • Новое исключение Catchable CX_SY_STRING_SIZE_TOO_LARGE
  • Параметр форматирования ВАЛЮТА для десятичных чисел с плавающей запятой
  • SQL: новая агрегатная функция ALLOW_PRECISION_LOSS
  • SQL: необязательная спецификация оконной рамки в оконной функции
  • SQL: новые оконные функции FIRST_VALUE и LAST_VALUE
  • SQL: новые функции преобразования даты / времени для TIMESTAMPL, DATS и TIMS
  • SQL: новые функции отметки времени UTCL_CURRENT, UTCL_ADD_SECONDS и UTCL_SECONDS_BETWEEN
  • SQL: новые функции даты DATN_DAYS_BETWEEN, DATN_ADD_DAYS и DATN_ADD_MONTHS
  • SQL: новые дополнения после предложения ORDER BY: NULLS FIRST и NULLS LAST
  • SQL: новые агрегатные функции MEDIAN, STDDEV, VAR, CORR и CORR_SPEARMAN
  • SQL: новая функция преобразования геометрии as_geo_json
  • Условия SQL пересмотрены
  • SQL: новая оконная функция NTILE
  • SQL: SELECT, INTO target - переменные хоста теперь могут быть объявлены встроенными, даже если предложение FROM является динамическим.
  • SQL: новые функции преобразования типов to_clob и to_blob
  • SQL: новая функция конвертации валюты конвертация валюты
  • SQL: потоковую передачу и локаторы теперь можно использовать в выражениях SQL.
  • SQL: в элементарных выражениях SQL разрешены другие типы данных
  • SQL: параметры загрузки иерархии
  • SQL: типизированные литералы
  • SQL: новые строковые функции
  • SQL: дополнение к предложению UPDATE FROM
  • SQL: строгий режим проверки синтаксиса
  • Доступ к CDC: проверка с элементом IS [NOT] INITIAL в буквальном состоянии.
  • Доступ к CDC: обход добавления при
  • CDC Access: проверка имени пользователя в пользовательских условиях
  • CDC Access: типы данных
  • Доступ CDC: условия обхода аспектов
  • Объявление исключений CX_NO_CHECK

Смотрите также

использованная литература

внешние ссылки