ABAP

редактировать
ABAP / 4
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 для создания бизнес-приложений.

Содержание
  • 1 Введение
  • 2 Среда выполнения ABAP
    • 2.1 Системы и ландшафты SAP
    • 2.2 Уровни программного обеспечения
  • 3 Транзакции
  • 4 Типы программ ABAP
  • 5 Среда разработки
    • 5.1 ABAP Workbench
    • 5.2 Инструменты разработки ABAP
  • 6 ABAP Dictionary
  • 7 Синтаксис ABAP
    • 7.1 Hello world
    • 7.2 Связанные операторы
    • 7.3 Комментарии
    • 7.4 Пробелы
    • 7.5 Операторы ABAP
  • 8 Типы данных и переменные
    • 8.1 Явно типизированное объявление
    • 8.2 Встроенное объявление
  • 9 Объекты ABAP
  • 10 Представления CDS
    • 10.1 Возможности
  • 11 Внутренние таблицы в ABAP
  • 12 История
  • 13 См. Также
  • 14 Ссылки
  • 15 Внешние ссылки
Введение

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

Все программы 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-code.

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

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

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

  • Отчеты
  • Пулы модулей

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

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

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

  • Модули INCLUDE
  • Пулы подпрограмм
  • Функциональные группы
  • Классы объектов
  • Интерфейсы
  • Пулы типов

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

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

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

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

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

ABAP Workbench

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

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

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

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

Инструменты разработки ABAP(ADT), формально известные как «ABAP в Eclipse», представляют собой набор подключаемых модулей для платформа 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и 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 способа определения текста как комментария :

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

Пример:

***************** ********************* ** Программа: БРОНИРОВАНИЕ ** ** Автор: Джо Байт, 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.

ABAP-операторы

В отличие от таких языков, как 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. Проверка синтаксиса сильнее в программах 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
  • INNER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • UNION
  • UNION ALL
  • ГДЕ
  • GROUP BY
  • ИМЕЕТ
  • AS
7.40 SP08
7.50
7.51
  • CROSS JOIN
SAP NW ABAPЛитералыАрифметические операторыУсловные выражения
7.40 SP05
  • В списке SELECT, например литерал как FieldName
  • Как значение RHS
  • +
  • -
  • Логические операторы
    • NOT, AND, OR
  • Операторы сравнения
    • BETWEEN, =, <>, <, >, <=, >=, LIKE
    • IS [NOT] NULL (только в условии WHERE)
7.40 SP08
  • / (деление на основе чисел с плавающей запятой)
7.50
7.51
  • Функция как значение RHS
SAP NW ABAPАгрегатные функцииЧисловые функцииСтроковые функции
7.40 SP05
  • AVG ([DISTINCT])
  • MAX
  • MIN
  • SUM ([DISTINCT])
  • COUNT ([DISTINCT])
  • COUNT (*)
  • CEIL
  • MOD
  • SUBSTRING
  • LPAD
7.40 SP08
  • ABS
  • DIV (целочисленное деление)
  • DIVISION (десятичное деление)
  • FLOOR
  • ROUND
  • CONCAT
  • REPLACE
7.50
  • CONCAT_WITH_SPACE
  • INSTR
  • LEFT
  • ДЛИНА
  • LTRIM
  • RIGHT
  • RPAD
  • RTRIM
7,51
  • AVG ([AS]) для указания типа возврата
  • FLTP_TO_DEC
  • ВЕРХНИЙ
  • НИЖНИЙ
SAP NW ABAPФункции с байтовой строкойФункции даты и времениДругие функции
7.40 SP05
  • Преобразование во встроенные типы DDIC, например abap.fltp
7.40 SP08
  • COALESCE
  • CURRENCY_CONVERSION
  • UNIT_CONVERSION
  • DECIMAL_SHIFT
7.50
  • BINTOHEX <173EXT
  • >DATS_DAYS_BETWEEN
  • DATS_ADD_DAYS
  • DATS_ADD_MONTHS
  • DATS_IS_VALID
  • TIMS_IS_VALID
  • TIMS_IS_VALID
  • TSTALIS_VALID
  • <113_VALID_MP113_VALID<113_VALID>TSTMP_SECONDS_BETWEEN
  • TSTMP_ADD_SECONDS
  • CAST
    • к элементам данных, например CHAR80
    • может быть вложенным
7.51
  • ABAP_SYSTEM_TIMEZONE
  • ABAP_USER_TIMEZONE
  • TSTMP_TO_DATS
  • TSTMP_TO_TIMS
  • TSTMP_TO_TIMS
  • TMP_TO_TIMS
  • 113>DATS_TIMS_TO_TSTMP
  • CAST
    • ТИП СОХРАНЕНИЯ
    • SSTRING для других типов
    • CLNT, LANG, TIMS, UNIT для элементов данных типа CHAR и SSTRING
    • CHAR, SSTRING, NUMC в ACCP и наоборот
    • Агрегатная функция как операнд
