Jump to content

АБАП

АБАП/4
Парадигма Объектно-ориентированный , структурированный , императивный
Разработано SAP SE
Впервые появился 1983 год ; 41 год назад ( 1983 )
Стабильная версия
7.58 [1] / 26 октября 2023 г .; 8 месяцев назад ( 26.10.2023 )
Дисциплина набора текста Статический , сильный , безопасный , именительный падеж.
ТЫ Кросс-платформенный
Веб-сайт сообщество .sap /темы /абап
Основные реализации
SAP R/2 , SAP R/3 , SAP S/4HANA
Под влиянием
Цель-С , [ нужна ссылка ] КОБОЛ , [ нужна ссылка ] SQL [ нужна ссылка ]

ABAP (Расширенное программирование бизнес-приложений, первоначально Allgemeiner Reports-Aufafafungs-Processor , на немецком языке означает «процессор общей подготовки отчетов»). [2] ) — язык программирования высокого уровня, созданный немецкой программного обеспечения компанией-разработчиком SAP SE . В настоящее время он позиционируется, наряду с Java , как язык программирования сервера приложений SAP NetWeaver , который является частью платформы SAP NetWeaver для создания бизнес-приложений.

Введение

[ редактировать ]

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

раньше был аббревиатурой от , ABAP что по-немецки позже означает был « «Общий процессор подготовки отчетов» обобщенный процессор подготовки отчетов», но [ когда? ] English Advanced Business Application Programming в . переименован ABAP был одним из первых языков, включивших концепцию логических баз данных (LDB), которая обеспечивает высокий уровень абстракции от базовых уровней баз данных, которые поддерживают каждую платформу, язык и модули.

Язык ABAP изначально использовался разработчиками для разработки платформы SAP R/3 . Он также предназначался для использования клиентами SAP для улучшения приложений SAP — клиенты могут разрабатывать собственные отчеты и интерфейсы с помощью ABAP-программирования. Язык был ориентирован на более технических клиентов с опытом программирования.

ABAP остается языком создания программ для системы клиент-сервер R/3 , которую SAP впервые выпустила в 1992 году. По мере развития компьютерного оборудования в 1990-е годы все больше и больше приложений и систем SAP было написано на ABAP. К 2001 году все функции, кроме самых основных, были написаны на ABAP. В 1999 году SAP выпустила объектно-ориентированное расширение ABAP под названием ABAP Objects вместе с версией R/3 4.6.

Текущая платформа разработки 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). [3]

Среда выполнения 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), которая отвечает за контроль параллелизма (например, предотвращение одновременного изменения двумя разработчиками одного и того же кода), управление версиями и развертывание программ в отделе контроля качества и производственные системы.

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

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

[ редактировать ]

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

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

Транзакции

[ редактировать ]

Транзакция в терминологии SAP — это выполнение программы. Обычный способ выполнения кода ABAP в системе SAP — это ввод кода транзакции (например, VA01 — это код транзакции для «Создания заказа на продажу»). Общие коды транзакций (T-коды), используемые разработчиком ABAP: SE38, SE09, SE10, SE24, SE11, SE16N, SE80, SE37, ST22 и т. д. [4] [5] Транзакции можно вызывать через определяемые системой или пользователем ролевые меню. Их также можно запустить, введя код транзакции непосредственно в поле команды, которое присутствует на каждом экране SAP. Транзакции также можно вызывать программно с помощью операторов ABAP CALL TRANSACTION и LEAVE TO TRANSACTION. Общее понятие транзакции в терминологии SAP называется логической единицей работы (LUW).

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

[ редактировать ]

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

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

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

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

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

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

  • ВКЛЮЧИТЬ модули — они включаются во время генерации в вызывающий модуль; он часто используется для разделения больших программ.
  • Пулы подпрограмм . Они содержат подпрограммы ABAP (блоки кода, заключенные в операторы FORM/ENDFORM и вызываемые с помощью PERFORM).
  • Группы функций . Это библиотеки автономных функциональных модулей (заключенных в FUNCTION/ENDFUNCTION и вызываемых с помощью CALL FUNCTION).
  • Классы объектов . Они похожи на классы и интерфейсы Java; первые определяют набор методов и атрибутов, вторые содержат «пустые» определения методов, для которых любой класс, реализующий интерфейс, должен предоставить явный код.
  • Интерфейсы — такие же, как классы объектов.
  • Пулы типов . Они определяют коллекции типов данных и констант.

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

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

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

[ редактировать ]

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

ABAP-инструментарий

[ редактировать ]

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

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

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

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

[ редактировать ]

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

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

ABAP-словарь

[ редактировать ]

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

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

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

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

Синтаксис ABAP

[ редактировать ]

Это краткое описание синтаксиса ABAP начинается с вездесущего «Hello» .

Привет, мир

[ редактировать ]
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 есть два способа определения текста в виде комментария :

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

Пример:

***************************************
** 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 возможен более краткий стиль. [7]

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

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

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

[ редактировать ]

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

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

