性能低下,即拉动内部表循环

2020-09-02 17:27发布

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

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


你好,

我在一个非常简单的循环中挣扎,这很奇怪。 我想知道也许您能帮我解决这个问题。

因此,我在内部表中有2个选择,它们比较快(两个选择大约需要1秒),例如 lt_a 和 lt_b ,其中 lt_a 有一个子表,相应的 lt_b 行应在此子表中(通过 标识符 id )。 所以-这是我的循环:


*注:一些数字和性能信息:
lt_a(6列)-约55,000行
lt_b(4列)-约40 000行
时间:〜45秒( !)

我有什么可以增强的吗? 我应该使用对应还是使用值(col1 = -col1 ..)?

谢谢

马里奥

  数据:ty_b的lt_b类型标准表,键ID为" lt_a",定义为其他位置的属性
....
按ID对lt_b排序。 在lt_b处循环以分配field-symbol()。
将lt_a [id = -id] -subtable分配给field-symbol()。 "哪个更快-对应或插入值。 将相应的#()插入表中。 "注释出来..相应的较短(但较慢吗?) *插入值lt_a( * col1 = -col1 * col2 = -col2 * col3 = -col3
* col4 = -col4 *)放入表中。 结束循环。

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

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


你好,

我在一个非常简单的循环中挣扎,这很奇怪。 我想知道也许您能帮我解决这个问题。

因此,我在内部表中有2个选择,它们比较快(两个选择大约需要1秒),例如 lt_a 和 lt_b ,其中 lt_a 有一个子表,相应的 lt_b 行应在此子表中(通过 标识符 id )。 所以-这是我的循环:


*注:一些数字和性能信息:
lt_a(6列)-约55,000行
lt_b(4列)-约40 000行
时间:〜45秒( !)

我有什么可以增强的吗? 我应该使用对应还是使用值(col1 = -col1 ..)?

谢谢

马里奥

  数据:ty_b的lt_b类型标准表,键ID为" lt_a",定义为其他位置的属性
....
按ID对lt_b排序。 在lt_b处循环以分配field-symbol()。
将lt_a [id = -id] -subtable分配给field-symbol()。 "哪个更快-对应或插入值。 将相应的#()插入表中。 "注释出来..相应的较短(但较慢吗?) *插入值lt_a( * col1 = -col1 * col2 = -col2 * col3 = -col3
* col4 = -col4 *)放入表中。 结束循环。
付费偷看设置
发送
4条回答
hengyuye
1楼 · 2020-09-02 18:03.采纳回答

您需要使用具有相同ID的已排序表。 您将看到性能上的惊人提高。 永远不要使用像这种开发之王的TYPE STANDARD TABLE这样的声明之王。

我想您正在没有HANA数据库的情况下工作。 如果您拥有HANA,则可以为准备数据的CDS视图建模。

最好的问候。

四川大学会员
2楼-- · 2020-09-02 17:53

最好的方法是先尝试合并或对所有条目使用。

如果您的要求只是移动数据,则可以尝试FILTER或

CPLASF-自律
3楼-- · 2020-09-02 18:04

如果id是唯一的,请尝试将哈希键添加到具有组件id的表中,然后选择按ID排序的结果

否则,添加具有非唯一键ID的排序键

愤怒的猪头君
4楼-- · 2020-09-02 17:46

很明显,Ruben Rollano Carcajona,Xavier Joubert,Quynh Doan Manh-你们都是正确的,通过将这些片段放在一起,我改进了 从45秒到1.6的性能:)!。

因此,我将排序表与键" id"一起使用:

lt_a处的
循环分配字段符号()。
   -subtable =对应的#(过滤器#(lt_b其中id eq  -id))。
 结束循环。

谢谢您的帮助!
最诚挚的问候,

马里奥(Mario)

一周热门 更多>