SAP ABAP Native SQL 详解

术语 "Native SQL" 是指可以静态传输到数据库接口的 Native SQL 接口的所有语句。Native SQL 语句不属于 ABAP 的语言范围,也不遵循 ABAP 语法。 ABAP 仅包含用于隔离其中可以列出 Native SQL 语句的程序段的语句。

Native SQL 中,主要可以使用特定于数据库的 SQL 语句。这些操作将从 Native SQL 接口不变地传输到数据库系统并执行。可以使用相关数据库的完整 SQL 语言范围,并且不必在 ABAP 字典中声明已寻址的数据库表。还有一小组特定于 SAP 的 Native SQL 语句,它们由 Native SQL 接口以特定的方式处理。

要使用 Native SQL 语句,必须先使用 EXEC SQL 语句,然后使用 ENDEXEC 语句结束。

语法如下:

  1. EXEC SQL PERFORMING <form>.
  2. <Native SQL statement>
  3. ENDEXEC.

这些语句定义了 ABAP 程序中可以列出一个或多个 Native SQL 语句的区域。输入的语句被传递到 Native SQL 接口,然后按如下方式处理:

  • EXECENDEXEC 之间可以列出对寻址数据库系统的程序接口有效的所有 SQL 语句,尤其是 DDL(数据定义语言)语句。
  • 这些 SQL 语句从 Native SQL 接口传递到数据库系统,基本上没有变化。语法规则由数据库系统指定,尤其是数据库对象的区分大小写规则。
  • 如果语法允许在各个语句之间使用分隔符,那么可以在 EXECENDEXEC 之间包含许多 Native SQL 语句。
  • 可以在 EXECENDEXEC 之间指定特定于 SAP 的 Native SQL 语言元素。这些语句不是直接从 Native SQL 接口传递到数据库,而是经过适当的转换。

实例

SPFLI 是一个标准的 SAP 表,用于存储航班时刻表信息。这在 R/3 SAP 系统中可用,具体取决于版本和发布级别。在相关 SAP 事务(如 SE11SE80)中输入表名 SPFLI 时,可以查看此信息。您还可以使用这两个事务查看此数据库表中包含的数据。

  1. REPORT ZDEMONATIVE_SQL.
  2. DATA: BEGIN OF wa,
  3. connid TYPE SPFLI-connid,
  4. cityfrom TYPE SPFLI-cityfrom,
  5. cityto TYPE SPFLI-cityto,
  6. END OF wa.
  7. DATA c1 TYPE SPFLI-carrid VALUE 'LH'.
  8. EXEC SQL PERFORMING loop_output.
  9. SELECT connid, cityfrom, cityto
  10. INTO :wa
  11. FROM SPFLI
  12. WHERE carrid = :c1
  13. ENDEXEC.
  14. FORM loop_output.
  15. WRITE: / wa-connid, wa-cityfrom, wa-cityto.
  16. ENDFORM.

结果如下:

  1. 0400 FRANKFURT NEW YORK
  2. 2402 FRANKFURT BERLIN
  3. 0402 FRANKFURT NEW YORK