ABAP - Function ALV 10 增加表头

  • 有些需求会要求在ALV增加表头,大概长这样 
  • REUSE_ALV_GRID_DISPLAY_LVC制造表头只需要加个传入参数I_CALLBACK_HTML_TOP_OF_PAGE并作处理就好了。
    TYPES:BEGIN OF ty_data,
            sel    TYPE char1,
            light  TYPE iconname,
            name   TYPE char10,
            score  TYPE p LENGTH 2 DECIMALS 1,
            remark TYPE c LENGTH 20,
    
          END OF ty_data.
    
    DATA gt_data TYPE TABLE OF ty_data.
    DATA gw_data TYPE ty_data.
    
    ** Layout  变量定义
    DATA gs_layout   TYPE lvc_s_layo.
    
    
    ** Fieldcat 变量定义
    DATA:gt_fieldcat TYPE lvc_t_fcat,
         gs_fieldcat LIKE LINE OF gt_fieldcat.
    
    ** FieldCat的宏
    DATA gv_pos TYPE i.
    
    DEFINE %%add_fieldcat.
      gv_pos = gv_pos + 1.
      gs_fieldcat-col_pos = gv_pos.
      gs_fieldcat-fieldname = &1.
      gs_fieldcat-scrtext_m = &2.
    
      CASE &1.
        WHEN 'SEL'.
          gs_fieldcat-checkbox = 'X'.  "当做选择框显示
          gs_fieldcat-edit     = 'X' . "该字段可以编辑
      ENDCASE.
    
      APPEND gs_fieldcat TO gt_fieldcat.CLEAR gs_fieldcat.
    END-OF-DEFINITION.
    
    START-OF-SELECTION.
    
      PERFORM get_data.
      PERFORM dis_falv.
    
    FORM get_data.
      gt_data[] = VALUE #(
                         ( sel = '' light = '' name = 'TOM'    score = '58')
                         ( sel = '' light = '' name = 'JEERY'  score = '98')
                         ( sel = '' light = '' name = 'MASTER' score = '68')
                       ).
    
      LOOP AT gt_data INTO gw_data.
        IF gw_data-score < 60.
          gw_data-light =  icon_red_light.
          gw_data-remark = '不及格'.
        ELSEIF gw_data-score >= 60 AND  gw_data-score < 85.
          gw_data-light =  ICON_yellow_LIGHT.
          gw_data-remark = '良好'.
        ELSEIF gw_data-score >= 85.
          gw_data-light =  ICON_green_LIGHT.
          gw_data-remark = '优秀'.
        ENDIF.
    
        MODIFY gt_data FROM gw_data.
      ENDLOOP.
    ENDFORM.
    
    FORM dis_falv.
    ** Fieldcat字段映射处理
      %%add_fieldcat:'SEL'      '选择',  "( 前面字段值不可变 后面字段描述可变 每一行都是)
                     'LIGHT'    '状态',
                     'REMARK'   '备注',
                     'NAME'     '姓名',
                     'SCORE'    '分数'.
    
    ** Layout布局处理
      gs_layout-cwidth_opt = 'X'.     "自动优化列宽 (可以使用**在一行代码面前注释掉 看看ALV会有什么效果)
      gs_layout-zebra = 'X'.          "斑马纹输出
    
    ** 调用FunctionALV需要传入的参数:展示数据,FieldCat,Layout,Status
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_callback_program          = sy-repid
          i_callback_pf_status_set    = 'FRM_SET_STATUS'
          i_callback_html_top_of_page = 'FRM_TOP_OF_PAGE'
          i_html_height_top           = 20  "抬头高度
          is_layout_lvc               = gs_layout
          it_fieldcat_lvc             = gt_fieldcat
        TABLES
          t_outtab                    = gt_data[]
        EXCEPTIONS
          program_error               = 1
          OTHERS                      = 2.
    ENDFORM.
    
    FORM frm_top_of_page USING cl_dd TYPE REF TO cl_dd_document.
      DATA: lv_index TYPE i.
      DATA: lv_html  TYPE string.
      DATA: lv_sum   TYPE string.
    
      lv_sum = lines( gt_data ).
      lv_html =  |<HTML><CENTER><H3>学生成绩报表</H3></CENTER></HTML>|
               & |出表人:{ sy-uname }<br/>|
               & |出表日期: { sy-datum }<br/>|
               & |报表条数:{ lv_sum }<br/> |.
    
     cl_dd->html_insert( EXPORTING
                           contents = lv_html
                         CHANGING
                           position = lv_index
                        ).
    
    ENDFORM.
    
    FORM frm_set_status USING p_extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD'.
    ENDFORM.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值