Тип Описание
я Целое число
П Упакованный десятичный
Ф Плавающая точка
Н Числовой символ
С Характер
Д Дата
Т Время
Х Шестнадцатеричный (необработанный байт)
НИТЬ Строка переменной длины
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». [8] Это помогает упростить приложения и сделать их более управляемыми.

Объекты 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 и также управляются здесь.

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

SAP СЗ ABAP SQL-соединения Операции над наборами SQL ВЫБЕРИТЕ пункты
7.40 СП05
  • ВНУТРЕННЕЕ СОЕДИНЕНИЕ
  • ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
  • ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
  • СОЮЗ
  • СОЮЗ ВСЕХ
  • ГДЕ
  • ГРУППИРОВАТЬ ПО
  • ИМЕЮЩИЙ
  • КАК
7.40 СП08
7.50
7.51
  • ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ
SAP СЗ ABAP Литералы Арифметические операторы Условные выражения
7.40 СП05
  • В списке SELECT, например, буквально как FieldName
  • Как значение RHS
  • +
  • -
  • Булевы операторы
    • НЕ, И, ИЛИ
  • Операторы сравнения
    • МЕЖДУ, =, <>, <, >, <=, >=, НРАВИТСЯ
    • IS [NOT] NULL (только в условии WHERE)
7.40 СП08
  • / (Плавающее деление)
7.50
7.51
  • Функция как значение RHS
SAP СЗ ABAP Агрегатные функции Числовые функции Строковые функции
7.40 СП05
  • СРЕДНЕЕ([РАЗЛИЧНЫЕ])
  • МАКС
  • МИН
  • СУММА([РАЗЛИЧНЫЕ])
  • СЧЕТ([РАЗЛИЧНЫЕ])
  • СЧИТАТЬ(*)
  • CEIL
  • ПРОТИВ
  • ПОДСТРОКА
  • ЛПАД
7.40 СП08
  • АБС
  • DIV (целочисленное деление)
  • ДЕЛЕНИЕ (десятичное деление)
  • ПОЛ
  • КРУГЛЫЙ
  • КОНКАТ
  • ЗАМЕНЯТЬ
7.50
  • CONCAT_WITH_SPACE
  • ИНСТР
  • ЛЕВЫЙ
  • ДЛИНА
  • ЛТРИМ
  • ВЕРНО
  • РПАД
  • РТРИМ
7.51
  • AVG( [AS]) для указания типа возвращаемого значения
  • FLTP_TO_DEC
  • ВЕРХНИЙ
  • НИЖЕ
SAP СЗ ABAP Функции байтовой строки Функции даты и времени Другие функции
7.40 СП05
  • CAST для встроенных типов DDIC, например abap.fltp
7.40 СП08
  • ОБЪЕДИНЯТЬСЯ
  • CURRENCY_CONVERSION
  • UNIT_CONVERSION
  • ДЕСИМАЛЬНЫЙ_SHIFT
7.50
  • БИНТОГЕКС
  • ГЕКСТОБИН
  • 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
  • ТСТМП_ТО_ДАТС
  • ТСТМП_ТО_ТИМС
  • ТСТМП_ТО_ДСТ
  • DATS_TIMS_TO_TSTMP
  • БРОСАТЬ
    • ТИП КОНСЕРВИРОВАНИЯ
    • SSTRING для других типов
    • CLNT, LANG, TIMS, UNIT для элементов данных типа CHAR и SSTRING.
    • CHAR, SSTRING, NUMC в ACCP и наоборот
    • Агрегатная функция как операнд
SAP СЗ ABAP Условные (CASE) выражения Расширяемость (Неуправляемые) ассоциации
7.40 СП05
  • «Простой» CASE (ведёт себя как оператор переключения)
  • Вложенные операторы CASE
  • $EXTENSION.* (поддержка расширений таблиц базы данных)
  • Выражения пути в
    • ВЫБРАТЬ список
    • ОТ предложения
    • Предложение ГДЕ
    • ПРЕДЛОЖЕНИЕ HAVING
  • Условия фильтрации в выражениях пути, например Products._Texts[ lagu = 'EN' ] as english_name
7.40 СП08
  • "Искаемый" CASE (ведёт себя как если... иначе если)
  • РАСШИРИТЬ ВИД
7.50
  • Выражения CASE можно использовать в качестве операндов в функциях CAST.
  • РАСШИРИТЬ ВИД с входными параметрами, выражениями пути, преобразованиями, функциями даты и времени.
7.51
  • Функция как значение RHS
  • EXTEND VIEW с агрегатными функциями, предложениями GROUP BY и UNION.
  • Определения ассоциаций в представлениях с UNION
  • Фильтры по умолчанию для ассоциаций (С ФИЛЬТРОМ ПО УМОЛЧАНИЮ)
  • Кардинальность «ко многим» (*:) можно указать в фильтрах путей.
SAP СЗ ABAP Переменные сеанса Входные параметры Другой
7.40 СП05
  • КЛЮЧЕВЫЕ элементы
