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 编辑器中。
部分代码如下:
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
语句。这意味着如果记录插入正确,系统将对此进行说明。否则,将显示不等于 0 的 SY-SUBRC
代码。
部分代码如下:
IF SY-SUBRC = 0.
WRITE 'Record Inserted Successfully'.
ELSE.
WRITE: 'The return code is ', SY-SUBRC.
ENDIF.
检查程序、保存、激活代码,然后进行测试。输出窗口应显示为 "Record Inserted Successfully"。
CLEAR 语句
CLEAR
语句可以清除字段或变量,以便在其位置插入新数据,从而可以重复使用。CLEAR
语句通常在程序中使用,它可以多次使用现有字段。
在前面的代码片段中,工作区结构中填充了数据,以创建一条新记录,插入到 ZCUSTOMERS1
表中,然后执行验证检查。若我们想插入一条新记录,必须使用 CLEAR
语句,这样就可以用新数据再次填充它。
UPDATE 语句
如果要同时更新表中的一个或多个现有记录,请使用 UPDATE
语句。与 INSERT
语句类似,声明一个工作区,用新数据填充,然后在程序执行时将其放入记录中。以前使用 INSERT
语句创建的记录将在此处更新。只需编辑 NAME 和 TITLE 字段中存储的文本。
然后在新行上,使用与 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 语句
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。由于这是一个新的唯一键字段值,因此将插入一条新记录,并执行另一个验证检查。
执行此操作并在 Data Browser(数据浏览器)中查看数据时,将为客户编号 100007(RALPH)创建一条新记录。
结果如下: