Комментарии по теме

«Ко­рре­кти­ро­вка таблиц базы данных с помощью ABAP»
Олег Точенюк:
Андрей а вам никто никогда не говорил, что обновлять таблицы базы данных SAP категорически запрещено, независимо от того чем обусловлены такие желания. Свои Z-таблицы, да сколько угодно, но......
«Тра­нза­кция SM02: сообщения в SAP системе»
Олег Башкатов:
С помощью ФМ TH_POPUP можно отправить сообщение конкретному пользователю :-)

SAP Professional Journal Россия

В данном разделе представлены электронные варианты статей журнала «SAP Professional Journal Россия», который является русскоязычной версией всемирно известного издания «SAP experts»

Вся SQL-функциональность базы данных благодаря ABAP Database Connectivity (ADBC)

Тобиас Веннер
Томас Ропп
2976
3

ЧтNj такое ADBC? Эта аббревиатура очень похожа на JDBC (Java Database Connectivity) – известную модель программирования на SQL в мире Java. И действительно, сходство двух аббревиатур неслучайно. ADBC расшифровывается как ABAP Database Connectivity – название объектно-ориентированного API на ABAP, предназначенного для программирования доступа к реляционным базам данных, который в своей структуре классов и методов повторяет стиль JDBC, но, несмотря на это, ни в коей мере не является внедрением ABAP интерфейса JDBC (это будет описано далее). В структуре этих языков существует множество различий.

Означает ли это, что разработчики ABAP не удовлетворены доступными моделями программирования баз данных и нуждаются в более гибкой альтернативе – например, средстве, аналогичном JDBC? Однозначно нет! Для большинства разработчиков приложений АBAP Open SQL остается и будет оставаться излюбленной моделью программирования на SQL. Основным преимуществом языка ABAP является гибкая и тесная интеграция процесса доступа к базе данных через Open SQL, обеспечивающая оптимальную производительность, независимость от платформы и проверку синтаксиса на этапе компиляции. Так почему же возникла необходимость в альтернативном API SQL?

ADBC был разработан как дополнение к функциональным возможностям ABAP Native SQL, реализованным в SQL-команде EXEC. SQL-оператор EXEC позволяет разработчикам выполнять команды SQL, ограниченные одной базой данных и не представленные в функциональности Open SQL. Они могут обращаться к таблицам БД, которые не зависят от ABAPсловаря, что дает возможность адресации данных, созданных вне SAP NetWeaver Application Server (AS). Однако в некоторых случаях недостатки и принципиальные недоработки в SQL-операторе EXEC ограничивают сферу его применения:

  • В SQL-операторе EXEC поддерживаются только статические SQL-операторы. Это означает, что он не может использоваться для решения определенного класса задач, требующих средств динамического SQL, таких как родовые запросы1. Конечно, в таких ситуациях всегда можно прибегнуть к динамическому созданию и исполнению ABAP-программы, однако это достаточно сложно с точки зрения программирования и неэффективно с точки зрения исполнения.
  • Недостаточно гибкая обработка ошибок. Если по какой-либо причине выполнение SQL-оператора завершается неуспешно, текущая прикладная транзакция в исполняющей системе ABAP прерывается, в результате чего программа возвращает ошибку. Однако в некоторых случаях после возникновения ошибки SQL можно передать дальнейшее управление процессом прикладной программе. Эта программа, например, может анализировать возвращенный код SQL и предпринимать различные действия в зависимости от результатов анализа.
  • Наличие множественных подключений к БД чревато ошибками и требует жесткой программистской дисциплины. Причина состоит в том, что SQL-операторы выполняются в контексте глобального подключения, а не отдельных объектов подключения, которые могут передаваться в качестве параметров между модулями программы. Для этой ситуации характерны те же виды ошибок и неприятных неожиданностей, которые возникают при использовании глобальных переменных программы.

Вы хотели бы увидеть полную версию статьи?

Если вы являетесь подписчиком журнала SAP Professional Journal, пожалуйста, введите в правом верхнем углу логин и пароль.

Если вы хотите подписаться на журнала SAP Professional Journal, пожалуйста, обратитесь в редакцию или сделайте заказ на сайте.

Правила получения тестового доступа к статьям SAP Professional Journal

Комментарии:

Евгений Спицин (Рейтинг: 40) 08:10, 08 июля 2010

В статье дан качественный обзор функциональности доступа к данным ADBC.
Приведено описание синтаксиса и примеры использование.
Присутствует сравнительный анализ  инструментариев.
Статья обязательна для изучения программистам ABAP.

Александр Биличенко (Рейтинг: 40) 02:08, 23 июля 2010

Помоему тут полно ошибок в примерах текстов программ
Например:
rows_processed = stmt_obj-> execute_update (insert into SFLIGHT` ` ( && (CARRID, CONNID, FLDATE, PRICE, CURRENCY)` ` &&  `values (\'LH\', \'400\', \'20070719\', \'666.00\', \'EUR\')
 
кол-во открывающих скобок больше чем закрывающих
 
далее
* Подготовка оператора INSERT
prep_stmt_obj = con_obj-> prepare_statement (`insert into SFLIGHT`  && ` (CARRID, CONNID, FLDATE, PRICE, CURRENCY) `  && ` values (?, ?, ?, ?, ?) `).
 
* Привязка входных переменных к каждой из меток-заполнителей в SQL-операторе
GET REFERENCE OF carrid INTO ref.
prep_stmt_obj->set_param( ref ).
GET REFERENCE OF connid INTO ref.
prep_stmt_obj->set_param( ref ).
GET REFERENCE OF flight_date INTO ref.
 
префикс set* обычно означает установку какого-то значения
в тексте выше вызов содержит один и тотже метод с различной ссылкой на переменную
было бы понятнее если бы выполнялся метод add*
 
и так далее по тексту
 
у меня нет возможноси проверить корректности/некорректность приведенных примеров, рассуждения только на уровне логики

Александр Насонов (Рейтинг: 60) 17:02, 23 июля 2010

Хотелось бы понять - насколько эффективен по быстродействию этот метод доступа к внешним БД.  Например, имеет ли смысл использовать метод для массовой загрузки данных в SAP-системы из внешних систем (для наиболее популярных СУБД).

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП» Copyright © 2010 Wellesley Information Services. All rights reserved.