7.40 СП08
  • входные параметры в большинстве БД
7.50
  • $session.user (sy-uname)
  • $session.client (sy-mandt)
  • $session.system_language (мой-сы)
  • Входные параметры в AnyDB
  • Табличная функция (только SAP HANA)
7.51
  • $session.system_date (sy-datum)
  • Расширения метаданных

[10]

Внутренние таблицы в 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,6С май 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 СП05 декабрь 2013 г.
  • MOVE-CORRESPONDING для внутренних таблиц
  • Выражение LET в выражениях конструктора
  • СООТВЕТСТВУЮЩИЙ оператор
  • Просмотры CDS
  • Процедуры базы данных, управляемые ABAP
7.40 СП08 Сентябрь 2014 г.
  • ДЛЯ выражений
  • Конструктор оператора REDUCE
  • Начальное значение для выражений конструктора
  • GROUP BY для внутренних таблиц
  • Выражения фильтра и значения по умолчанию для табличных выражений
  • Открытые встроенные объявления SQL после инструкции INTO
  • Дополнительные методы интерфейса
7.50 ноябрь 2015 г.
  • Новый встроенный тип данных INT8.
  • Реляционное выражение IS INSTANCE OF
  • Выражения хоста Open SQL
  • Выражения открытого SQL ROUND, CONCAT, LPAD, LENGTH, REPLACE, RIGHT, RTRIM и SUBSTRING
  • Выражения пути открытого SQL
  • Открыть SQL SELECT UNION
  • Открыть подзапрос SQL INSERT FROM
7.51 Октябрь 2016 г.
  • Перечисления
  • Общие табличные выражения в Open SQL
  • Открыть перекрестное соединение SQL/CDS
  • Обработка клиента CDS
  • Расширения метаданных в CDS
  • Дата и время в Open 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 для иерархий CDS ABAP
  • Ограничения DCL для сущностей представления транзакционной проекции
7.55 сентябрь 2020 г.
  • Внутренний оператор ABAP EXPORT NAMETAB больше не может использоваться и приводит к ошибке выполнения.
  • Внутренний оператор ABAP IMPORT NAMETAB по-прежнему частично поддерживается из соображений совместимости с предыдущими версиями. Любой доступ к записям для типов таблиц DDIC приводит к ошибке времени выполнения. Любой другой доступ приводит к ошибкам со стороны УВД.
  • Бывшая собственная таблица базы данных DDNTF для отдельных описаний полей имен больше не поддерживается и будет удалена.
  • Теперь можно определять новые ассоциации с внешними источниками данных в представлениях проекций CDS.
  • Доступен новый вид представления CDS: объект представления CDS.
  • Значение по умолчанию параметра профиля rdisp/max_alt_modes, определяющее возможное количество сеансов ABAP на сеанс пользователя, было увеличено с 6 до 16 и теперь соответствует максимальному количеству сеансов ABAP на сеанс пользователя.
  • В присваиваниях, связанных с добавлением NEXT оператора конструктора REDUCE, теперь можно использовать операторы вычислительного присваивания +=, +=, *=, /= или &&=, и применяются соответствующие правила.
  • Поддержка регулярных выражений, совместимых с Perl
  • Дословные замены
  • Новое перехватываемое исключение 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 — переменные хоста теперь можно объявлять встроенными, даже если предложение FROM является динамическим.
  • SQL: новые функции преобразования типов to_clob и to_blob.
  • SQL: новая функция конвертации валюты.
  • SQL: потоковую передачу и локаторы теперь можно использовать в выражениях SQL.
  • SQL: в элементарных выражениях SQL разрешены дополнительные типы данных.
  • SQL: параметры загрузки иерархии
  • SQL: типизированные литералы
  • SQL: новые строковые функции
  • SQL: дополнение к предложению UPDATE FROM
  • SQL: строгий режим проверки синтаксиса
  • Доступ к CDC: проверка с помощью элемента IS [NOT] INITIAL в буквальном условии.
  • Доступ к CDC: обход добавления, когда
  • Доступ к CDC: проверьте имя пользователя в условиях пользователя.
  • Доступ CDC: типы данных
  • Доступ к CDC: условия обхода аспектов
  • Объявление исключений CX_NO_CHECK