SAP NW ABAPУсловные (CASE) выраженияРасширяемость(Неуправляемые) ассоциации
7.40 SP05
  • «Простой» CASE (ведет себя как оператор switch)
  • Вложенные операторы CASE
  • $ EXTENSION. * (Поддержка расширений таблиц базы данных)
  • Выражения пути в
    • списке SELECT
    • Предложение FROM
    • Предложение WHERE
    • Предложение HAVING
  • Условия фильтрации в выражениях пути, например Products._Texts [lagu = 'EN'] as english_name
7.40 SP08
  • CASE "Поиск" (ведет себя как if... else if)
  • EXTEND VIEW
7.50
  • CASE-выражения могут быть используются в качестве операндов в функциях CAST
  • EXTEND VIEW с входными параметрами, выражениями пути, преобразованиями, функциями даты и времени
7.51
  • Функция как значение RHS
  • EXTEND VIEW с агрегатными функциями, предложениями 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-languages)
  • Входные параметры на AnyDB
  • Табличная функция (только SAP HANA)
7.51
  • $ session.system_date (sy-datum)
  • Расширения метаданных
Внутренние таблицы в ABAP

Внутренние таблицы - важная особенность языка 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 г.
  • Объекты ABAP
6.402004
7.02006
  • Платформа переключения / концепция расширения
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 г.
  • ДЛЯ выражений
  • Оператор конструктора REDUCE
  • Начальное значение для выражений конструктора
  • GROUP BY для внутренних таблиц
  • Выражения фильтра и значения по умолчанию для табличных выражений
  • Открывать встроенные объявления SQL после Оператор INTO
  • Дополнительные методы интерфейса
7.50 ноябрь 2015 г.
  • New built-in data type INT8
  • Relational expression IS INSTANCE OF
  • Open SQL host expressions
  • Open SQL expressions ROUND, CONCAT, LPAD, LENGTH, REPLACE, RIGHT, RTRIM and SUBSTRING
  • Open SQL path expressions
  • Open SQL SELECT UNION
  • Open SQL INSERT FROM subquery
7.51 October 2016
  • Enumerations
  • Common table expressions in Open SQL
  • Open SQL/CDS CROSS JOIN
  • CDS client handling
  • Metadata extensions in CDS
  • Date and Time in Open SQL/CDS
  • Floating point on Open SQL/CDS
7.52 September 2017
  • Virtual sorting of internal tables
7.54 September 2019
  • New Built-In Data Types
  • New Built-In ABAP Type utclong
  • Calculation Assignments
  • Decimal Places in Time Stamps
  • Client Handling
  • Extensions of the INTOClause
  • Definition of Associations
  • New Aggregate Function STRING_AGG
  • New Built-In Functions
  • Addition DISTINCTOptional in Aggregate Function COUNT
  • Window Expressions
  • SQL Conditions Revised
  • Temporal Hierarchies
  • New Hierarchy Navigators
  • Aggregate Expressions in SQL Expressions
  • CASTMatrix Revised
  • Strict Mode in the Syntax Check
  • Syntax Check for Literals and Host Constants
  • Annotation for Database Hints
  • Annotations for Releasing Elements
  • Specifying CDS Entities After USING
  • Quotation Marks for Logical Schemas
  • Addition in placeof the Statement late numbering
  • Addition in class... unique
  • External name of an action
  • Static Field Control
  • Arbitrary Name for Handler Methods
  • Behavior Pool No Exceptions
  • Entity Manipulation Language
  • TYPE STRUCTURE FOR
  • Response Information
  • Absolute Type Names
  • Business Service
  • Authorization Checks in Updates
  • Implicit Message Type in IF_T100_DYN_MSG
  • Using Test Classes
  • Addition COMBINATION MODE OR|ANDof the Statement GRANT SELECT ON
  • Addition REDEFINITIONof the Statement GRANT SELECT ON
  • Predicate VOID
  • Addition IN SCENARIOof the Statement GRANT SELECT ON
  • Generic Aspect Condition of the Statement DEFINE ROLE
  • New Variant INHERITING CONDITIONS FROM SUPER
  • Different REPLACINGOperators
  • Definition of a Generic Aspect
  • DCL Restrictions for ABAP CDS Hierarchies
  • DCL Restrictions for Transactional Projection View Entities
See also
Последняя правка сделана 2021-06-07 19:07:40
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте