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
语句结束。
语法如下:
EXEC SQL PERFORMING <form>.
<Native SQL statement>
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
时,可以查看此信息。您还可以使用这两个事务查看此数据库表中包含的数据。
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