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 接口,然后按如下方式处理:

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

实例

SPFLI 是一个标准的 SAP 表,用于存储航班时刻表信息。这在 R/3 SAP 系统中可用,具体取决于版本和发布级别。在相关 SAP 事务(如 SE11 或 SE80)中输入表名 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