Modify 和 Update 语句的区别

2021-10-23 23:55发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

Modify 和 Update 语句有什么区别,我们什么时候使用哪个语句?


MODIFY - 将更新表,如果数据已经存在,如果不插入新行。


UPDATE - 将更新表,如果未找到数据则出错。


在 MODIFY 的情况下,sy-subrc 始终为 0,因此您不知道数据是否实际更新。


INSERT - 在数据库表中插入数据 


变体: 

1. INSERT INTO dbtab [CLIENT SPECIFIED] VALUES wa。 

INSERT INTO (dbtabname) [CLIENT SPECIFIED] VALUES WA。 


2. 从表 itab 中插入 dbtab [客户指定]。

INSERT (dbtabname) [CLIENT SPECIFIED] FROM TABLE itab。


3. 插入 dbtab [客户指定]。或 INSERT *dbtab [客户指定]。或 INSERT (dbtabname) [客户指定] ... . 


效果 将新记录添加到数据库表(请参阅关系数据库)。您可以直接在程序中以 dbtab 形式指定数据库表的名称,也可以在运行时将其指定为字段 dbtabname 的内容。无论哪种情况,都必须在 ABAP 字典中声明数据库表。如果视图引用单个表并且在 ABAP 词典中的维护状态为“无限制”,则只能使用视图插入数据。 


默认情况下,数据只插入当前客户端。 


但是,如果您使用 CLIENT SPECIFIED 添加,您可以关闭自动客户端处理。这使您可以在跨客户端表中输入任何客户端的数据,而不仅仅是在您登录的客户端中。在这种情况下,客户字段被视为普通字段,您可以在工作区中为其分配值。 


MODIFY - 更改数据库表 


变体: 


1.修改数据库表。或

修改 *dbtab。或

修改 (dbtabname) ... .. 


2. 从 TABLE itab 修改 dbtab。或

从 TABLE itab 修改 (dbtabname)。 


3.修改dbtab版本版本。或

修改 *dbtab VERSION 版本。 


效果 在数据库表(s. 关系数据库)中插入新行或更新现有行。如果具有指定主键的行已经存在,则执行 UPDATE。

否则,执行 INSERT。您可以在程序本身中以 MODIFY dbtab ... 的形式指定数据库表的名称,或者在运行时以 MODIFY (dbtabname) ... 的形式将其指定为字段 dbtabname 的内容。在这两种情况下,数据库表都必须在 ABAP 词典中定义。


通常,记录仅在当前客户端中插入或更新。如果视图引用单个表并且在 ABAP 字典中创建且维护状态为“无限制”,则只能使用视图插入或更新数据。 


MODIFY 属于 Open SQL 命令集。 


语句执行后,系统字段 SY-DBCNT 包含已编辑的行数。


赞赏支持