SAP ABAP中通过2个线程进行SELECT查询的问题

2020-08-22 13:10发布

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

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


嗨朋友,

我在Z表中使用数字范围(数字)。 当2个线程同时读取相同的SELECT查询时,会将相同的编号分配给必需的变量。 您能帮我解决问题吗?

谢谢

Balaji.T。

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

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


嗨朋友,

我在Z表中使用数字范围(数字)。 当2个线程同时读取相同的SELECT查询时,会将相同的编号分配给必需的变量。 您能帮我解决问题吗?

谢谢

Balaji.T。

付费偷看设置
发送
8条回答
黑丝骑士
1楼-- · 2020-08-22 13:40

您的问题符合ACID原则( https://zh-CN。 wikipedia.org/wiki/ACID )。

从线程2的角度来看,数据库的行为就像线程1不在那里。 因此,这两个访问需要序列化。 线程2仅在线程1完成号码提取后才被允许选择号码。 如果您需要确保Z表中没有缺失的数字(线程1带有数字,但是无法完成),则需要进行进一步的序列化。

线程的哪些部分需要序列化在很大程度上取决于函数的需求。

南山jay
2楼-- · 2020-08-22 13:34

亲爱的Balaji

如果您不使用数字范围对象。 ...

尝试在select语句后使用锁。

选择* FROM ZMAT_XYZ进行更新......

确保您发出提交语句以释放锁

注意事项

Venkat

huskylover
3楼-- · 2020-08-22 13:53

SAP为此提供了标准的数字范围功能,此博客可以帮助您入门: https://blogs.sap.com/2015/05/29/number-ranges-things-to-keep-in-mind /

数字范围不是Z表的替代方法,它可以简化Z表使用的新数字的生成。

P.S。 请使用评论按钮来答复答案。 "提交您的答案"旨在为原始问题添加新的答案。 阅读"回答之前"。

歪着头看世界
4楼-- · 2020-08-22 13:54

正如耶利娜所说:"请使用评论按钮回答答案。"提交您的答案"是为原始问题添加新答案。请阅读" 回答"之前。"

Alawn_Xu
5楼-- · 2020-08-22 13:36

嗨,迈克尔,

感谢您的快速答复。 我是SAP ABAP中序列化概念的新手。 请帮助我在下面进行序列化选择查询(Z表:具有数字范围值的ZMAT_XYZ)。 这是我在ABAP代码中使用的选择查询。

选择ean_category序列前缀阈值状态
插入表的对应字段lt_ean_data
从ZMAT_XYZ
ean_category ='UC'。

如您所知,第二个线程正在使用与第一个线程中存在的内部表(LT_EAN_DATA)相同的数据。 因此,第二线程最终失败了。

谢谢

Balaji.T。

土豆飞人
6楼-- · 2020-08-22 13:32

抱歉,这与OP的问题有什么关系? 这是关于在Z表中分配一个数字。 我已经阅读了所有注释,但无法理解这与MM01有什么关系。

一周热门 更多>