sqlcode[1]Все больше в настоящее время SAP систем переходят на новую платформу (СУБД) – HANA (High-Performance Analytic Appliance), в основе которой лежит технология вычислений in-memory с использованием принципа поколоночного хранения данных. Вместе с новой платформой, появляются так же и новые возможности для обработки больших объемов данных и более высокопроизводительных вычислений.

Для ускорения ABAP решений на базе HANA, используется перенос вычислений с уровня сервера приложений (AS ABAP) на сервер СУБД (Code-to-Data). Данную задачу можно решить несколькими способами, одним из которых является использование Native SQL и AMDP как средства его вызова.

В контексте ABAP разработки, под Native SQL понимается язык SQL запросов поддерживаемый текущей или дополнительной СУБД сервера приложений.

В данной статье будут рассмотрены основные моменты использования AMDP.

Читать далее

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

К сожалению, в ABAP Object Services нет встроенного механизма поддержки блокировок, что может привести к ошибкам и противоречивости данных при одновременном изменении одинаковых объектов.

Далее в ходе статьи мы разберем один из способов интеграции с системой блокировок.

Читать далее

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

Читать далее

1401801143_033

Ранее было показано, каким образом можно загрузить хранимый объект из БД относительно ключевых полей и даже как массово их инициализировать (метод GET_PERSISTENT_BY_KEY_TAB). Альтернативой подобному методу служит — Query Service. QS — Инструмент позволяющий Вам делать поиск и загрузку хранимых объектов, относительно логических выражений (условий). Кроме фильтров относительно условий, QS позволяет задать параметры сортировки. Используя QS, вам не надо будет выбирать отдельные ключевые поля, т.о. для массовой инициализации группы объектов, система выполнит только один SQL запрос.

Читать далее

databaseИнструмент обработки транзакций позволяет разработчику контролировать процессы записи изменений из хранимых объектах в базу данных.

Transaction Service основан на классической схеме обновления данных, с небольшими дополнениями. Используя TS нет необходимости ручного вызова модулей обновлений. Кроме того, TS вводит такое понятие как ООП транзакция.Читать далее

ormПри разработке с использованием ABAP Objects разработчик неизбежно сталкивается с ситуацией, когда данные нужно либо загружать из каких-либо источников данных (БД, файлы и т.п.) в объекты, либо выгружать из объектов куда-либо.

Системы, решающие задачу сопоставления информации из БД в объекты и обратно принято называть ORM системами.

В объектно-ориентированном программировании объекты в программе представляют объекты из реального мира. В качестве примера можно рассмотреть адресную книгу, которая содержит список людей с нулём или более телефонов и нулём или более адресов. В терминах объектно-ориентированного программирования они будут представляться объектами класса «Человек», которые будут содержать следующий список полей: имя, список (или массив) телефонов и список адресов.

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

Работа с хранимыми объектами осуществляется с помощью встроенной в AS ABAP технологии ABAP Object Services. Данный инструмент можно разделить на три составляющие:

  • Инструмент загрузки и сохранения объектов (Persistence Service)
  • Инструмент поиска в объектах по определенным критериям (Query Service)
  • Инструмент обработки транзакций (Transaction Service)

Читать далее

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

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

Читать далее

database-219x218

Начиная с версии 7.0, EhP2 в ABAP была введена новая концепция обработки внутренних (внешних) данных — потоковая обработка данных.

Поток – ссылка на последовательный набор записей данных, чей конец может быть не известен. Потоки разделяются по виду: потоки данных и фильтрующие потоки.

Фильтрующие потоки в настоящее время не реализованы и не рассматриваются в данной статье.

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

Читающий поток (входящий поток) – любой поток данных, присоединенный к источнику данных. В качестве читающего потока может выступать фильтрующий поток, присоединенный к читающему потоку. Направление читающего потока всегда исходит от источника данных (например, от поля таблицы базы данных к объекту представляющему поток), через читающий поток нельзя записывать данные.

Источник данных – хранилище, из которого происходит получение данных читающим потоком. Источником может быть LOB поле в базе данных, файл, строка или внутренняя таблица. В настоящее время чтение доступно для полей из таблиц баз данных (LOB поля), строк и внутренних таблиц.

Читать далее

ADBC – объектно-ориентированное API, для взаимодействия с интерфейсом нативного SQL в ABAP. Может быть использован в том случае, когда необходим динамический доступ к нативному SQL, т.к. вызов через команды EXEC SQL не подразумевает динамической обработки.

Классы, представляющие ADBC начинаются с CL_SQL_* и CX_SQL_* (пакет SDB_ADBC). Основные из них:

Читать далее