ABAP--如何将REUSE_ALV_GRID_DISPLAY的题头自适应居中显示

来源:互联网 发布:淘宝起手反光衣 编辑:程序博客网 时间:2024/05/16 18:24

 最近有个网友的用户需要将REUSE_ALV_GRID_DISPLAY的题头居中显示,我看看了SAP的代码,发现时可以实现的。

REUSE_ALV_GRID_DISPLAY的题头原理和机制

SAP的REUSE_ALV_GRID_DISPLAY的题头实际上一个简易的HTML浏览控件的封装调用,你在服务器用cl_dd_document类的add_text方法增加的文本,SAP都会翻译成HTML语言,再发送给客户端解释展现。

cl_dd_document类的add_text方法都会先进行HTML翻译,再调用cl_dd_document类的html_insert将真正的HTML元素添加到内表。因此,我们就何以通过cl_dd_document类的html_insert将特殊的HTML写到对应内表,实现特殊的现实效果。我想原理分到到这大家都清楚,REUSE_ALV_GRID_DISPLAY的题头不但可以实现居中,还可以实现HTML的各种效果。

 

备注:REUSE_ALV_GRID_DISPLAY的脚注标题也一样可以实现各种样式

 

代码样例:(注意红色部分代码)

REPORT  ZTEST4.

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'
      is_layout                   = wa_layout
      it_fieldcat                 = it_fieldcat
      i_html_height_top      = 10
    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.
  DATA: position TYPE i.

  SEARCH document->html_table FOR document->cursor.
  IF sy-subrc eq 0.
    position = sy-tabix.
    CALL METHOD document->html_insert
      EXPORTING
        contents = '<div class=MsoNormal align=center style="text-align:center"> '
      CHANGING
        position =  position.
    CALL METHOD document->html_insert
      EXPORTING
        contents = '<span align="center" style=" font-weight:bold;">Test Company Code Data</span> </DIV>'
      CHANGING
        position = position.
  ENDIF.

  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.

  CALL METHOD document->add_icon
    exporting
      sap_icon = 'ICON_DATE'.

  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.

  CALL METHOD document->underline.   "Draw  an underLine
ENDFORM.                    "HTML_TOP_OF_PAGE

原创粉丝点击