如何使用CL_SALV_TABLE仅显示汇总值而不显示单个记录

2020-08-19 08:59发布

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

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


大家好,

我需要编写会生成alv的代码。 在ALV中,时间字段将根据Kostenart进行汇总。 附加要求是ALV应该仅输出汇总金额,而不是记录。 这意味着,如果Kostenart Y001获得2条记录,共135分钟(90 + 45),那么只有135个minitues会输出而不是90和45。如果我的问题不清楚,请随时查看屏幕截图。 它将提供更清晰的视图。

您的建议将受到高度赞赏。

预先感谢

Arnab

 cl_salv_table =>工厂(
   导入r_salv_table = g_o_table
   更改t_table = g_it_output)。

   " Funktionen aktivieren
   g_o_functions = g_o_table-> get_functions()。
   g_o_functions-> set_all(abap_true)。
   g_o_display = g_o_table-> get_display_settings()。

   g_o_display-> set_striped_pa​​ttern(abap_true)。
   g_o_columns = g_o_table-> get_columns()。

   "嗯,spalten aus zu blenden
   g_o_column?= g_o_columns-> get_column('MANDT')。
   g_o_column-> set_technical(if_salv_c_bool_sap => true)。
   g_o_column?= g_o_columns-> get_column('AWE_ID')。
   g_o_column-> set_technical(if_salv_c_bool_sap => true)。

   "乐观主义者
   g_o_columns-> set_optimize(abap_true)。

   " Um Daten zu sortieren
   g_o_sorts = g_o_table-> get_sorts()。
   g_o_sorts-> add_sort(列名='KOSTENART'小计= abap_true)。
   g_o_sorts = g_o_table-> get_sorts()。
   g_o_sorts-> add_sort(列名='MATNR'小计= abap_true)。

   "祖·阿格里格瑞伦
   g_o_agg = g_o_table-> get_aggregations()。
   g_o_agg-> add_aggregation('ZEIT')。
 

(24.1 kB)

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

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


大家好,

我需要编写会生成alv的代码。 在ALV中,时间字段将根据Kostenart进行汇总。 附加要求是ALV应该仅输出汇总金额,而不是记录。 这意味着,如果Kostenart Y001获得2条记录,共135分钟(90 + 45),那么只有135个minitues会输出而不是90和45。如果我的问题不清楚,请随时查看屏幕截图。 它将提供更清晰的视图。

您的建议将受到高度赞赏。

预先感谢

Arnab

 cl_salv_table =>工厂(
   导入r_salv_table = g_o_table
   更改t_table = g_it_output)。

   " Funktionen aktivieren
   g_o_functions = g_o_table-> get_functions()。
   g_o_functions-> set_all(abap_true)。
   g_o_display = g_o_table-> get_display_settings()。

   g_o_display-> set_striped_pa​​ttern(abap_true)。
   g_o_columns = g_o_table-> get_columns()。

   "嗯,spalten aus zu blenden
   g_o_column?= g_o_columns-> get_column('MANDT')。
   g_o_column-> set_technical(if_salv_c_bool_sap => true)。
   g_o_column?= g_o_columns-> get_column('AWE_ID')。
   g_o_column-> set_technical(if_salv_c_bool_sap => true)。

   "乐观主义者
   g_o_columns-> set_optimize(abap_true)。

   " Um Daten zu sortieren
   g_o_sorts = g_o_table-> get_sorts()。
   g_o_sorts-> add_sort(列名='KOSTENART'小计= abap_true)。
   g_o_sorts = g_o_table-> get_sorts()。
   g_o_sorts-> add_sort(列名='MATNR'小计= abap_true)。

   "祖·阿格里格瑞伦
   g_o_agg = g_o_table-> get_aggregations()。
   g_o_agg-> add_aggregation('ZEIT')。
 

(24.1 kB)
付费偷看设置
发送
4条回答
CJones
1楼 · 2020-08-19 10:02.采纳回答

1)如果用户仍然希望能够将视图从折叠状态展开到未折叠状态,则可以保存布局。 这是一次用户过程。

您可以保存折叠的ALV视图的布局并将其设置为系统或只是用户默认设置。 如果是默认值,它将在用户下次打开该ALV时以这种方式自动打开。 这样,您不必编程任何东西。

2)如果用户不想了解任何详细信息,而总是只查看聚合,则应在将该表传递给ALV之前对其进行聚合。

天桥码农
2楼-- · 2020-08-19 09:51

NB:为什么不通过屏幕截图中的示例进行说明? (45 + 90给出135,而不是用2 + 3 + 1给出6)。

我怀疑仅显示一条总行而不显示明细行的解决方案是否可行,因为这违反了ALV

我猜想,一个更可行的解决方案是自动折叠那些KostenArt ='Y001'的明细行,但我怀疑使用标准功能是否可行。 您可以压缩/扩展整个级别的节点,但不能仅对一组小计的行进行压缩/扩展。 调整标准(!!),也许可以通过更改属性MT_GROUPLEVELS_FILTER来实现,该属性设置在CL_GUI_ALV_GRID的私有方法GET_GROUPLEVELS中/当然,您还需要确定由SALV实例实例化的网格实例。 属性具有属性COMPRESS,该属性已转移到前端以指示要压缩的组。

严重的是,您不应该更改标准,因为这样做很冒险,并且会花费很多时间 它。 因此,一种解决方法是通过将详细信息行汇总到主内部表中的一条详细信息行中(而不是ALV功能)来限制其详细信息。

三十六小时_GS
3楼-- · 2020-08-19 09:59

Sandra Rossi 感谢您的解释。 我已经尝试过使用compress。 让我们看看请求制作程序的人是否满意。 再次感谢。 非常感谢。

Nan4612
4楼-- · 2020-08-19 09:41
Arnab Goswami 您不是只希望压缩一组行吗? 以编程方式,其余的保持扩展? (因为在您的屏幕截图中,您的示例仅用于一组行,并且在您的解释中,您谈论的是Kostenart Y001)请注意,当ALV首次显示时,Michael的解决方案也可以通过编程方式实现(在ALV上展开或压缩 给定的排序级别)。

一周热门 更多>