目录
REUSE_ALV_GRID_DISPLAY (兼容List ALV )
REUSE_ALV_GRID_DISPLAY_LVC(兼容OO ALV )
FM:REUSE_ALV_FIELDCATALOG_MERGE
LVC & OO: LVC_FIELDCATALOG_MERGE
前言
在ABAP编程中,ALV是一种强大的工具,用于以表格形式呈现数据,并提供诸如排序、过滤、汇总等多种交互功能。Fieldcat
(字段目录)是ALV编程的核心组成部分之一,它用于定义和控制ALV输出表格中每个字段和列的特定属性和行为。
Fieldcatalog的主要作用如下:
- 定义字段属性:Fieldcatalog为每个要在ALV中显示的字段定义了属性,如字段名、字段标签、字段类型、字段长度等。这些属性决定了字段在ALV中的外观和行为。
- 排序和过滤:通过Fieldcatalog,可以定义哪些字段可以用于排序和过滤。用户可以根据这些字段对ALV中的数据进行排序,或者通过输入过滤条件来筛选数据。
- 输出设置:Fieldcatalog还可以用来定义数据的输出格式,比如是否要显示货币符号、小数位数、日期格式等。
- 其他特殊功能:除了基本的显示和排序功能外,Fieldcatalog还可以与ALV的其他功能结合使用,比如实现双击行事件、自定义按钮等。
总的来说,Fieldcatalog在ABAP ALV中扮演着至关重要的角色,它决定了数据如何在ALV中呈现给用户,并提供了排序、过滤等交互功能。通过合理配置Fieldcatalog,可以大大提高ABAP应用程序的用户体验和数据展示效果。
Fieldcatlog详解
REUSE_ALV_GRID_DISPLAY (兼容List ALV )
Fieldcat 的类型为 slis_fieldcat_alv,字段属性如下:
REUSE_ALV_GRID_DISPLAY_LVC(兼容OO ALV )
Fieldcat 的类型为 lvc_s_fcat,字段属性如下:
备注:未进行描述的字段极少使用,暂时不清楚具体用法,如以上数据总结有描述不对的地方可提出后修正,希望对大家有所帮助。
如何通过数据结构自动获取Fieldcatalog字段?
根据程序中的数据内表结构,来自动生成FIELDCAT内表,根据内表结构所参照的词典类型来自动完成如表标题字段名的生成,后续可以再根据特殊情况再修改FIELDCAT内表,这样可以大大减少FIELDCAT内表的创建工作。
注意:程序中用来输出的内表结构中的每个字段都要参考了数据字典中的Data element,否则无法获取字段的相关信息,此时在自动构建FIELDCAT后再手动对无参照字典类型的字段进行手工设置。
FM:REUSE_ALV_FIELDCATALOG_MERGE
DATA: gs_fieldcat TYPE slis_fieldcat_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
* i_internal_tabname = ''
i_structure_name = 'SPFLI'
i_inclname = sy-repid
CHANGING
ct_fieldcat = gt_fieldcat[]
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.
LVC & OO: LVC_FIELDCATALOG_MERGE
DATA: gs_fieldcat TYPE lvc_s_fcat,
gt_fieldcat TYPE lvc_t_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'SPFLI'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fieldcat[]
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.
gt_fieldcat 运行结果: