表控制是ABAP开发中经常用到的技术,它的字段控制相比ALV更加灵活,适用于一些复杂的应用场景,例如ME23N采购订单的信息显示。
如果对表控制中的某一列字段进行隐藏,我们首先想到的肯定是LOOP SCREEN, 然后设置字段属性ACTIVE=0,可惜这个方法对表控制不奏效。
正确的做法是:修改表控制中COLS的字段可见长度属性。我写了一点简单的代码来测试。
通过修改表控制中COLS的字段属性隐藏列EBELN,在PBO增加处理MODULE
具体代码如下:
MODULE set_field_attr OUTPUT.
DATA: l_hide TYPE c VALUE 'X',
ls_col LIKE LINE OF gtc_data-cols.
LOOP AT gtc_data-cols INTO ls_col WHERE screen-name = 'GS_EKKO-EBELN'.
IF l_hide IS INITIAL.
ls_col-vislength = 10.
ELSE.
ls_col-vislength = 0.
ENDIF.
MODIFY gtc_data-cols FROM ls_col.
ENDLOOP.
ENDMODULE. " SET_FIELD_ATTR OUTPUT