ZTables中的更新

2020-08-27 13:43发布

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

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


大家好,

我正在尝试使用更新表更新 ztable 的关键字段(名称)。

当前必须处于循环内。

在z_ban处循环进入数据(ls_z_ban)。

 更新z_ban集名称= ls_record-new_username,其中名称eq ls_z_ban-bname。

 结束循环。

对于所有其他记录 sy-subrc eq 0 ,这仅更新第一条记录。

你知道为什么会这样吗?

当前我删除记录,然后插入一个新记录。

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

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


大家好,

我正在尝试使用更新表更新 ztable 的关键字段(名称)。

当前必须处于循环内。

在z_ban处循环进入数据(ls_z_ban)。

 更新z_ban集名称= ls_record-new_username,其中名称eq ls_z_ban-bname。

 结束循环。

对于所有其他记录 sy-subrc eq 0 ,这仅更新第一条记录。

你知道为什么会这样吗?

当前我删除记录,然后插入一个新记录。

付费偷看设置
发送
4条回答
SAP砖家
1楼 · 2020-08-27 14:21.采纳回答

Jonathan

您无法更新数据库表中的主键字段,如许多对类似问题的回答(搜索" 更新关键字段数据库表"。

删除,然后插入 据我所知,已经这样做是唯一的选择。 但是,需要进行此类更新可能表明数据库/表的设计可以得到改善。

干杯

Bärbel

一只江湖小虾
2楼-- · 2020-08-27 14:09
乔纳森·布拉瓦斯基(Jonathan Blavatsky)我不知道到底什么对您不起作用,我只是解释说可以更改主键 ,只要此新主键不是另一行,因为主键的索引是唯一的(即主键的定义)。 在Z_BAN中使用以下行的示例:
 NAME 
---------
JIM
LISA
JANE
以下语句将把JIM名称转换为JAMES和 sy-subrc = 0:
更新z_ban SET名称='JAMES',而名称='JIM'。
但是由于JANE已经存在,因此这不会将LISA变成JANE(sy-subrc = 4):< pre> UPDATE z_ban SET name ='JANE'WHERE name ='LISA'。

PS:当然,我解释了这是可能的,但通常并不需要...如果您解释为什么需要它 ,我们将尽力为您提供不同的帮助。

CPLASF-自律
3楼-- · 2020-08-27 14:21

您好乔纳森·布拉瓦茨基

如果您可以提供完整的代码,则最好检查问题的根本原因。

除了上面的方法外,您还可以按照下面的代码进行操作,请始终尝试 在最小程度上访问数据库表。 确保在循环中处理正确的记录。

在it_z_ban ASSIGNING FIELD-SYMBOL()上循环。
 -名称= ls_record-new_username。
 结局。

 从表it_z_ban修改z_ban。

致谢

微wx笑
4楼-- · 2020-08-27 14:18

Sandra Rossi ,是的,只要主键是唯一键即可。

谢谢

一周热门 更多>