ALV报表——表头实现
在调用ALV函数的时候给i_callback_top_of_page赋值
运行效果:
代码:
************************************************************************ * Type Pools Definitions 定义类型池 ************************************************************************ TYPE-POOLS slis. ************************************************************************ * Tables Definitions ************************************************************************ TABLES: marc. ************************************************************************ * Data Definitions 定义数据 ************************************************************************ TYPES: BEGIN OF ty_data, name TYPE char10, "姓名 age TYPE i, "年龄 class TYPE char10, "班级 END OF ty_data. DATA: gt_data TYPE TABLE OF ty_data. DATA: gs_layout TYPE slis_layout_alv, "布局 gt_fieldcat TYPE slis_t_fieldcat_alv, "字段 gt_listheader TYPE slis_t_listheader. "标题列 ************************************************************************ * Includes Module 包含模块 ************************************************************************ ************************************************************************ * Selection Screen 选择屏幕 ************************************************************************ ************************************************************************ * Initialization 初始化事件 ************************************************************************ INITIALIZATION. ************************************************************************ * At Selection Screen PAI事件 ************************************************************************ AT SELECTION-SCREEN. ************************************************************************ * At Selection Screen Output PBO事件 ************************************************************************ AT SELECTION-SCREEN OUTPUT. ************************************************************************ * Report Format 报表格式 ************************************************************************ TOP-OF-PAGE. END-OF-PAGE. ************************************************************************ * Main Process 主要逻辑 ************************************************************************ START-OF-SELECTION. "获取数据 PERFORM frm_get_data. "显示数据 PERFORM frm_display_data. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_get_data . DATA: ls_data LIKE LINE OF gt_data. ls_data-name = '张三'. ls_data-age = 13. ls_data-class = 'Class1'. APPEND ls_data TO gt_data. CLEAR ls_data. ls_data-name = '李四'. ls_data-age = 14. ls_data-class = 'Class2'. APPEND ls_data TO gt_data. CLEAR ls_data. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DISPLAY_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_display_data . "栏位最适宽度 gs_layout-colwidth_optimize = 'X'. "ALV条纹 gs_layout-zebra = 'X'. "构建ALV的栏位 PERFORM frm_create_field. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid "当前程序名 is_layout = gs_layout "Layout it_fieldcat = gt_fieldcat[] "Fieldcat i_callback_top_of_page = 'FRM_CREATE_HEADER_LIST' i_save = 'A' TABLES t_outtab = gt_data EXCEPTIONS program_error = 1 OTHERS = 2. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_FIELD *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_create_field . DATA: ls_fieldcat TYPE slis_fieldcat_alv, lv_count TYPE i. DEFINE fieldcat. ADD 1 TO lv_count. "栏位显示顺序 ls_fieldcat-col_pos = lv_count. "内表栏位 ls_fieldcat-fieldname = &1. "参考栏位 ls_fieldcat-ref_fieldname = &2. "参考表 ls_fieldcat-ref_tabname = &3. "单位 ls_fieldcat-qfieldname = &4. "栏位标题(长文或中等文或短文) ls_fieldcat-seltext_s = ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = &5. "显示长文或中等文或短文 ls_fieldcat-ddictxt = &6. APPEND ls_fieldcat TO gt_fieldcat. CLEAR ls_fieldcat. END-OF-DEFINITION. fieldcat 'NAME' '' '' '' '姓名' 'L'. fieldcat 'AGE' '' '' '' '年龄' 'L'. fieldcat 'CLASS' '' '' '' '班级' 'L'. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_HEADER_LIST *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_create_header_list . DATA: ls_listheader TYPE slis_listheader, lv_datum TYPE char10, lv_uzeit TYPE char10. CLEAR gt_listheader. "大标题 ls_listheader-typ = 'H'. ls_listheader-info = 'XXX学校'. APPEND ls_listheader TO gt_listheader. CLEAR ls_listheader. "中标题 ls_listheader-typ = 'S'. ls_listheader-info = '学生名单'. APPEND ls_listheader TO gt_listheader. CLEAR ls_listheader. WRITE sy-datum TO lv_datum DD/MM/YYYY. WRITE sy-uzeit TO lv_uzeit USING EDIT MASK '__:__:__'. "小标题 ls_listheader-typ = 'A'. ls_listheader-info = 'Today:' && lv_datum && 'Time:' && lv_uzeit. APPEND ls_listheader TO gt_listheader. CLEAR ls_listheader. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = gt_listheader. ENDFORM.
落霞与孤鹜齐飞,秋水共长天一色