7.56 октябрь 2021 г.
  • В словаре ABAP расширена единица загрузки. Теперь доступны следующие настройки:
    • Столбец Предпочтительный
    • Предпочтительная страница
    • Столбец включен
    • Страница обязательна
  • Новый оператор EXTEND ABSTRACT ENTITY DDL ABAP CDS позволяет добавлять новые элементы к существующим абстрактным объектам CDS с помощью расширений абстрактных объектов CDS.
  • В абстрактных сущностях CDS теперь можно определять ассоциации «родитель» без условия включения. Условие ON можно опустить, если цель ассоциации также является абстрактной сущностью CDS.
  • Определение иерархии DEFINE HIERARCHY теперь может использовать новое дополнение CACHE ON|OFF|FORCE для указания политики кэширования для созданной иерархии.
  • Для каждого представления на основе CDS DDIC (устарело) при активации в словаре ABAP создается представление DDIC, управляемое CDS (устарело).
  • В сущностях представления CDS теперь можно повторно использовать выражения, определенные в списке SELECT, в других позициях операндов того же объекта представления CDS, используя синтаксис $projection.reuse_exp.
  • Предложения UNION теперь поддерживаются в объектах представления CDS. Есть несколько отличий от предложений UNION в представлениях на основе CDS DDIC. Наиболее важным отличием является то, что ветви предложений объединения могут быть вложены друг в друга в объектах представления CDS.
  • Добавление DISTINCT теперь доступно для операторов SELECT в объектах представления CDS.
  • В сущностях представления CDS доступны два новых оператора множества:
    • КРОМЕ
    • ПЕРЕСЕЧЕНИЕ
  • В объектах представления CDS доступны две новые функции преобразования:
    • GET_NUMERIC_VALUE
    • CURR_TO_DECFLOAT_AMOUNT
  • Типизированные литералы теперь доступны для объектов представления CDS. Типизированные литералы допускают явное объявление типа и доступны для многих встроенных типов данных словаря ABAP.
  • В сущностях представления CDS реализована специальная обработка полей суммы CDS и полей количества CDS. Это отличается от обработки полей суммы и полей количества в DDIC, например, возможно больше типов данных, а ссылка на ключ валюты/единицы измерения учитывается в выражениях.
  • В сущностях представления CDS матрица выражений была расширена:
    • В предложении WHERE в качестве операндов поддерживаются арифметические выражения и выражения регистра.
    • В предложении HAVING в качестве операндов поддерживаются арифметические выражения и выражения регистра.
    • В искомом выражении регистра в качестве операндов поддерживаются арифметические выражения и выражения регистра.
  • В представлениях проекции CDS теперь можно переопределить ассоциации CDS из проецируемого объекта в части заголовка. Это делается с помощью ключевого слова REDEFINE ASSOCIATION. Переопределение может включать новый фильтр, имя псевдонима и перенаправление на новую цель ассоциации, которая также должна быть представлением проекции CDS, таким образом перемещая полную модель данных на уровень проекции.
  • Теперь можно указать контракт поставщика для представлений проекции CDS, используя ключевое слово PROVIDER CONTRACT. Контракт поставщика определяет, в каком сценарии используется представление проекции CDS, а сценарий, в свою очередь, определяет, в какой среде выполнения выполняется представление и какие функции доступны.
  • Теперь доступна следующая документированная программа ABAP для оценки возможности перехода от представления на основе CDS DDIC (устаревшего) к объекту представления CDS:
    • RUTDDLS_MIGRATION_CANDIDATES
  • Теперь доступна следующая документированная программа ABAP для миграции представлений на основе CDS DDIC в объекты представлений CDS:
    • РУТДДЛСВ2МИГРАЦИЯ
  • Доступен новый тип ссылки для аннотаций:
    • Локальное определениеRef
  • Были выпущены следующие новые аннотации AbapCatalog.extensibility:
    • AbapCatalog.extensibility.allowNewdataSources
    • AbapCatalog.extensibility.dataSources
    • AbapCatalog.extensibility.elementSuffix
    • AbapCatalog.extensibility.extensible
    • AbapCatalog.extensibility.quota.maximumBytes
    • AbapCatalog.extensibility.quota.maximumFields
  • Доступны следующие новые функции системных таблиц CDS:
    • ... SERIES_GENERATE_DATE( шаг = ... from_value = ... to_value = ... ) ...
    • ... SERIES_GENERATE_INTEGER( шаг = ... from_value = ... to_value = ... ) ...
    • ... SERIES_GENERATE_TIME( шаг = ... from_value = ... to_value = ... ) ...
    • ... SERIES_GENERATE_TIMESTAMP( шаг = ... from_value = ... to_value = ... ) ...
  • Следующий синтаксис можно использовать для селектора компонентов объекта -> для динамического доступа к компонентам и атрибутам:
    • ... { dref->(имя_компа) } | { cref->(имя_атрицы) } | { iref->(имя_атрибута) } ...
  • Оператор разыменования->* теперь можно использовать для общих типизированных переменных ссылки на данные почти во всех позициях операндов. Раньше это было возможно только в операторе ASSIGN.
  • Теперь можно указывать операторы MOVE-CORRESPONDING со следующими дополнениями в контексте вложенных таблиц в глубоких структурах. Оба гарантируют, что вложенные таблицы глубоких целевых структур не будут удалены, а новые строки вложенных таблиц в глубоких исходных структурах будут добавлены.
  • Появилась возможность указывать операторы компонента CORRESPONDING со следующими дополнениями в контексте вложенных таблиц в глубоких структурах. Оба гарантируют, что вложенные таблицы глубоких целевых структур не будут удалены, а новые строки вложенных таблиц в глубоких исходных структурах будут добавлены:
    • ДОПОЛНЕНИЕ БАЗЫ
  • Помимо существующей поддержки регулярных выражений PCRE и регулярных выражений POSIX (устарело), ​​ABAP теперь поддерживает также регулярные выражения XPath и регулярные выражения XSD. Внутри они преобразуются в регулярные выражения PCRE и обрабатываются библиотекой PCRE2.
    • Оба вида регулярных выражений могут использоваться новыми (фабричными) методами CREATE_XPATH2 и CREATE_XSD системных классов CL_ABAP_REGEX и CL_ABAP_MATCHER.
    • Регулярные выражения XPath могут использоваться с новым аргументом xpath в некоторых встроенных функциях.
  • Класс CL_ABAP_MATCHER теперь поддерживает выноски в синтаксисе PCRE. Метод SET_CALLOUT можно использовать для регистрации класса-обработчика, реализующего интерфейс IF_ABAP_MATCHER_CALLOUT. Специальные символы (?C...) регулярного выражения PCRE затем вызывают метод интерфейса CALLOUT при выполнении метода MATCH.
  • Теперь это ограничение частично снято. В операторах INSERT, APPEND, COLLECT, MODIFY, DELETE, READ, LOOP и SORT операнды могут быть символами полей и формальными параметрами, которые полностью типизированы с данными TYPE или TYPE Any. Такие операнды можно использовать так же, как если бы они были напечатаны в любой таблице. Если задействован доступ к индексу, все равно требуются операнды, набранные как минимум с помощью TYPE index_table.
  • Имена псевдонимов теперь можно объявлять для вторичных ключей внутренних таблиц, используя добавление алиасов TYPES и DATA. Это может быть полезно при изменении существующих вторичных ключей без аннулирования пользователей.
  • ABAP SQL теперь поддерживает новую строковую функцию INITCAP.
  • Новые функции даты и времени
  • Новые актеры
  • ABAP SQL теперь поддерживает новые операторы множества INTERSECT и EXCEPT.
  • Новый параметр start теперь можно использовать в функции REPLACE_REGEXPR. Кроме того, появление параметра теперь может включать выражения
  • ABAP SQL теперь поддерживает новую строковую функцию SUBSTRING_REGEXPR, которая поддерживает регулярные выражения.
  • Если в операторе ABAP SQL используется одна из новых функций, перечисленных выше, или одна из новых функций системных таблиц CDS SERIES_GENERATE_, проверка синтаксиса выполняется в строгом режиме, который обрабатывает оператор более строго, чем обычная проверка синтаксиса.
  • Начиная с этого выпуска, авторы средств управления доступом могут помечать подмножество элементов CDS, используемых в их условиях доступа, как необязательные, чтобы объекты CDS, наследующие их условия доступа, больше не подвергались влиянию первого дня.
  • С новым дополнением ALL условия доступа могут выражать, что доступ должен быть предоставлен только тогда, когда из ассоциации с множеством значений все значения удовлетворяют условию.
  • Во всех местах контроля доступа ссылки на объекты авторизации, поля авторизации и имена сценариев SACF могут быть записаны в синтаксисе идентификаторов, если они ему соответствуют, или в строковом синтаксисе с одиночными апострофами в качестве альтернативы.
  • При использовании самоопределяемых аспектов они теперь могут называть произвольный набор своих элементов (поддерживаются выражения пути) в качестве фильтрующего элемента. На эти фильтрующие элементы можно ссылаться при использовании самоопределяемого аспекта в условии доступа.
  • Раздел REPLACING, ранее доступный только для наследования на основе сущностей. НАСЛЕДОВАНИЕ УСЛОВИЙ ОТ ENTITY cds_ntity, теперь также доступен для наследования на основе ролей. INHERIT роль FOR GRANT SELECT ON cds_entity.
  • Раздел REPLACING наследования условий теперь поддерживает общий шаг замены для замены произвольного поля или ассоциации источника наследования произвольным полем или ассоциацией цели наследования.
  • Соблюдение настроек в переключаемой структуре авторизации (SACF) уже было возможно для выделенных условий PFCG:
    • ASPECT PFCG_AUTH ( S_OBJECT В СЦЕНАРИИ ... )
  • Для иерархий CDS контроль доступа ограничивался использованием условий, не приводящих к фильтрации базы данных. Теперь для формулирования таких условий можно использовать элементы, расположенные в объявленном каталоге иерархии DIRECTORY...FILTER BY.
  • При работе системы с аварийным пользователем SAP* контроль доступа CDS теперь деактивируется.
  • Начиная с версии 7.56 важные параметры документации по ключевым словам ABAP можно настроить явно. Раньше документация настраивалась неявно из настроек системы.
  • Программа ABAP_DOCU_CONFIG позволяет выбирать между различными наборами параметров:
    • Набор параметров, типичный для систем разработки SAP
    • Набор параметров, типичный для систем разработки заказчика
    • Набор параметров, типичный для систем SAP S/4HANA
    • Набор параметров, типичный для среды SAP S/4HANA Cloud ABAP
    • Набор параметров, типичный для среды SAP BTP ABAP
    • Текущий набор параметров
  • Модель программирования приложений ABAP RESTful (RAP) была усовершенствована.
