SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理

作者:ABAP三叔 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

前言

在SAP官方社区上一同学发帖求助,为什么SALV状态栏上的"ABC 分析"按钮不见了,如何将它显示出来呢?本文将一探究竟,深入分析原因,并给出解决方案。

问题分析

默认的SALV状态栏如下,是没有"ABC 分析"按钮的

SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

SALV显示时,根据debug追踪,在类CL_SALV_CONTROLLER_EVENTS的RAISE_BUILD_UIFUNCTION方法中调用了以下方法。

lr_model_base->set_screen_status( pfstatus = 'SALV_TABLE_STANDARD' report = 'SAPLSALV_FUNCTIONS_STATUS' ).
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

报表SAPLSALV_FUNCTIONS_STATUS的GUI状态SALV_TABLE_STANDARD,见下图,是没有"ABC

分析"这个按钮的,因此SALV的状态栏中就无法显示出这个按钮了。

SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

问题处理

我们知道类CL_SALV_TABLE的SET_SCREEN_STATUS方法中是可以传入指定的报表名称和GUI状态的,因此,我们只需要找到一个含有"ABC

分析"按钮的GUI状态就可以了。而标准的报表SAPLSLVC_FULLSCREEN的STANDARD_FULLSCREEN就满足我们的需求。

SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

因此只需要在SALV创建之后,调用 CL_SALV_TABLE的 SET_SCREEN_ST ATUS方法就可以了,代码如下

TRY. CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = go_salv CHANGING t_table = gt_sflight. CATCH cx_salv_msg.ENDTRY.go_salv->set_screen_status( pfstatus = 'STANDARD_FULLSCREEN' report = 'SAPLSLVC_FULLSCREEN' ).

再看下效果,"ABC 分析"按钮显示出来了。

SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

这个按钮的作用是统计分析ALV的 每一行的

某一列数据,占这一列数据总和的比例,按照默认的前70%为A段,再后20%为B段,最后10%为C段,这个比例可以按自己需要调整

SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图

问题延伸

如果想要显示"ABC 分析"按钮,又需要增加自定义的功能按钮,用标准的GUI状态就不合适,这就需要复制一个标准的GUI状态,然后再加上自定义的按钮就可以了

SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
SALV 状态栏 quot ABC 分析 quot 按钮消失问题处理 - 封面图
ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SALV状态栏quotABC分析quot按钮消失问题处理.md」整理生成,仅用于内部技术分享与学习交流。