С выпуском SAP NetWeaver 7.4 компания SAP представила новый синтаксис SQL, который был дополнительно обновлен в SAP NetWeaver 7.5. Open SQL является подмножеством стандартного SQL и содержит ограниченные функции по сравнению с функциями стандартного SQL. В SAP NetWeaver 7.4 и 7.5 компания SAP расширила возможности Open SQL.
Ниже приведены некоторые из важных дополнений, представленных в Open SQL:
Inline declarations - Встроенные объявления
В SAP NetWeaver 7.4 компания SAP представила встроенные объявления, которые позволяют вам объявлять объекты данных при необходимости, а не объявлять объект данных заранее. До SAP NetWeaver 7.4 объект данных необходимо было объявить следующим образом, прежде чем к нему можно будет получить доступ с помощью операторов ABAP:
DATA lv_date TYPE sy-datum. lv_date = sy-datum.
Начиная с SAP NetWeaver 7.4, вы можете выполнять декларацию данных во встроенном режиме и избегать лишних строк кода следующим образом:
DATA(lv_date) = sy-datum.
Поддержка встроенных объявлений распространяется на операторы SQL, поэтому вместо предварительного определения структур и внутренних таблиц вы можете объявить целевое поле при чтении данных из базы данных. Например, в примере ниже показан традиционный способ написания кода.
REPORT ZDEMO_EXAMPLE. TYPES : BEGIN OF gty_s_makt, matnr TYPE matnr, spras TYPE spras, maktx TYPE maktx, END OF gty_s_makt. DATA gt_makt TYPE STANDARD TABLE OF gty_s. PARAMETERS p_matnr TYPE matnr. SELECT matnr spras maktx FROM makt INTO TABLE gt_makt WHERE matnr EQ p_matnr.
Начиная с SAP NetWeaver 7.4, вы можете сэкономить значительные усилия, не определяя заранее тип структуры и внутреннюю таблицу. Код можно записать, как показано ниже.
PARAMETERS p_matnr TYPE matnr. SELECT matnr, spras, maktx FROM makt WHERE matnr EQ @p_matnr INTO TABLE @DATA(it_makt).
В предыдущем примере мы используем новый синтаксис SQL, в котором поля таблицы разделяются запятыми, а все переменные хоста экранируются с помощью escape-символа @. Переменные хоста — это объекты данных программы, которые следует экранировать, чтобы сообщить компилятору, что мы не говорим о полях в базе данных.
Strict mode - Строгий режим
При использовании нового синтаксиса SQL средство проверки синтаксиса запускается в строгом режиме, чтобы гарантировать соблюдение всех новых правил синтаксиса. Строгий режим помогает поддерживать обратную совместимость, заставляя вас писать инструкцию либо полностью с использованием нового синтаксиса, либо полностью с использованием старого синтаксиса, но не смешивая оба варианта.
INTO clause
Предложение INTO перемещено в конец инструкции. Переместив предложение INTO в конец оператора, SAP может еще больше улучшить оператор Open SQL, добавив поддержку новых функций.
CASE statement
Вы можете встроить оператор CASE в оператор SQL, а не извлекать данные в программу, а затем сравнивать данные с помощью оператора CASE.
Ниже показан пример оператора, в котором пол сотрудника проверяется с помощью оператора CASE.
SELECT name, age, CASE WHEN sex = 1 THEN @male WHEN sex = 2 THEN @female ELSE @others END AS group FROM zemployee ORDER BY group INTO TABLE @DATA(lt_employee).
Арифметические операции
Новый синтаксис SQL позволяет выполнять арифметические операции внутри инструкции SQL. В версиях до SAP NetWeaver 7.4 вам нужно будет загрузить данные в программу, а затем выполнить арифметические операции с данными. Однако с новым синтаксисом SQL вы можете выполнять арифметические операции внутри операторов SQL.
В следующем операторе мы выполняем арифметическую операцию внутри оператора SQL — в данном случае считываем результат умножения fkimg (количества) и netwr (чистой стоимости) позиции в документе фактуры:
SELECT SINGLE fkimg * netwr FROM vbrp WHERE vbeln EQ @p_vbeln AND posnr EQ @p_posnr INTO @DATA(total).
Комментарии
Отправить комментарий