SAP ABAP - 原生SQL概述



术语“原生SQL”指的是所有可以静态传输到数据库接口的原生SQL接口的所有语句。原生SQL语句不属于ABAP语言范围,也不遵循ABAP语法。ABAP只是包含用于隔离程序部分的语句,在这些部分中可以列出原生SQL语句。

Native SQL Statement

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

要使用原生SQL语句,必须在前面加上EXEC SQL语句,并在后面加上ENDEXEC语句。

以下是语法:

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

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

  • 所有对所寻址数据库系统的程序接口有效的SQL语句都可以在EXEC和ENDEXEC之间列出,特别是DDL(数据定义语言)语句。

  • 这些SQL语句主要不变地从原生SQL接口传递到数据库系统。语法规则由数据库系统指定,特别是数据库对象的区分大小写规则。

  • 如果语法允许在各个语句之间使用分隔符,则可以在EXEC和ENDEXEC之间包含多个原生SQL语句。

  • 可以在EXEC和ENDEXEC之间指定SAP特定的原生SQL语言元素。这些语句不会直接从原生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
广告
© . All rights reserved.