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

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

База знаний

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

Тобиас Веннер
Томас Ропп
3824
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*
 
и так далее по тексту
 
у меня нет возможноси проверить корректности/некорректность приведенных примеров, рассуждения только на уровне логики

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

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

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