二维码

[fmalv] 在ALV Grid的Top-of-Page中,打印超过60个字符的方法

Twilight发表于 2014-07-31 16:56Twilight 最后回复于 2014-07-31 16:56 [复制链接] 4649 0

在标准的ALV grid的TOP_OF_PAGE中,我们不能显示超过60个字符的信息,这是由于FM REUSE_ALV_COMMENTARY_WRITE的限制,通常我们调用这个FM的子过程,这个子过程和TOP_OF_PAGE 事件有关联。
  1. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  2.   EXPORTING
  3.    it_list_commentary       =
  4.    i_logo                   =
  5.    i_end_of_list_grid       =
  6.           .
复制代码

在上面FM, exporting parameter ‘IT_LIST_COMMENTARY’ 包含一个‘INFO’ 字段,该字段最多只能存储60个字符,他会在alv的TOP_OF_PAGE区域显示。

解决方案:
为了克服这个限制,我们使用实例化类CL_DD_DOCUMENT得到的dynamic document实现,因为我们用 HTML viewer control 替代TOP_OF_PAGE事件,所以要在HTML_TOP_OF_PAGE参数里配置。

程序代码:
  1. DATA:it_sflight TYPE TABLE OF sflight WITH HEADER LINE.

  2. SELECT *
  3. UP TO 200 ROWS
  4. INTO TABLE it_sflight
  5. FROM sflight.

  6. * Display ALV grid
  7. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  8.   EXPORTING
  9.     i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
  10.     i_callback_program          = sy-repid
  11.     i_structure_name            = 'SFLIGHT'
  12.   TABLES
  13.     t_outtab                    = IT_SFLIGHT.

  14. *-----------------------------------------------------------------*
  15. *       FORM html_top_of_page                                     *
  16. *-----------------------------------------------------------------*
  17. FORM html_top_of_page USING top TYPE REF TO cl_dd_document.
  18.   DATA: l_text(255) TYPE c.
  19.   DO 180 TIMES.
  20.     l_text+sy-index(1) = '*'.
  21.   ENDDO.
  22.   CALL METHOD top->add_text
  23.     EXPORTING
  24.       text          = 'Hello world'
  25. *    text_table    =
  26. *    fix_lines     =
  27.       sap_style     = 'heading'
  28. *    sap_color     =
  29. *    sap_fontsize  =
  30. *    sap_fontstyle =
  31. *    sap_emphasis  =
  32. *    style_class   =
  33. *  CHANGING
  34. *    document      =
  35.       .
  36.   CALL METHOD top->add_gap
  37.     EXPORTING
  38.       width      = 200
  39. *    width_like =
  40.       .
  41.   CALL METHOD top->add_picture
  42.     EXPORTING
  43.       picture_id       = 'ENJOYSAP_LOGO'
  44. *    width            =
  45. *    alternative_text =
  46. *    tabindex         =
  47.       .
  48.   CALL METHOD top->new_line
  49. *  EXPORTING
  50. *    repeat =
  51.       .
  52.   CALL METHOD top->add_text
  53.     EXPORTING
  54.       text          = l_text
  55. *    text_table    =
  56. *    fix_lines     =
  57. *    sap_style     =
  58. *    sap_color     =
  59. *    sap_fontsize  =
  60. *    sap_fontstyle =
  61. *    sap_emphasis  =
  62. *    style_class   =
  63. *  CHANGING
  64. *    document      =
  65.       .
  66. ENDFORM.                    "html_top_of_page
复制代码

效果:
Top-of-Page.png
局限性:
因为dynamic documents 使用sap html viewer内部控制,所以无论存在什么限制,这个限制也会对dynamic documents 起作用
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表