SAP ABAP資料表的操作

SAPmatinal發表於2020-01-12

這幾天對於資料標的操作表較多,自己從網上找資料和自己動手操作總結了一些資料表的增刪改查操作,希望對一些初學者有所幫助,僅供參考。


開源的資料庫操作都離不開INSERT、UPDATE、MODIFY和DELETE語句。其中當SY-DBCNT返回為0,則表示操作成功,此外還將返回實際操作的資料行數。需要指明的是Open SQL本身並不進行操作許可權的檢查,若需要進行設定,則要在系統中建立授權物件。


一.INSERT語句

Open SQL中的INSERT語句用於向資料庫中插入新條目。

1.插入單行資料:dbtab是內表,wa是工作區。

INSERT INTO dbtab VALUES wa.

 INSERT INTO dbtab FROM wa.


內表:Internal memory table 記憶體中的表,是外設(螢幕、磁碟,印表機等)和資料庫表資料交換的中介。

 wa為工作區,是與資料庫具有相同結構的資料物件,一般直接基於資料庫結構宣告。該語句也可以將資料插入檢視中,首先該檢視所有欄位必須來自同一個資料庫表,而且在資料字典中的maintenance status屬性必須設定為read and change

注:如果相同表關鍵字的資料條目已經存在,則不能重新插入,只能對非關鍵字進行更改(UPDATE,MODIFY)


2.插入多行資料:datab是內表,itab是表

INSERT dbtab FROM TABLES itab.

其中itab是內表,包含希望插入的資料條目。

 注:內表應與資料庫的行結構一致。

 所有條目成功插入,則SY-SUBRC返回0

使用ACCEPTING DUPLICATE可避免該錯誤。

INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.

 ACCEPTING DUPLICATE的效果是:若出現關鍵字相同,返回4,並跳過其再更新所有的其他。


二.UPDATE語句

1.更新單行資料:

UPDATE dbtab SET f1=g1 ... fn=gn WHERE <fix_key>.

 f表組建欄位名,g為新設定的值,WHERE為確保只更新單行。

 注:除f=g外還可 f=f+g、f=f-g

透過工作區更改單行資料:

UPDATE dbtab FROM wa.

 2.更新多行資料:

UPDATE dbtab SET f1=g1 ... fi=gi [WHERE <conditions>].

也可以使用SET和WHERE子句同時更新多行資料值;此外不需要在WHERE中限定所有表關鍵字,該語句本身將更新所有滿足條件的資料條目,若不是用WHERE子句,則將更新當前資料集團中的所有資料行。

 注:如果至少有一行資料被更新SY-BUBRC返回0,否則返回4。

 還可透過內表來更新多行資料:

UPDATE target FROM TABLE itab.


三.MODIFY語句

MODIFY語句是SAP的Open SQL中專有語句,該語句相當於INSERT和UPDATE語句的結合。引入期的原因是當更新資料庫操作時,並不確知資料庫中是否遺憾相應的資料行。

1.新增或更新單行:

MODIFY dbtab FROM wa.

注:操作後SY-SUBRC恆為0;SY-DBCNT為1

 2.新增或更新多行:

MODIFY dbtab FROM TABLE itab.

內表itab將覆蓋資料庫表中具有相同主關鍵字的條目。

 注:SY-SUBRC恆為0;SY-DBCNT返回行數

四.DELETE語句

1.刪除單行資料:

DELETE FROM dbtab WHERE <fix_key>.

或 DELETE dbtab FROM wa.

其中WHERE必須指明全部表關鍵欄位的值;wa為工作區,若不去dbtab匹配操作將失敗。

2.刪除多行資料:

DELETE FROM dbtab WHERE <condition>.

 DELETE dbtab[CLIENT SPECIFIED] FROM TABLE itab.

注:返回值同MODIFY

 3.刪除多行資料:

 兩種形式:1).透過內表刪除多行資料條目的過程中將內表置為空;2).使用WHERE FIELD LIKE '%'。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901557/viewspace-2673037/,如需轉載,請註明出處,否則將追究法律責任。

相關文章