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.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。