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.

 

posted @ 2018-04-16 20:55  鲸与海  阅读(820)  评论(0编辑  收藏  举报