如何创建基于月的动态ALV?

时间:2019-06-02 12:23:20

标签: dynamic abap alv

我需要在ALV网格中显示按月计算的数量,但仅显示具有至少一个非零值的月列。

现在,ALV如下所示:

matnr     0101    0102    0103  ...  0110    0111    0112
-----     ----    ----    ----       ----    ----    ----
0123         0       0       0          0     234     345
0124         0       0       0        458     234     345

但是,它应该仅显示:

matnr     0110    0111    0112
-----     ----    ----    ----
0123         0     234     345
0124       458     234     345

如何隐藏只有零值的月份列?

1 个答案:

答案 0 :(得分:2)

在ALV的字段目录中,它定义了列的呈现方式,您可以通过设置以下两个属性或方法之一来隐藏列:

  • 如果您使用CL_GUI_ALV_GRIDREUSE_ALV_GRID_DISPLAY REUSE_ALV_LIST_DISPLAY,请将NO_OUT设置为'X'或将TECH设置为'X'。
  • 如果使用SALV,则具有类CL_SALV_COLUMN或其子类,它们通过相应的方法SET_VISIBLESET_TECHNICAL来更改这些属性。

这两个属性或方法都隐藏该列,但是第一个(NO_OUT,SET_VISIBLE)使用户可以通过布局选项显示该列,而第二个(TECH,SET_TECHNICAL)则绝对隐藏该列。

当然,首先,您必须在内部表上循环并检查每一列的内容。因为您说您有一个“动态ALV”,所以我想您必须使用'ASSIGN COMPONENT'来访问每一行的值。