SAP ABAP – 本机 SQL 概述
SAP ABAP – 本机 SQL 概述
术语“Native SQL”是指可以静态传输到数据库接口的 Native SQL 接口的所有语句。本机 SQL 语句不属于 ABAP 的语言范围,也不遵循 ABAP 语法。ABAP 仅包含用于隔离可以列出本机 SQL 语句的程序部分的语句。
在原生 SQL 中,主要可以使用特定于数据库的 SQL 语句。这些从原生 SQL 接口原封不动地传输到数据库系统并执行。可以使用相关数据库的完整 SQL 语言范围,并且不必在 ABAP 词典中声明寻址的数据库表。还有一小组特定于 SAP 的本地 SQL 语句,它们由本地 SQL 接口以特定方式处理。
要使用 Native SQL 语句,您必须在它之前使用 EXEC SQL 语句并以 ENDEXEC 语句结束。
以下是语法 –
EXEC SQL PERFORMING <form>. <Native SQL statement> ENDEXEC.
这些语句在 ABAP 程序中定义了一个区域,其中可以列出一个或多个 Native SQL 语句。输入的语句被传递到 Native SQL 接口,然后按如下方式处理 –
-
所有对寻址数据库系统的程序接口有效的 SQL 语句都可以在 EXEC 和 ENDEXEC 之间列出,特别是 DDL(数据定义语言)语句。
-
这些 SQL 语句从 Native SQL 接口传递到数据库系统,基本上没有改变。语法规则由数据库系统指定,尤其是数据库对象的区分大小写规则。
-
如果语法允许在单个语句之间使用分隔符,则可以在 EXEC 和 ENDEXEC 之间包含许多本机 SQL 语句。
-
可以在 EXEC 和 ENDEXEC 之间指定 SAP 特定的本地 SQL 语言元素。这些语句不是直接从 Native SQL 接口传递到数据库,而是经过适当的转换。
例子
SPFLI 是一个标准的 SAP 表,用于存储航班时刻表信息。这在 R/3 SAP 系统中可用,具体取决于版本和发行级别。您可以在将表名称 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