SAP ABAP – Open SQL 概述
SAP ABAP – Open SQL 概述
Open SQL 表示 ABAP 语句的子集,可以直接访问当前 AS 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 语句。
插入语句
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 语句创建的记录将在此处更新。只需编辑存储在 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 语句可以被认为是 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) 创建新记录。
上面的代码产生以下输出(表格内容) –