7.57 Октябрь 2022 г.
  • Компоненты структур можно назначать символам полей с помощью нового синтаксиса struc-(comp), который в значительной степени заменяет вариант ASSIGN COMPONENT OF.
  • Новое дополнение ELSE UNASSIGN можно указать для следующих вариантов оператора ASSIGN:
    • динамические задания
    • назначения динамических компонентов
    • динамический доступ
    • присвоение табличного выражения
  • SAP HANA XSA заменяет SAP HANA XSC. Методы доступа, разработанные специально для объектов XSC, не подходят для объектов XSA и объявлены устаревшими. Внешние представления DDIC являются одним из таких методов доступа. Они признаны устаревшими. Дополнительную информацию можно найти в SAP-нотах 2465027 и 3116165.
  • Новый оператор объявления FINAL объявляет неизменяемую переменную, которой нельзя присвоить другое значение в других позициях записи того же контекста.
  • Новое дополнение STEP определяет размер шага и порядок обработки внутренней таблицы. Для операторов LOOP и FOR STEP можно использовать для управления размером шага и порядком обработки. Для операторов APPEND, DELETE, INSERT, VALUE и NEW STEP можно использовать только для определения размера шага. Для этих операторов невозможно изменить порядок обработки с помощью STEP.
  • Доступ к индексу таблицы при доступе к внутренней таблице с использованием хеш-ключа (доступ к хеш-таблице с использованием ее первичного ключа или доступ к любой внутренней таблице с использованием хешированного вторичного ключа) не разрешен. Если хешированный ключ указывается динамически после USING KEY в операторе LOOP AT или выражении FOR ... IN, использование FROM и TO должно привести к исключению. До версии 7.57 такого не было. Начиная с версии 7.57 в такой ситуации возникает ошибка выполнения ITAB_ILLEGAL_INDEX_OP. До версии 7.57 поведение было неопределенным.
  • Если в операторе LOOP AT или выражении FOR ... IN для FROM указано отрицательное значение, оно неявно устанавливается равным 1. До версии 7.57 такого не было в следующей ситуации:
    • Доступ к внутренней таблице осуществляется с помощью отсортированного ключа.
    • Внутренняя таблица содержит более 10 строк таблицы.
    • Указано условие WHERE, которое можно оптимизировать.
  • Оператор IMPORT теперь позволяет присваивать данные типа n объектам данных типа c, если они имеют одинаковую длину. Это изменение может привести к несовместимому поведению, если обработка предыдущего исключения приводит к результатам, отличным от нового поведения.
  • Улучшена буферизация объектов CDS: теперь поддерживается буферизация представления при условии, что объект представления CDS, используемый в качестве источника данных, соответствует определенным требованиям.
  • В сущностях представления CDS добавление ELSE NULL доступно в простых и сложных случаях. Он определяет нулевое значение как возвращаемое значение ветки ELSE.
  • В объекты представления CDS добавлены новые параметры приведения.
  • Буферизация таблиц теперь может быть определена для объектов представления CDS:
    • Буферизацию таблиц можно включать и отключать с помощью аннотации @AbapCatalog.entityBuffer.definitionAllowed: true|false.
    • Тип буферизации можно указать с помощью буфера сущности CDS, определенного с помощью DEFINE VIW ENTITY BUFFER ON cds_view_entity ...
  • В объектах представления CDS функция SUBSTRING была улучшена. Теперь он принимает в качестве аргументов не только литералы, но также поля, параметры, выражения и встроенные функции pos и len.
  • В объектах представления CDS функции LEFT и RIGHT были расширены. Теперь они принимают литералы, поля, параметры, выражения и встроенные функции в качестве аргумента len.
  • В сущностях представления CDS доступны две новые переменные сеанса приложения:
    • bs_system_id
    • bs_zone_id
  • Использование представлений DDIC, управляемых CDS, было объявлено устаревшим. Следующая программа ABAP перечисляет все объекты репозитория, которые используют представления DDIC, управляемые CDS:
    • RUT_WHERE_USE_SQLVIEW
  • Доступны аналитические проекции CDS для моделирования аналитических запросов. Представление аналитической проекции CDS определяется с помощью DEFINE TRANSIENT VIEW ENTITY AS PROJECTION ON. Значение контракта поставщика должно быть установлено как ANALYTICAL_QUERY.
  • Доступен новый тип проекции CDS: транзакционный интерфейс CDS. Транзакционные интерфейсы CDS служат стабильным уровнем общедоступного интерфейса в модели данных CDS. Обычно они используются в контексте модели прикладного программирования ABAP RESTful, чтобы обеспечить основу для интерфейса RAP BO. Представление транзакционного интерфейса CDS определяется с помощью DEFINE VIEW ENTITY AS PROJECTION ON. Значение контракта поставщика должно быть установлено равным TRANSACTIONAL_INTERFACE.
  • Реализована специальная обработка полей суммы CDS и полей количества CDS для сравнений в объектах представления CDS.
  • Тип данных abap.string теперь поддерживается для входных параметров в списке параметров объекта представления CDS и в списке параметров табличной функции CDS.
  • Тип данных abap.string теперь поддерживается при привязке фактических параметров к входным параметрам объекта представления CDS, если функция таблицы CDS используется в качестве источника данных после FROM.
  • Новый оператор EXTEND CUSTOM ENTITY DDL ABAP CDS позволяет добавлять новые элементы к существующим пользовательским объектам CDS с помощью расширений пользовательских объектов CDS.
  • Представления на основе CDS DDIC (устаревшие), определенные с помощью оператора DEFINE VIEW, являются устаревшими. При создании новых моделей данных вместо них следует использовать сущности представления CDS, определенные с помощью DEFINE VIEW ENTITY.
  • Устаревшие версии языка ABAP
    • Статический ABAP с ограниченным использованием объектов
    • Стандартный ABAP с ограниченным использованием объектов
  • SAP HANA XSA заменяет SAP HANA XSC. Методы доступа, разработанные специально для объектов XSC, не подходят для объектов XSA и объявлены устаревшими. Сюда входят внешние представления DDIC и прокси-серверы процедур базы данных. Дополнительную информацию можно найти в SAP-нотах 2465027 и 3116165.
  • Модель программирования приложений ABAP RESTful (RAP) была усовершенствована.
  • Шпаргалки по ABAP теперь доступны как часть документации по ключевым словам ABAP.
