SAP ABAP - Обзор собственного SQL

Термин «собственный SQL» относится ко всем операторам, которые могут статически передаваться в интерфейс собственного SQL интерфейса базы данных. Собственные операторы SQL не входят в языковую область ABAP и не соответствуют синтаксису ABAP. ABAP просто содержит операторы для изоляции программных разделов, в которых могут быть перечислены операторы собственного SQL.

В собственном SQL могут использоваться в основном операторы SQL, относящиеся к базе данных. Они без изменений передаются из собственного интерфейса SQL в систему базы данных и выполняются. Можно использовать всю языковую область SQL соответствующей базы данных, и адресные таблицы базы данных необязательно объявлять в словаре ABAP. Существует также небольшой набор специфичных для SAP операторов Native SQL, которые особым образом обрабатываются встроенным интерфейсом SQL.

Чтобы использовать собственный оператор SQL, вы должны предшествовать ему оператором EXEC SQL и заканчивать оператором ENDEXEC.

Ниже приводится синтаксис -

EXEC SQL PERFORMING <form>.  
   <Native SQL statement> 
ENDEXEC.

Эти операторы определяют область в программе ABAP, где могут быть перечислены один или несколько операторов Native SQL. Введенные операторы передаются в интерфейс Native SQL, а затем обрабатываются следующим образом:

  • Все операторы SQL, допустимые для программного интерфейса адресуемой системы баз данных, могут быть перечислены между EXEC и ENDEXEC, в частности операторы DDL (язык определения данных).

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

  • Если синтаксис допускает разделитель между отдельными операторами, вы можете включить много операторов Native SQL между EXEC и ENDEXEC.

  • Специфичные для SAP элементы нативного языка SQL могут быть указаны между EXEC и ENDEXEC. Эти операторы не передаются напрямую из интерфейса Native SQL в базу данных, но они соответствующим образом преобразуются.

пример

SPFLI - это стандартная таблица SAP, которая используется для хранения информации о расписании рейсов. Это доступно в системах SAP R / 3 в зависимости от версии и уровня выпуска. Эту информацию можно просмотреть, введя имя таблицы SPFLI в соответствующую транзакцию SAP, например SE11 или SE80. Вы также можете просмотреть данные, содержащиеся в этой таблице базы данных, используя эти две транзакции.

REPORT ZDEMONATIVE_SQL. 
DATA: BEGIN OF wa,  
      connid  TYPE SPFLI-connid,
      cityfrom TYPE SPFLI-cityfrom,
      cityto  TYPE SPFLI-cityto,  
      END OF wa. 
	
DATA c1 TYPE SPFLI-carrid VALUE 'LH'. 
EXEC SQL PERFORMING loop_output.
   SELECT connid, cityfrom, cityto  
   INTO :wa  
   FROM SPFLI  
   WHERE carrid = :c1 
ENDEXEC. 

FORM loop_output.  
   WRITE: / wa-connid, wa-cityfrom, wa-cityto. 
ENDFORM.

Приведенный выше код дает следующий вывод -

0400  FRANKFURT  NEW YORK 
2402  FRANKFURT  BERLIN 
0402  FRANKFURT  NEW YORK