CRUD增刪改查



CRUD(增刪改查)

C=Create

R=Read

U=Update

D=Delete

原子操作,不可再分割。

 

內表的CRUD(這裏的內表僅指標準表)

1,查詢

LOOP查詢多行和READTABLE查詢單行。

 

2,新增

APPEND 結構TO 內表。在內表的最後添加一條記錄。

APPENDLINES OF 內表1 TO 內表2。在內表2的最後添加內表1的所有行。

INSERT 結構INTO 內表INDEX N。在內表的第N條記錄前插入一條記錄。

 

3,更新

MODIFY 內表FROM 結構INDEX N,更新第N條記錄。利用TRANSPORTING關鍵字可以指定需要更新的字段。

在LOOP該內表時,可以不指定INDEX,即MODIFY內表FROM 結構,默認更新當前行。

 

4,刪除

DELETE TABLE 內表 FROM 結構。

如果指定了內表的NON-UNIQUEKEY,那麼只要結構和內表的KEY字段的值相同,就做刪除;如果沒有指定內表的KEY,就必須結構和內表的每個字段的值完全相同才做刪除。


內表可以這樣直接賦值,結構不一樣也可以,整體copy

MOVE-CORRESPONDING t_temp[] TO t_table[].

 

數據庫表的CRUD

1,查詢

SELECT語句

 

2,新增

INSERT 數據庫表FROM TABLE 內表或者INSERT數據庫表FROM 結構。

如果主鍵已存在,則新增失敗,這時,如果是通過結構單條INSERT,sy-subrc返回4;如果是通過內表批量INSERT,則會引起DUMP。

可以使用關鍵字ACCEPTINGDUPLICATE KEYS防止批量INSERT時出現重複主鍵的記錄而DUMP,使用該關鍵字後,如果出現重複主鍵的記錄,則自動跳過該條記錄。

 

3,更新

方法一:UPDATE數據庫表FROM TABLE 內表或者UPDATE數據庫表FROM 結構。
如果沒有匹配的主鍵,則更新失敗。

方法二:UPDATE數據庫表SET 字段1= 'XXX' WHERE 字段2= 'XXX'。其中SET和WHERE裏可以指定多個字段,SET和WHERE也可以使用相同字段。這種方法可以用來更新主鍵(但一般不推薦更新主鍵)。

 

4,刪除

方法一:DELETE數據庫表FROM TABLE 內表或者DELETE數據庫表FROM 結構。

如果沒有匹配的主鍵,則刪除失敗。

方法二:DELETE數據庫表WHERE 字段1= 'XXX'。其中WHERE裏可以指定多個字段。

 

*通過內表或者結構增改刪數據庫表,結構必須和數據庫表一致。

* INSERT和UPDATE可以合併爲MODIFY。如果主鍵已存在,作更新;如果主鍵不存在,作插入。

*使用內表批量操作時,只要有一條記錄操作失敗,則sy-subrc返回4。

*從效率角度出發,建議使用內表批量操作,而不是在LOOP循環裏針對結構逐條操作。

 

FOR ALL ENTRIES的作用相當於是內表和數據庫表版的INNER JOIN,但FAE的實現本質是轉化成WHERE條件裏的IN操作符,所以在內表取值範圍較大時效率較低,這時儘可能用INNERJOIN去代表FAE。



批量跟新內表和數據庫表

 if t_ZILIAO09[] is not initial.
      LS_s_ZILIAO09-calendar sy-datum.
      modify t_ZILIAO09 from LS_s_ZILIAO09 transporting calendar where calendar is initial.
      modify ZREGULARVENDORCH from table t_ZILIAO09.
      commit work.
    endif.


         



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章