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
廣告