1、alv需要显示的时候字段太多,或者有现成的结果表的时候可以用函数创建字段的文字描述 ( fieldcat样式)。
2、先用函数把结构或者表转换
I_STRUCTURE_NAME 可以是表也可以结构,如果是定义的结构需要用 like 参考
DATA: BEGIN OF gs_out,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF gs_out.
DATA gt_out LIKE TABLE OF gs_out .
DATA: GT_FIELDCATALOG TYPE LVC_T_FCAT .
DATA: IT_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
CLEAR GT_FIELDCATALOG[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_STRUCTURE_NAME = LW_STRUCTURE
CHANGING
CT_FIELDCAT = IT_FIELDCATALOG[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
3、格式转换:用于 REUSE_ALV_GRID_DISPLAY_LVC 调用。
SLIS_T_FIELDCAT_ALV >>>> LVC_T_FCAT.
UNASSIGN:<FS_FIELDCAT>.
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
IT_FIELDCAT_ALV = IT_FIELDCATALOG[]
* IT_SORT_ALV =
* IT_FILTER_ALV =
* IS_LAYOUT_ALV =
IMPORTING
ET_FIELDCAT_LVC = GT_FIELDCATALOG[]
* ET_SORT_LVC =
* ET_FILTER_LVC =
* ES_LAYOUT_LVC =
TABLES
IT_DATA = GT_OUT[]
EXCEPTIONS
IT_DATA_MISSING = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.