SAP ABAP Open SQL 详解

Open SQL 表示 ABAP 语句的子集,这些语句允许以 ABAP 的形式直接访问当前数据库中央数据库中的数据。Open SQL 语句映射所有数据库系统支持的 ABAP 中 SQL 的数据操作语言功能。

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

每当在 ABAP 程序中使用这些语句时,检查所执行的操作是否成功是很重要的。如果试图将记录插入到数据库表中,但插入不正确,则必须知道,以便在程序中采取适当的操作。这可以使用已经使用过的系统字段,即 SY-SUBRC 来完成。当一条语句成功执行时,SY-SUBRC 字段将包含一个值 0,因此可以对此进行检查,如果出现,可以继续使用程序。

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


INSERT 语句

wa_customers1 工作区像 ZCUSTOMERS1 表一样声明,采用相同的结构,而不会成为表本身。此工作区只能存储一条记录。声明后,可以使用 INSERT 语句将工作区及其保存的记录插入表中。此处的关键代码是 INSERT ZCUSTOMERS1 FROM wa_customers1

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

部分代码如下:

  1. DATA wa_customers1 LIKE ZCUSTOMERS1.
  2. wa_customers1-customer = '100006'.
  3. wa_customers1-name = 'DAVE'.
  4. wa_customers1-title = 'MR'.
  5. wa_customers1-dob = '19931017'.
  6. INSERT ZCUSTOMERS1 FROM wa_customers1.

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

部分代码如下:

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

检查程序、保存、激活代码,然后进行测试。输出窗口应显示为 "Record Inserted Successfully"。


CLEAR 语句

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

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


UPDATE 语句

如果要同时更新表中的一个或多个现有记录,请使用 UPDATE 语句。与 INSERT 语句类似,声明一个工作区,用新数据填充,然后在程序执行时将其放入记录中。以前使用 INSERT 语句创建的记录将在此处更新。只需编辑 NAMETITLE 字段中存储的文本。

然后在新行上,使用与 INSERT 语句相同的结构,这次使用 UPDATE 语句,如以下代码所示:

  1. DATA wa_customers1 LIKE ZCUSTOMERS1.
  2. wa_customers1-customer = '100006'.
  3. wa_customers1-name = 'RICHARD'.
  4. wa_customers1-title = 'MR'.
  5. wa_customers1-dob = '19931017'.
  6. UPDATE ZCUSTOMERS1 FROM wa_customers1.

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


MODIFY 语句

MODIFY 语句可以看作是 INSERT 语句和 UPDATE 语句的组合。它可以用于插入新记录或修改现有记录。在根据输入到工作区的数据修改记录时,它遵循与前两条语句类似的语法。

执行此语句时,将对照表中的关键字字段检查所涉及的关键字字段。如果已经存在具有这些关键字段值的记录,则将对其进行更新。如果没有,则将创建新记录。

以下是用于创建新记录的代码:

  1. CLEAR wa_customers1.
  2. DATA wa_customers1 LIKE ZCUSTOMERS1.
  3. wa_customers1-customer = '100007'.
  4. wa_customers1-name = 'RALPH'.
  5. wa_customers1-title = 'MR'.
  6. wa_customers1-dob = '19910921'.
  7. MODIFY ZCUSTOMERS1 FROM wa_customers1.

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

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

结果如下: