往往在ALV展示时候,想要对fcat属性设置修改。那这样的话,如何获取我想要的那列并对其设置属性呢?
实现上面的设置前,需要获取ALV的表头目录。两种方式如下;
1.定义好结构的
I_STRUCTURE_NAME 传入se11里定义好的结构名
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = '结构名'
changing
ct_fieldcat = lt_fieldcat
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
2.未在SE11定义结构,而是使用内部定义表
先data定义内部表的类型(不是TYPES:BEGIN OF)
like参照字段名,
继续定义标准表lt_makt LIKE STANDARD TABLE OF str_makt.
i_program_name 和 i_inclname 参数都要写为本程序名 (sy-repid)
DATA: BEGIN OF str_makt,
matnr like makt-matnr,
maktx like makt-maktx,
END OF str_makt.
DATA: lt_makt LIKE STANDARD TABLE OF str_makt.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.
select matnr maktx
INTO TABLE lt_makt
FROM makt
WHERE spras = sy-langu.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = sy-repid
I_INTERNAL_TABNAME = 'STR_MAKT'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = sy-repid
I_BYPASSING_BUFFER = 'X'
* I_BUFFER_ACTIVE =
changing
ct_fieldcat = lt_fieldcat
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
call FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = LT_FIELDCAT
TABLES
T_OUTTAB = LT_MAKT.
之前参考了一个博客只让用like,但是我用了type有时候也可以出来,有时候又找不到,比如下面方式。你要是知道为什么欢迎告诉我呀!
版权声明:本文为weixin_43885987原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。