效率优化-嵌套循环中的一个小坑

标签:
abapalvcdsliumengsap |
分类: 数据库相关 |

昨天自己给自己挖了个坑,然后今天又填上了。
(1/3)需求:
有个需求要用到分类和特性的嵌套循环。这个需求中,物料分类=C 物料组。
部分关键代码如下:
TYPES:BEGIN OF ty_character,
class TYPE klah-class, "分类编码
atnam TYPE cabn-atnam, "特性编码
atbez TYPE cabnt-atbez, "特性名称
END OF ty_character.
DATA: gt_character TYPE SORTED TABLE OF ty_character WITH NON-UNIQUE KEY class atnam.
LOOP AT gt_makt INTO DATA(ls_makt).
"第一种LV_CLASS的定义方法
DATA(lv_class) = 'C' && ls_makt-matkl.
"第二种LV_CLASS的定义方法,进行了类型转换
DATA(lv_class) = CONV klah-class( 'C' && ls_makt-matkl ).
LOOP AT gt_character INTO DATA(ls_character) WHERE class = lv_class.
...
ENDLOOP.
ENDLOOP.
(2/3)分析:
第一种写法,在检查时,编译器会报优化警告,如下图:
第二种写法,class和lv_class的类型相同,不再有警告。
性能上,我做了一下测试,同样的数据量,第一种用时3.5秒,第二种用时0.008秒。
数据量越大,性能差距越大。
(3/3)总结:
内层嵌套循环在使用时,除了尽量使用sorted table外,还要注意where条件字段类型是否是一致的!
我的SE38插件工具箱——视频介绍:
https://www.bilibili.com/video/BV1hP4y1N7Qz/
联系286503700获取
ABAP文章汇总:
https://mp.weixin.qq.com/s/djmMeM0qfDxPPwxbjuJABA
Excel文章汇总:
https://mp.weixin.qq.com/s/NwJ0SzIrn9hVmaCMo-UYyA
网盘永久链接:
https://mp.weixin.qq.com/s/f_WwKZdwM-vPEstTjjz_eQ
关注公众号,点下方菜单打开上面的链接,更方便哦。
笔者微信:286503700(QQ同号)
如果喜欢,谢谢转发。