ALV报告在海量数据上变得缓慢

2020-08-13 15:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨窥视, 我已经开发了此Z报告...

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

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


嗨窥视,

我已经开发了此Z报告。 我面临的问题是,它在25-100种材料上都能正常工作,但是一旦我扩大范围,该报告就需要花费大量时间来处理,并且在大型环境下运行时,我会超时并出现错误 范围。 请帮助我修复代码。 我在这里附上我的代码。

FORM set_data。

选择matnr,werks,lgort,charg,vfdat,hsdat到表@DATA(it_data)中
从matdoc那里matnr输入@so_matnr和werks输入@so_werks和lgort IN @ so_lgort。


在it_data处将其放入数据(ls_data)。
从makt处将单个maktx输入到ls_output-maktx中,将其EQ放在ls_data-matnr中。 。
从mara到ls_output-mtart中选择单个mtart,在mnr EQ ls_data-matnr中选择
从mch1到ls_output-qndat中选择单个qndat。 "添加下一个检查日期
从mchb到ls_output-clabs中选择单个实验室,在其中EQ ls_data-werks和werks EQ ls_data-werks和lgort EQ ls_data-lgort和charg EQ ls_data-charg。
_ss -matnr左删除引导数为'0'。

ls_output-matnr = ls_data-matnr。

ls_output-werks = ls_data-werks。
ls_output-lgort = ls_data-lgort。
ls_output-charg = ls_data-charg。
ls_output-hsdat = ls_data-hsdat。
ls_output-vfdat = ls_data-vfdat。





APPEND ls_output到它_输出 ..

通过matnr charg werks lgort对IT_SORT进行排序。
从it_output中删除相邻的重复文件。
*
ENDLOOP。


ENDFORM。< br>
*&------------------------------------------- -------------------------- *
*&表单build_layout
*&----------- -------------------------------------------------- -------- *
*设置ALV显示的布局
* ---------------------------- ------------------------------------------ *
表格显示_ alv。

*/..为alv
PERFORM get_fieldcatalog设置字段目录。

调用功能'REUSE_ALV_GRID_DISPLAY'
导出
i_callback_program = sy-repid
i_callback_top_of_page ='TOP-OF-PAGE'
is_layout = gs_layout
it_fieldcat = gt_fcat
i_save ='A'
表格
t_outtab = it_output
例外情况
program_error = 1
其他=2。



ENDFORM。

**&------------------- -------------------------------------------------- *
**&表格GET_FIELDCATALOG
**&----------------------------------- ---------------------------------- *
**从字典结构创建字段目录
* * ------------------------------------------------- --------------------- *
**-> p_struc_name结构名称
**-> p_rtname参考表名称
** -> p_repid程序名称
** <-> c_fcat字段目录
** ---------------------------- ------------------------------------------ *
FORM get_fieldcatalog。< br>
清除:gs_fcat。
刷新:gt_fca t。

gs_fcat-col_pos =1。
gs_fcat-fieldname ='MATNR'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='材料编号'。
APPEND将gs_fcat转到gt_fcat。
清除gs_fcat。

gs_fcat-col_pos =2。
gs_fcat-fieldname ='MAKTX'。
gs_fcat-tabname ='IT_OUTPUT'。 -seltext_m ='材料说明'。
gs_fcat-outputlen ='12'。
追加gs_fcat至gt_fcat。
清除gs_fcat。

gs_fcat-col_pos = 3.
gs_fcat- 字段名称='MTART'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='材料类型'。
gs_fcat-outputlen ='12'。
将gs_fcat附加到gt_fcat。
>清除gs_fcat。

gs_fcat-col_pos = 4.
gs_fcat-fieldname ='CHARG'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='批次'。 br> gs_fcat-outputlen ='12'。
追加gs_fcat至gt_fcat。
清除gs_fcat。

gs_fcat-col_pos =5。
gs_fcat-fieldname ='WERKS'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='Plant'。
gs_fcat-outputlen ='12'
APPEND将gs_fcat添加到gt_fcat。
清除gs_fcat。

gs_fcat-col_pos =6。
gs_fcat-fieldname ='LGORT'。
gs_fcat-tabname ='IT_OUTPUT'。< br> gs_fcat-seltext_m ='存储位置'。
gs_fcat-outputlen ='12'。
将gs_fcat添加到gt_fcat。
清除gs_fcat。



gs_fcat-col_pos = 7 。
gs_fcat-fieldname ='HSDAT'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='制造日期'。
gs_fcat-outputlen ='12'。
APPEND gs_fcat TO gt_fcat。
清除gs_fcat。

gs_fcat-col_pos =8。
gs_fcat-fieldname ='VFDAT'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='到期日期'。
gs_fcat-outputlen ='12'。
追加gs_fcat至gt_fcat。
清除gs_fcat。

gs_fcat-col_pos =9。
gs_fcat-fieldname = 'QNDAT'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='下次检验日期'。
gs_fcat-outputlen ='12'。
将gs_fcat附加到gt_fcat。
清除gs_fcat。

gs_fcat-col_pos =10。
gs_fcat-fieldname ='CLAB S'。
gs_fcat-tabname ='IT_OUTPUT'。
gs_fcat-seltext_m ='批次数量'。
gs_fcat-outputlen ='12'。
追加gs_fcat至gt_fcat。
清除gs_fcat 。

ENDFORM。

*&--------------------------------- ------------------------------------ *
*&FORM build_HEADER
*&- -------------------------------------------------- ------------------ *
* alv
*的构建标头* ------------------- -------------------------------------------------- -*
FORM页面顶部。

*&------------------------------ --------------------------------------- *
*&常量声明
*&------------------------------------------------ --------------------- *
常量:lc_s类型c值'S',
lc_h类型c值'H'。
< br> *&---------------------------------------------- ----------------------- *
*&本地数据声明
*&------------- -------------------------------------------------- ------ *
DATA:lt_header类型slis_t_listheader,
ls_header类型slis_listheader,
l v_to(2)类型c,
lv_count类型i。



* ----------------------- ---------
*标题
* -------------------------------- -
ls_header-typ ='H'。
ls_header-info ='批处理信息报告'。
将ls_header附加到lt_header。
清除ls_header。

* ---- ----------------------------
*/..追加记录编号
* ------ ----------------------------


描述表it_output行lv_count。

* lv_count =行(it_output)。
*
ls_header-typ = lc_s。
ls_header-key ='记录数:'。
ls_header-info = lv_count。
附录ls_header TO lt_header 。
CLEAR ls_header。


调用功能'REUSE_ALV_COMMENTARY_WRITE'
导出
it_list_commentary = lt_header。

CLEAR lt_header。
ENDFORM。

此致

Hamza