表Z仅包含关键字段。 在这种情况下,将忽略" UPDATE FROM .."。

2020-09-01 10:46发布

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

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


我有一个仅包含关键字段的Z表。

我正在尝试更新表的记录。

运行代码检查器时出现错误

表Z仅包含关键字段。 在这种情况下," UPDATE FROM .."将被忽略。

我尝试添加ENQUEUE_E_TABLE,但错误仍然存​​在。

选择*
  从ztable
  其中ernam eq @ ls_record-previous_username
  到表@data(lt_ztable)中。

 在lt_ztable中循环到data(ls_ztable)中。
  ls_ztable-ernam = ls_record-new_username。
  从ls_table更新ztable。
  提交工作。
 结束循环。
 

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

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


我有一个仅包含关键字段的Z表。

我正在尝试更新表的记录。

运行代码检查器时出现错误

表Z仅包含关键字段。 在这种情况下," UPDATE FROM .."将被忽略。

我尝试添加ENQUEUE_E_TABLE,但错误仍然存​​在。

选择*
  从ztable
  其中ernam eq @ ls_record-previous_username
  到表@data(lt_ztable)中。

 在lt_ztable中循环到data(ls_ztable)中。
  ls_ztable-ernam = ls_record-new_username。
  从ls_table更新ztable。
  提交工作。
 结束循环。
 
付费偷看设置
发送
6条回答
Baoming ROSE
1楼 · 2020-09-01 11:50.采纳回答

更新:

使用UPDATE目标FROM源语法是不可能的。

您应该删除旧条目并插入新条目,或者使用形式的语句支持修改键值(但要牢记限制)。

Sandra Rossi 感谢您的修改。

huskylover
2楼-- · 2020-09-01 11:52

更新意味着您想更改该行中的某些内容

如果您 表中只有键,您无法更改:
->您将创建一个新键

->您将创建重复项(如果该行已存在)

< p> so

插入..接受重复...

追夢秋陽
3楼-- · 2020-09-01 11:36

对不起,每个人都可以更改数据库表记录的关键字段。

< p>此限制仅适用于表的所有列都属于主键的UPDATE表FROM结构。

您仍然可以更新一个或多个记录的键字段,但不适用于UPDATE 表FROM结构。 从A更改为B的示例:

更新表SET keyfield ='B'WHERE keyfield ='A'。

PS:也许混乱来自内部表中的限制 防止键字段被更改。

SC_Yao
4楼-- · 2020-09-01 11:29

对于我来说,更新一个仅包含键字段的表的感觉真奇怪……。

木偶小白
5楼-- · 2020-09-01 11:36

您好Jonathan Blavatsky

清楚地理解表中键字段的概念,在任何表中,KEY FIELDS都可以

在您的情况下,因为您声称所有字段都是关键字段,所以您永远无法更新现有条目。 更新仅对NON_KEY字段有效。 因此,针对您的情况的唯一解决方案是只删除所有必需的条目并将新条目插入表中。

另一种解决方案是使用MODIFY语句,然后删除所有非必需项

需要注意!

渐行渐远_HoldOn
6楼-- · 2020-09-01 11:50

第二次测试(我喜欢测试:))

A Test_1

A Test_2

A Test_3

B Test_3

代码:

更新ZTEST_001设置field_a ='B',其中Field_a ='A'。

结果:sy-subrc = 4

所以可能很危险

一周热门 更多>