7.58 октябрь 2023 г.
  • Аналитические проекционные представления CDS теперь также могут иметь аналитические представления измерений в качестве проецируемого объекта.
  • Аннотация CDS @AbapCatalog.preserveKey устарела и теперь ведет себя частично по-другому.
  • Простые типы CDS определяют элементарные типы данных изначально в ABAP CDS. Простой тип CDS можно дополнить метаданными с помощью аннотаций CDS. Синтаксический оператор для определения простого типа CDS — DEFINE TYPE.
  • Перечислимые типы CDS определяют перечисляемые типы изначально в ABAP CDS. Синтаксический оператор для определения перечислимого типа CDS — DEFINE TYPE ENUM.
  • Аннотация ABAP Environment.sql.passValue теперь также доступна для параметров CDS в сущностях представления CDS, представлениях проекции CDS и иерархиях CDS. Область аннотаций была расширена.
  • Новая аннотация ABAP доступна в сущностях представления CDS, представлениях проекции CDS и иерархиях CDS: Environment.sql.passValueForClient. Он работает аналогично аннотации Environment.sql.passValue, но для клиентских полей. Он указывает, является ли заполнитель? или буквальное значение передается в базу данных в условии ABAP SQL, когда поле клиента сравнивается с переменной хоста.
  • Теперь доступен новый синтаксис для указания количества ассоциаций CDS, объединений CDS и условий фильтрации выражений пути CDS.
  • Доступен новый объект CDS: скалярная функция CDS. Он определяется с помощью оператора CDS DDL DEFINE SCALAR FUNCTION. Скалярная функция CDS связана с функцией AMDP, в которой она реализована с использованием SQLScript.
  • Матрица типов, которые можно преобразовать друг в друга с помощью CAST, была расширена для представлений на основе CDS DDIC (устарело) и для сущностей представлений CDS. Типы данных DECFLOAT16 и DECFLOAT34 теперь можно преобразовать в тип данных CURR.
  • Условие WHERE теперь доступно также для транзакционных интерфейсов CDS, чтобы ограничить набор результатов, возвращаемый при доступе к транзакционному интерфейсу.
  • Типизированные литералы теперь можно использовать в большем количестве позиций операндов в ABAP CDS. Теперь их можно использовать в состоянии WHERE представлений проекции CDS и в состоянии ON ассоциаций CDS.
  • Выражение повторного использования $projection.Field теперь также можно использовать для повторного использования полей, выбранных с помощью выражения пути.
  • Для представлений проекции CDS типа транзакционного запроса CDS доступен новый тип правила доступа: правило_проекции, определенное с помощью оператора GRANT SELECT ON... AS PROJECTION ON... FALLBACK ASSOCIATION....
  • Доступны две новые функции DCL:
    • SWITCH_RUNTIME_STATE
    • TOGGLE_RUNTIME_STATE
  • Доступны два новых системных класса для числовых вычислений:
    • CL_ABAP_BIGINT содержит методы для вычислений с любым размером целого числа в ABAP.
    • CL_ABAP_RATIONAL содержит методы для вычислений с рациональными числами без потери точности.
  • Новый класс CL_ABAP_DIFF сравнивает содержимое внутренних таблиц и возвращает информацию о любых найденных различиях.
  • Новые методы MOVE_TRUNC, MOVE_TO_SHORT_TRUNC, ADD_TO_SHORT_TRUNC и SUBTRACTSECS_TO_SHORT_TRUNC системного класса CL_ABAP_TSTMP округляют доли секунды длинных меток времени вниз, в то время как существующие методы MOVE, MOVE_TO_SHORT, ADD_TO_SHORT и SUBTRACTSECS_TO_SHORT коммерчески округляются. Поскольку последнее может оказаться неожиданным, теперь можно использовать новые методы, чтобы сохранить целую часть длинной отметки времени.
  • Используя новый метод GET_CURRENT_PHASE, вы получаете информацию о текущей фазе транзакции RAP.
  • Новая спецификация \LINE позволяет указывать тип строки внутренней таблицы в абсолютном имени типа. За \LINE может следовать -comp, чтобы указать тип компонента типа линии.
  • В функциональных методах оператор RETURN может использоваться для присвоения результата выражения expr возвращаемому значению при завершении метода.
  • Дополнение DEFAULT позволяет присваивать значения целевому компоненту на основе выражения.
  • До сих пор оптимизация условия WHERE с использованием доступа по ключу происходила только в очень ограниченных случаях, когда пары ключ-значение приходилось явно сравнивать на предмет равенства и объединять с помощью AND. Теперь компилятор тщательно анализирует условие WHERE и пытается извлечь пары ключ/значение, необходимые для доступа к ключу.
  • Выражения ABAP SQL можно определить справа от условия, заключенного в круглые скобки.
  • Доступен новый синтаксис для указания мощности объединений: {MANY | ОДИН | От {EXACT ONE}} ДО {MANY | ОДИН | {ТОЧНО ОДИН}}
  • Теперь можно обрабатывать несколько внутренних таблиц, доступ к которым осуществляется с помощью FROM @itab, в рамках одного оператора ABAP SQL с помощью механизма ABAP SQL. В настоящее время это ограничивается объединениями внутренних таблиц, в которых таблицы базы данных не задействованы.
  • Благодаря новому дополнению PRIVILEGED ACCESS контроль доступа CDS можно отключить для полного оператора SELECT.
  • Начиная с версии 7.58, отображение документации по ключевым словам ABAP предлагает функцию отправки отзывов в системы разработки, отличные от SAP, и на справочный портал SAP. До сих пор возможность отправки обратной связи существовала только в собственных системах разработки SAP. Эту функцию можно включить или выключить в конфигурации документации по ключевым словам ABAP, см. SAP-ноту 3051036.
  • Начиная с версии 7.58, документация по ключевым словам ABAP представляет новый макет в инструментах разработки ABAP для Eclipse (ADT), где также доступно переключение между стандартным ABAP и облаком ABAP. Новый макет включает в себя:
    • Новая панель заголовка со ссылками на обратную связь по почте и веб-версию.
    • Выделенные ключевые блоки для подсказок, блоков кода и т. д.
    • Столы с полосками зебры
  • В версии 7.58 модель программирования приложений ABAP RESTful (RAP) была усовершенствована следующим образом:
    • RAP BDL в ABAP версии 7.58
    • ABAP EML в ABAP версии 7.58

