SAP ABAP - 开放SQL概述



开放SQL指的是ABAP语句的一个子集,它允许直接访问当前AS ABAP中央数据库中的数据。开放SQL语句将SQL中支持的数据操作语言功能映射到ABAP中,并且所有数据库系统都支持它。

开放SQL语句在数据库接口的开放SQL接口中转换为特定于数据库的SQL。然后将其传递到数据库系统并执行。开放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语句。这意味着如果记录正确插入,系统将说明这一点。否则,将显示不等于零的SY-SUBRC代码。以下是代码片段:

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

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

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 Dictionary中查看数据浏览器以查看记录是否已成功更新。

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。由于这是一个新的、唯一的关键字段值,因此将插入一个新记录,并执行另一个验证检查。

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

以上代码产生以下输出(表内容):

SQL Statement
广告