Function ALV 简单实现HTML抬头的方法 网上转载的稍微加了一点修改内容

HTML的表头虽然比较方便,还可以设置高度,但是打印预览不显示表头,且导出到EXCEL,WORD,HTML都没有表头的.
  
  REPORT Z_BARRY_ALV_HEADER .
  TABLES : t001.
  TYPE-POOLS: slis.
  DATA : w_repid LIKE sy-repid.
  TYPES : BEGIN OF ty_comp.
  INCLUDE STRUCTURE t001.
  TYPES : END OF ty_comp.
  DATA: wa_layout TYPE slis_layout_alv.
  DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
  wa_fieldcat TYPE slis_fieldcat_alv.
  DATA : it_comp TYPE TABLE OF ty_comp.
  INITIALIZATION.
  w_repid = sy-repid.
  START-OF-SELECTION.
  SELECT * FROM t001 INTO TABLE it_comp.
  END-OF-SELECTION.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
  i_program_name = w_repid
  i_internal_tabname = 'IT_COMP'
  I_STRUCTURE_NAME = 'T001'
  i_inclname = w_repid
  CHANGING
  ct_fieldcat = it_fieldcat[]
  EXCEPTIONS
  inconsistent_interface = 1
  program_error = 2
  OTHERS = 3.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
  i_callback_program = w_repid
  i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'

      i_html_height_top= 20.                   "这句话加上表头的高度,要不然会自动出现滚动条 

  is_layout = wa_layout
  it_fieldcat = it_fieldcat

  TABLES
  t_outtab = it_comp
  EXCEPTIONS
  program_error = 1
  OTHERS = 2.
  *&---------------------------------------------------------------------*
  *& Form html_top_of_page
  *&---------------------------------------------------------------------*
  FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
  DATA: text TYPE sdydo_text_element.
  text = 'Company Code Data'.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_style = 'HEADING'.
  CALL METHOD document->new_line.
  CALL METHOD document->new_line.
  text = 'User Name : '.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_emphasis = 'Strong'.
  CALL METHOD document->add_gap
  EXPORTING
  width = 2.
  text = sy-uname.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_style = 'Key'.
  CALL METHOD document->add_gap
  EXPORTING
  width = 10.
  text = 'Date : '.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_emphasis = 'Strong'.
  CALL METHOD document->add_gap
  EXPORTING
  width = 2.
  text = sy-datum.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_style = 'Key'.
  CALL METHOD document->add_gap
  EXPORTING
  width = 10.
  text = 'Time : '.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_emphasis = 'Strong'.
  CALL METHOD document->add_gap
  EXPORTING
  width = 2.
  text = sy-uzeit.
  CALL METHOD document->add_text
  EXPORTING
  text = text
  sap_style = 'Key'.
  CALL METHOD document->new_line.
  ENDFORM. "HTML_TOP_OF_PAGE
  
  
  方法二:
  REPORT z_barry_alv_toolbar .
  CONSTANTS: gc_grid_title(20) TYPE c VALUE '带自定义工具栏的ALV GRID模版'.
  TYPE-POOLS: slis.
  DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
  DATA: sla TYPE slis_layout_alv ,
  ivariant LIKE disvariant,
  i_repid LIKE sy-repid .
  DATA : gt_events TYPE slis_t_event.
  DATA: itab_event TYPE slis_t_event,
  fld_event TYPE slis_alv_event,
  fld_head TYPE slis_listheader,
  itab_listhead TYPE slis_t_listheader.
  DATA: BEGIN OF itab OCCURS 0,
  f(10) TYPE c,
  END OF itab.
  *PARAMETERS: P_ .
  *SELECT-OPTIONS: S_ .
  START-OF-SELECTION.
  PERFORM getdata.
  PERFORM fixdata.
  PERFORM outdata.
  *&---------------------------------------------------------------------*
  *& Form GETDATA
  *&---------------------------------------------------------------------*
  FORM getdata.
  itab-f = 'Test data'.
  APPEND itab.
  ENDFORM. " GETDATA
  *&---------------------------------------------------------------------*
  *& Form FIXDATA
  *&---------------------------------------------------------------------*
  FORM fixdata.
  ENDFORM. " FIXDATA
  *&---------------------------------------------------------------------*
  *& Form outdata
  *&---------------------------------------------------------------------*
  FORM outdata.
  PERFORM fieldcat_init .
  sla-colwidth_optimize = 'X'.
  sla-zebra = 'X'.
  i_repid = sy-repid.
  SET TITLEBAR '100' WITH gc_grid_title.
  PERFORM frm_alv_header.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
  i_callback_program = i_repid
  it_fieldcat = gd_fieldcat[]
  i_save = 'A'
  is_variant = ivariant
  is_layout = sla
  i_callback_user_command = 'USER_COMMAND'
  i_callback_pf_status_set = 'SET_STATUS'
  it_events = gt_events
  TABLES
  t_outtab = itab[].
  ENDFORM. " outdata
  *---------------------------------------------------------------------*
  * FORM fieldcat_init *
  *---------------------------------------------------------------------*
  FORM fieldcat_init .
  PERFORM frm_catlg_set USING: 'F' 'Test Filed' .
  ENDFORM. "fieldcat_init
  *---------------------------------------------------------------------*
  * FORM frm_catlg_set *
  *---------------------------------------------------------------------*
  FORM frm_catlg_set USING p_field
  p_text.
  DATA: ls_fieldcat TYPE slis_fieldcat_alv.
  ls_fieldcat-fieldname = p_field.
  ls_fieldcat-seltext_l = p_text.
  APPEND ls_fieldcat TO gd_fieldcat .
  CLEAR ls_fieldcat .
  ENDFORM. "frm_catlg_set
  *&--------------------------------------------------------------------*
  *& Form user_command
  *&--------------------------------------------------------------------*
  FORM user_command USING r_ucomm LIKE sy-ucomm
  rs_selfield TYPE slis_selfield.
  READ TABLE itab INDEX rs_selfield-tabindex.
  CASE r_ucomm.
  WHEN '&IC1'. "双击
  WHEN 'EXIT'.
  LEAVE PROGRAM.
  ENDCASE.
  ENDFORM. "user_com
  *&--------------------------------------------------------------------*
  *& Form set_status
  *&--------------------------------------------------------------------*
  FORM set_status USING rt_extab TYPE slis_t_extab.
  CLEAR rt_extab.
  REFRESH rt_extab.
  * APPEND '&ALL' TO rt_extab .
  * APPEND '&SAL' TO rt_extab .
  SET PF-STATUS 'STANDARD' EXCLUDING rt_extab . "copy from "SAPLKKBL" STANDARD GUI status
  ENDFORM. "set_status
  **********************************************
  FORM frm_alv_header.
  *Title
  fld_head-typ = 'H'.
  fld_head-info = 'HEIHEI'.
  APPEND fld_head TO itab_listhead.
  CLEAR fld_head.
  *PROGRAM ID:
  fld_head-typ = 'S'.
  fld_head-key = 'KEY'.
  fld_head-info = 'INFO '.
  APPEND fld_head TO itab_listhead.
  CLEAR fld_head.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
  EXPORTING
  i_list_type = 0
  IMPORTING
  et_events = gt_events
  EXCEPTIONS
  list_type_wrong = 1.
  IF sy-subrc <>0.
  MESSAGE 'ERROR' TYPE 'E' .
  ENDIF.
  READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
  INTO fld_event.
  IF sy-subrc = 0.
  fld_event-form = 'FRM_TOP_OF_PAGE'.
  APPEND fld_event TO gt_events .
  ENDIF.
  ENDFORM. " FRM_ALV_HEADER
  *&--------------------------------------------------------------------*
  *& Form FRM_TOP_OF_PAGE
  *&--------------------------------------------------------------------*
  * text
  *---------------------------------------------------------------------*
  FORM frm_top_of_page.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
  it_list_commentary = itab_listhead
  i_logo = 'TEST_BTZ' "SE78
  i_end_of_list_grid = '.
  ENDFORM. " FRM_TOP_OF_PAGE

本文转自
http://blog.chinaunix.net/u1/40527/showart_441167.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值