我在 ABAP 中有UPDATE
声明,如下所示:
UPDATE zicstt099 FROM TABLE lt_zicstt099
每次使用sy-subrc eq 4
更新失败。
数据库表格ZICSTT099
有三个主要关键字:WEB_USER_ID
& EMAIL_ID
以及MANDT
字段。
我正在尝试更改EMAIL_ID
值,但同样没有更新。
请帮助。
答案 0 :(得分:8)
您无法使用UPDATE <target> FROM <wa>.
和UPDATE <target> FROM TABLE <itab>.
语句更改主键字段,因为它们使用主键查找必须更新的记录。
改为使用UPDATE <target> SET <set1> ... WHERE ...
语句。
您可以在此处找到具体内容:http://help.sap.com/abapdocu_70/en/ABAPUPDATE_SOURCE.htm#&ABAP_ALTERNATIVE_1@1@
答案 1 :(得分:0)
您无法“更改”数据库中的关键字段。
您可以删除原始条目并使用另一个密钥插入新条目。但是你不能改变一个关键领域。 (如果modify
正在自己做的话,我无法检查实际情况。
如果必须更改关键字段,则应考虑数据库定义。
有关更改关键字段的详情: Can we update primary key values of a table?
答案 2 :(得分:0)
如果sy-subrc = 4,则无法更改至少一行,因为找不到合适的行,或者因为更改会生成导致主键中的双重条目的行或者数据库表中唯一的二级索引。
语句UPDATE将sy-dbcnt设置为已更改行的数量。
答案 3 :(得分:-1)
您好我尝试使用您提到的密钥创建表格,我建议您使用以下语法
update lt_zicstt099 set email_id = 'some value' where WEB_USER_ID = 'some web id'.
要检查表是否已更新,您可以使用sy-dbcnt来了解更新的行数。 如果您仍然遇到问题,请在下面发表评论