选择查询性能改进。

2020-09-06 03:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 由于我是ABAP世界的新...

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

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


嗨,

由于我是ABAP世界的新手,因此我需要一些有关性能问题的建议。

在我的程序中,有多个选择单个查询命中数据库,其中存储了100k数据,并需要4-5个小时来获取结果。 我引用了许多博客和Google,并得知我可以将数据库中的所有数据放入内部表中并获取数据。 但是我很困惑如何实现它。 下面是代码。 谁能指导我如何提高性能,并在更短的时间内完成获取。 在这里,c_t_data中填充了100k条记录。 然后在其中触发了许多选择单个语句。

在c_t_data处循环播放。
清除:wa_za。

从mara中选择mara-matnr
在marn
中matar = c_t_data-matnr
并且lvorm =空间。< br>检查sy-subrc =0。

选择单个user4 waers
INTO(wa_za-yyuser4,wa_za-yywaers)
从aufk
在其中aufnr = c_t_data-aufnr。


选择单个kursk prsdt
INTO(wa_za-yykursk,wa_za-yyprsdt)
从vbkd
那里vbeln = c_t_data-vbeln
并且posnr ='000000'。


选择单个库尔斯克prsdt
INTO(wa_za-yykursk,wa_za-yyprsdt)
从vbkd
哪里vbeln = c_t_data-vbeln
和posnr = c_t_data-posnr。


选择单个vbegdat venddat
INTO(wa_za-yyvbegdat,wa_za-yyvenddat)
从veda
在vbeln = c_t_data-vbeln
和vposn ='000000'。


选择单个vbegdat venddat
INTO(wa_za-yyvbegdat,wa_za-yyvenddat)
从veda
那里vbeln = c_t_data-vbeln
和vposn = c_t_data-posnr。

选择tj30t〜txt04进入wa_za-yycontsts
从玩笑中加入
加入jsto
开启jsto〜objnr = jest〜objnr
加入tj30t
开启tj30t〜stsma = jsto〜stsma
在何处jest〜objnr = c_t_data-objnr
AND jest〜inact =空格
AND tj30t〜stsma = jsto〜stsma
AND tj30t〜estat = jest〜stat
AND tj30t〜spras ='EN '。
ENDSELECT。

清除wa_za-yyconroot。
移动c_t_data-vbeln(7)到wa_za-yyconroot。


从vbak中选择单个knumv到vbak-knumv
中,vbeln = c_t_data-vbeln。


从konv中选择单个kbetr到wa_za-yykbetr
中,knumv = vbak-knumv且
KPOSN ='000000'和
KSCHL ='ZDIS'。


选择vbeln parvw kunnr pernr parnr
从vbpa到表itab_vbpa
中,vbeln = c_t_data-vbeln。

预先感谢

库马尔。