SAP ABAP - 开放 SQL 概述


Open SQL 表示ABAP 语句的子集,可以直接访问当前AS ABAP 中央数据库中的数据。Open SQL 语句将 SQL 的数据操作语言功能映射到所有数据库系统都支持的 ABAP 中。

Open SQL的语句在数据库接口的Open SQL接口中转换为数据库特定的SQL。然后它们被传输到数据库系统并执行。Open SQL 语句可用于访问 ABAP 字典中声明的数据库表。默认情况下访问 AS ABAP 的中央数据库,也可以通过辅助数据库连接访问其他数据库。

每当在 ABAP 程序中使用这些语句中的任何一个时,检查执行的操作是否成功非常重要。如果尝试将一条记录插入到数据库表中,但没有正确插入,那么了解这一点非常重要,以便可以在程序中采取适当的操作。这可以使用已使用的系统字段(即 SY-SUBRC)来完成。当一条语句成功执行时,SY-SUBRC 字段将包含值 0,因此可以对其进行检查,如果出现则可以继续执行程序。

DATA 语句用于声明工作区。我们将其命名为“wa_customers1”。可以声明组成表的多个字段,而不是为此声明一种数据类型。最简单的方法是使用 LIKE 语句。

插入语句

wa_customers1 工作区在此处声明,与 ZCUSTOMERS1 表类似,采用相同的结构,但本身不成为表。该工作区只能存储一条记录。声明后,可以使用 INSERT 语句将工作区及其保存的记录插入表中。此处的代码将读取为“INSERT ZCUSTOMERS1 FROM wa_customers1”。

工作区必须填充一些数据。使用 ZCUSTOMERS1 表中的字段名称。这可以通过向前导航、双击代码中的表名称或打开一个新会话并使用事务 SE11 来完成。然后可以将表的字段复制并粘贴到 ABAP 编辑器中。

以下是代码片段 -

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'DAVE'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
INSERT ZCUSTOMERS1 FROM wa_customers1.

然后可以按如下方式使用 CHECK 语句。这意味着如果记录插入正确,系统会对此进行说明。如果不是,则将显示不为零的 SY-SUBRC 代码。以下是代码片段 -

IF SY-SUBRC = 0. 
   WRITE 'Record Inserted Successfully'.  
ELSE. 
   WRITE: 'The return code is ', SY-SUBRC. 
ENDIF.

检查程序,保存,激活代码,然后测试。输出窗口应显示为“记录插入成功”。

明确声明

CLEAR 语句允许清除字段或变量,以便在其位置插入新数据,从而可以重用它。CLEAR语句一般用在程序中,它允许多次使用现有的字段。

在前面的代码片段中,工作区结构已填充数据以创建要插入到 ZCUSTOMERS1 表中的新记录,然后执行验证检查。如果我们想插入一条新记录,必须使用CLEAR语句,以便可以再次用新数据填充该记录。

更新声明

如果要同时更新表中的一条或多条现有记录,请使用 UPDATE 语句。与 INSERT 语句类似,声明一个工作区,其中填充新数据,然后在程序执行时将其放入记录中。先前使用 INSERT 语句创建的记录将在此处更新。只需编辑名称和标题字段中存储的文本即可。然后在新行中,使用与 INSERT 语句相同的结构,这次使用 UPDATE 语句,如以下代码片段所示 -

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'RICHARD'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
UPDATE ZCUSTOMERS1 FROM wa_customers1.

当 UPDATE 语句执行时,您可以在 ABAP 字典中查看数据浏览器以查看记录已成功更新。

修改语句

MODIFY 语句可以被视为 INSERT 和 UPDATE 语句的组合。它可用于插入新记录或修改现有记录。它遵循与前两个语句类似的语法来修改输入工作区的数据中的记录。

执行该语句时,会根据表中的关键字段进行检查。如果具有这些关键字段值的记录已存在,则会更新该记录。如果没有,则将创建一个新记录。

以下是创建新记录的代码片段 -

CLEAR wa_customers1.
 
DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100007'. 
wa_customers1-name = 'RALPH'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19910921'. 
MODIFY ZCUSTOMERS1 FROM wa_customers1.

在本例中,使用CLEAR语句,以便可以将新条目放入工作区,然后添加客户(编号)100007。由于这是一个新的、唯一的关键字段值,因此将插入一条新记录,并执行另一个验证检查。

执行此操作并在数据浏览器中查看数据时,将为客户编号 100007 (RALPH) 创建一条新记录。

上面的代码产生以下输出(表内容) -

SQL语句