См. также

[ редактировать ]
  1. ^ ABAP - Изменения, специфичные для выпуска: изменения в выпусках 7.5x, заархивированные 24 октября 2020 г. на Wayback Machine.
  2. ^ « «История ABAP». SAP-technical.com » . Архивировано из оригинала 15 ноября 2017 г. Проверено 9 августа 2010 г.
  3. ^ См. матрицу доступности продуктов , заархивированную 28 сентября 2016 г. на Wayback Machine.
  4. ^ «Список кодов транзакций» . Справочный портал SAP . Проверено 9 сентября 2023 г.
  5. ^ «Полный список кодов транзакций в S4/HANA — docsfortec.com» . docsfortec.com . Архивировано из оригинала 14 мая 2024 г. Проверено 14 мая 2024 г.
  6. ^ «Начало работы с инструментами разработки ABAP для SAP NetWeaver | Блоги SAP» . 19 июня 2012 года. Архивировано из оригинала 28 июня 2015 года . Проверено 15 июня 2015 г.
  7. ^ «Пример программы ABAP со множеством выражений» . Архивировано из оригинала 19 июня 2015 г. Проверено 19 июня 2015 г.
  8. ^ «Классы» , SAP NetWeaver 7.0 , заархивировано из оригинала 28 ноября 2009 г. , получено 10 августа 2009 г.
  9. ^ «Документация по ключевым словам ABAP» . Архивировано из оригинала 11 июля 2019 г. Проверено 11 июля 2019 г.
  10. ^ «Матрица функций ABAP Core Data Services (CDS) | Блоги SAP» . 2 февраля 2015 года. Архивировано из оригинала 11 июля 2019 года . Проверено 11 июля 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e09c7f297c1f5baded65f4a704fcd3c6__1717884180
URL1:https://arc.ask3.ru/arc/aa/e0/c6/e09c7f297c1f5baded65f4a704fcd3c6.html
Заголовок, (Title) документа по адресу, URL1:
ABAP - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)