SAP ABAP 打開(kāi)SQL概述

2018-01-01 12:56 更新

打開(kāi)SQL指示允許直接訪問(wèn)當(dāng)前AS ABAP的中央數(shù)據(jù)庫(kù)中的數(shù)據(jù)的ABAP語(yǔ)句的子集。 打開(kāi)SQL語(yǔ)句映射所有數(shù)據(jù)庫(kù)系統(tǒng)支持的ABAP中的SQL的數(shù)據(jù)操作語(yǔ)言功能。

Open SQL的語(yǔ)句在數(shù)據(jù)庫(kù)接口的Open SQL接口中轉(zhuǎn)換為特定于數(shù)據(jù)庫(kù)的SQL。 然后將它們傳送到數(shù)據(jù)庫(kù)系統(tǒng)并執(zhí)行。 打開(kāi)的SQL語(yǔ)句可用于訪問(wèn)在ABAP字典中聲明的數(shù)據(jù)庫(kù)表。 缺省情況下訪問(wèn)AS ABAP的中央數(shù)據(jù)庫(kù),并且可以通過(guò)輔助數(shù)據(jù)庫(kù)連接訪問(wèn)其他數(shù)據(jù)庫(kù)。

每當(dāng)在ABAP程序中使用這些語(yǔ)句中的任何一個(gè)時(shí),重要的是檢查所執(zhí)行的動(dòng)作是否已成功。 如果嘗試將記錄插入到數(shù)據(jù)庫(kù)表中,并且沒(méi)有正確插入,則知道這一點(diǎn)非常重要,以便可以在程序中采取適當(dāng)?shù)牟僮鳌?/span> 這可以使用已經(jīng)使用的系統(tǒng)字段來(lái)完成,即SY-SUBRC。 當(dāng)成功執(zhí)行語(yǔ)句時(shí),SY-SUBRC字段將包含值0,因此可以檢查該值,如果出現(xiàn)該程序,可以繼續(xù)程序。

DATA語(yǔ)句用于聲明一個(gè)工作區(qū)。 讓我們給這個(gè)名字“wa_customers1"。 而不是為此聲明一個(gè)數(shù)據(jù)類(lèi)型,可以聲明組成表的幾個(gè)字段。 最簡(jiǎn)單的方法是使用LIKE語(yǔ)句。

INSERT語(yǔ)句

wa_customers1工作區(qū)在這里被聲明為像ZCUSTOMERS1表,采取相同的結(jié)構(gòu)而不成為表本身。 此工作區(qū)只能存儲(chǔ)一條記錄。 一旦它被聲明,INSERT語(yǔ)句可以用于將工作區(qū)和它保存的記錄插入到表中。 這里的代碼將讀作\'INSERT ZCUSTOMERS1 FROM wa_customers1\'。

工作區(qū)域必須填充一些數(shù)據(jù)。 使用ZCUSTOMERS1表中的字段名稱(chēng)。 這可以通過(guò)向前導(dǎo)航,雙擊代碼中的表名或通過(guò)打開(kāi)新會(huì)話并使用事務(wù)SE11來(lái)完成。 然后可以將表的字段復(fù)制并粘貼到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語(yǔ)句如下。 這意味著如果記錄被正確插入,系統(tǒng)會(huì)說(shuō)明這一點(diǎn)。 如果不是,則將顯示不等于零的SY-SUBRC代碼。 以下是代碼段:

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

檢查程序,保存,激活代碼,然后測(cè)試它。 輸出窗口應(yīng)顯示為“已成功插入記錄"。

CLEAR語(yǔ)句

CLEAR語(yǔ)句允許清除字段或變量,以便在其位置插入新數(shù)據(jù),從而允許重新使用。 CLEAR語(yǔ)句通常用于程序中,它允許現(xiàn)有字段多次使用。

在前面的代碼片段中,工作區(qū)結(jié)構(gòu)已填充數(shù)據(jù)以創(chuàng)建要插入到ZCUSTOMERS1表中的新記錄,然后執(zhí)行驗(yàn)證檢查。 如果我們要插入一個(gè)新記錄,必須使用CLEAR語(yǔ)句,以便它可以再次用新數(shù)據(jù)填充。

UPDATE語(yǔ)句

如果要同時(shí)更新表中的一個(gè)或多個(gè)現(xiàn)有記錄,請(qǐng)使用UPDATE語(yǔ)句。 與INSERT語(yǔ)句類(lèi)似,聲明一個(gè)工作區(qū),用新數(shù)據(jù)填充,然后在執(zhí)行程序時(shí)將其放入記錄中。 以前使用INSERT語(yǔ)句創(chuàng)建的記錄將在此處更新。 只需編輯存儲(chǔ)在NAME和TITLE字段中的文本即可。 然后在一個(gè)新行上,使用與INSERT語(yǔ)句相同的結(jié)構(gòu),這次使用UPDATE語(yǔ)句如下面的代碼片段所示:

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語(yǔ)句被執(zhí)行,您可以在ABAP字典中查看數(shù)據(jù)瀏覽器,以查看該記錄已成功更新。

MODIFY語(yǔ)句

MODIFY語(yǔ)句可以被視為INSERT和UPDATE語(yǔ)句的組合。 它可用于插入新記錄或修改現(xiàn)有記錄。 在從輸入到工作區(qū)域的數(shù)據(jù)中修改記錄時(shí),它遵循與前兩個(gè)語(yǔ)句相似的語(yǔ)法。

執(zhí)行此語(yǔ)句時(shí),將對(duì)照表中的鍵字段進(jìn)行檢查。 如果具有這些鍵字段值的記錄已存在,則將更新該記錄。 如果沒(méi)有,則將創(chuàng)建新記錄。

以下是用于創(chuàng)建新記錄的代碼段:

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語(yǔ)句,以便可以將新條目放入工作區(qū),然后添加客戶(編號(hào))100007。 由于這是一個(gè)新的唯一鍵字段值,因此將插入一個(gè)新記錄,并執(zhí)行另一個(gè)驗(yàn)證檢查。

執(zhí)行此操作并在數(shù)據(jù)瀏覽器中查看數(shù)據(jù)時(shí),將為客戶編號(hào)100007(RALPH)創(chuàng)建一個(gè)新記錄。

上面的代碼產(chǎn)生以下輸出(表內(nèi)容):

SQL Statement
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)