实现ALV页眉页脚

这篇具有很好参考价值的文章主要介绍了实现ALV页眉页脚。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、文档介绍

在ALV中,可以通过增加页眉和页脚,丰富ALV的展示。除了基本的页眉和页脚,还可以通过插入HTML代码的方式展示更加丰富的页眉和页脚,本篇文章将介绍ALV和OOALV中页眉页脚的使用。

2、ALV页眉页脚

效果如下

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

2.1、显示内容

页眉和页脚,都通过函数REUSE_ALV_COMMENTARY_WRITE显示内容。

页眉

"--------------------@斌将军--------------------
FORM FRM_TOP_OF_PAGE .

  DATA:lt_listheader TYPE slis_t_listheader,
       ls_listheader TYPE slis_listheader.

  CLEAR:ls_listheader.
  ls_listheader-typ  = 'H'."标题
  ls_listheader-info = '页眉'.
  APPEND ls_listheader TO lt_listheader.

  CLEAR ls_listheader.
  ls_listheader-typ  = 'S'.
  ls_listheader-key  = '编制单位:'.
  ls_listheader-info = '1100'.
  APPEND ls_listheader TO lt_listheader.

  CLEAR ls_listheader.
  ls_listheader-typ  = 'S'.
  ls_listheader-info = '1200'.
  APPEND ls_listheader TO lt_listheader.

  CLEAR ls_listheader.
  ls_listheader-typ  = 'A'.
  ls_listheader-info = '单位:元'.
  APPEND ls_listheader TO lt_listheader.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_listheader "显示的数据
      i_logo             = 'ENJOYSAP_LOGO' "显示的图片LOGO
*     I_END_OF_LIST_GRID =
*     I_ALV_FORM         =
    .
ENDFORM. " FRM_TOP_OF_PAGE
"--------------------@斌将军--------------------

页脚

"--------------------@斌将军--------------------
FORM FRM_END_OF_LIST .

  DATA:lt_listheader TYPE slis_t_listheader,
       ls_listheader TYPE slis_listheader.

  CLEAR:ls_listheader.
  ls_listheader-typ  = 'H'.
  ls_listheader-info = '页脚'.
  APPEND ls_listheader TO lt_listheader.

  CLEAR ls_listheader.
  ls_listheader-typ  = 'S'.
  ls_listheader-key  = '作者:'.
  ls_listheader-info = '斌将军'.
  APPEND ls_listheader TO lt_listheader.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_listheader
      i_logo             = 'ENJOYSAP_LOGO'
*     I_END_OF_LIST_GRID =
*     I_ALV_FORM         =
    .
ENDFORM. " FRM_END_OF_LIST
"--------------------@斌将军--------------------

 其中的LOGO,可以通过事务代码OAER,输入对应信息

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

 找到对应LOGO

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

2.2、ALV事件方式实现

实现页眉和页脚,都可以通过注册ALV事件EVENT,调用对应的子例程,显示对应内容

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

 事件代码

"--------------------@斌将军--------------------

DATA:gt_event TYPE slis_t_event."事件


FORM frm_get_event.

  DATA:lv_frm_top_of_page TYPE slis_formname VALUE 'FRM_TOP_OF_PAGE',"页眉子例程
       lv_frm_end_of_list TYPE slis_formname VALUE 'FRM_END_OF_LIST',"页脚子例程
       ls_events          TYPE slis_alv_event.

  "获取事件
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 0
    IMPORTING
      et_events       = gt_event
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty
        NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  "查找TOP_OF_PAGE事件,并将回调子例程传输给FORM
  READ TABLE gt_event ASSIGNING FIELD-SYMBOL(<fs_ls_event>) WITH KEY name = slis_ev_top_of_page.
  IF sy-subrc = 0.
    <fs_ls_event>-form = lv_frm_top_of_page.
  ELSE.
    CLEAR:ls_events.
    ls_events-form = lv_frm_top_of_page.
    ls_events-name = lv_frm_top_of_page.
    APPEND ls_events TO gt_event.
  ENDIF.

  "查找END_OF_LIST事件,并将回调子例程传输给FORM
  READ TABLE gt_event ASSIGNING <fs_ls_event> WITH KEY name = slis_ev_end_of_list.
  IF sy-subrc = 0.
    <fs_ls_event>-form = lv_frm_end_of_list.
  ELSE.
    CLEAR:ls_events.
    ls_events-form = lv_frm_end_of_list.
    ls_events-name = lv_frm_end_of_list.
    APPEND ls_events TO gt_event.
  ENDIF.

ENDFORM. " FRM_GET_EVENT
"--------------------@斌将军--------------------

在调用ALV时,传入EVENT

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

2.3、ALV参数实现页眉

如果单独实现页眉效果,就不需要这么复杂,可以直接将页眉子例程传入ALV函数REUSE_ALV_GRID_DISPLAY_LVC的I_CALLBACK_TOP_OF_PAGE参数中,调用子例程

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

3、ALV展示HTML页眉页脚

效果如下

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

ALV

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

页眉和页脚的子例程代码类似

"--------------------@斌将军--------------------
FORM frm_html_top_of_page USING document TYPE REF TO cl_dd_document.

  DATA:lv_pos    TYPE i,
       lv_text   TYPE sdydo_text_element,
       lv_buffer TYPE string.

  lv_buffer = '<HTML><CENTER><H1>' && '页眉' && '</H1></CENTER></HTML>'.

  CALL METHOD document->html_insert
    EXPORTING
      contents = lv_buffer
    CHANGING
      position = lv_pos.

  lv_text = '标题'.
  CALL METHOD document->add_text
    EXPORTING
      text      = lv_text
      sap_style = 'HEADING'.

  "插入两行空行
  CALL METHOD document->new_line.

  CALL METHOD document->add_icon
    EXPORTING
      sap_icon = 'ICON_CUSTOMER'.

  "STRONG是加粗
  lv_text = '用户名:'.
  CALL METHOD document->add_text
    EXPORTING
      text         = lv_text
      sap_emphasis = 'Strong'.

  "间隔
  CALL METHOD document->add_gap
    EXPORTING
      width = 2.

  lv_text = '斌将军'.
  CALL METHOD document->add_text
    EXPORTING
      text          = lv_text
      sap_fontsize  = cl_dd_document=>large
      sap_fontstyle = cl_dd_document=>serif
      sap_emphasis  = cl_dd_document=>emphasis.

  "间隔
  CALL METHOD document->add_gap
    EXPORTING
      width = 10.

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

  lv_text = '日期:'.
  CALL METHOD document->add_text
    EXPORTING
      text         = lv_text
      sap_emphasis = 'Strong'.

  CALL METHOD document->add_gap
    EXPORTING
      width = 2.

  lv_text = '20240420'.
  CALL METHOD document->add_text
    EXPORTING
      text      = lv_text
      sap_style = 'Key'.

  CALL METHOD document->add_gap
    EXPORTING
      width = 10.

  CALL METHOD document->add_icon
    EXPORTING
      sap_icon = 'ICON_INFORMATION'.

  lv_text = '链接:'.
  CALL METHOD document->add_text
    EXPORTING
      text         = lv_text
      sap_emphasis = 'Strong'.

  CALL METHOD document->add_link
    EXPORTING
      url     = 'http://www.baidu.com'
      tooltip = '百度' "小手指的提示信息
      text    = 'Baidu'.

  "横线
  CALL METHOD document->underline.

ENDFORM.                    "HTML_TOP_OF_PAGE
"--------------------@斌将军--------------------

4、OOALV页眉页脚

效果如下

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV

首先,如上图将界面分为上、中、下三部分。关于屏幕分割,也可以参考《OOALV 分割屏幕 》

"--------------------@斌将军--------------------
*&---------------------------------------------------------------------*
*&      Form  FRM_CREATE_CONTAINER_9000
*&      创建容器
*&---------------------------------------------------------------------*
FORM frm_create_container_9000.

  "创建 容器
  CREATE OBJECT g_container_9000
    EXPORTING
      repid                       = sy-repid
      dynnr                       = '9000'
      side                        = cl_gui_docking_container=>dock_at_top "ALV贴屏幕左边,从左边算屏幕宽度,
      extension                   = 1000"屏幕宽度
      style                       = cl_gui_control=>ws_child "可选参数,设置ALV是否可用手动拖动大小
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      OTHERS                      = 6.

  IF sy-subrc <> 0.
    MESSAGE s001(00) WITH '屏幕初始化失败'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  "拆分成3行1列部分
  CREATE OBJECT g_splitter
    EXPORTING
      parent  = g_container_9000
      rows    = 3
      columns = 1.

  "第一行第一列  "用作页眉
  CALL METHOD g_splitter->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = g_container_t.

  CALL METHOD g_splitter->set_row_height   "设置行高
    EXPORTING
      id     = 1        "第几行
      height = 20.

  "第二行第一列 用作展示主要数据
  CALL METHOD g_splitter->get_container
    EXPORTING
      row       = 2
      column    = 1
    RECEIVING
      container = g_container_m.

  "第三行第一列   "用作页脚
  CALL METHOD g_splitter->get_container
    EXPORTING
      row       = 3
      column    = 1
    RECEIVING
      container = g_container_e.

  CALL METHOD g_splitter->set_row_height   "设置行高
    EXPORTING
      id     = 3        "第几行
      height = 20.

  CREATE OBJECT g_grid "中间部分为展示主数据
    EXPORTING
      i_parent = g_container_m.
ENDFORM.
"--------------------@斌将军--------------------

定义类和方法,实现页眉和页脚

"--------------------@斌将军-------------------- 
 CLASS alv_event_9000 DEFINITION DEFERRED."

CLASS alv_event_9000 DEFINITION.

  PUBLIC SECTION.
    METHODS handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid
      IMPORTING e_dyndoc_id.
    METHODS handle_end_of_list FOR EVENT end_of_list OF cl_gui_alv_grid
      IMPORTING e_dyndoc_id.
ENDCLASS. "alv_event_9000 DEFINITION

*----------------------------------------------------------------------*
*   CLASS BELOW_ALV_EVENT IMPLEMENTATION 定义的事件类对应的事件响应模块
*----------------------------------------------------------------------*
CLASS alv_event_9000 IMPLEMENTATION.

  METHOD handle_top_of_page.
    PERFORM frm_event_top_of_page USING g_dyndoc_t.
  ENDMETHOD.

  METHOD handle_end_of_list.
    PERFORM frm_event_end_of_list USING g_dyndoc_e.
  ENDMETHOD.

ENDCLASS. "alv_event_9000 IMPLEMENTATION
"--------------------@斌将军--------------------

在事件中注册页眉和页脚方法

"--------------------@斌将军--------------------
FORM frm_alv_event_9000.
  DATA: lr_event_handler TYPE REF TO alv_event_9000.

  IF lr_event_handler IS INITIAL.
    CREATE OBJECT lr_event_handler.
  ENDIF.

  SET HANDLER lr_event_handler->handle_top_of_page FOR g_grid.
  SET HANDLER lr_event_handler->handle_end_of_list FOR g_grid.

ENDFORM.
"--------------------@斌将军--------------------

显示ALV

"--------------------@斌将军--------------------
CALL METHOD g_grid->set_table_for_first_display
    EXPORTING
      i_save                        = 'A'
      i_default                     = 'X' "允许定义默认布局
      is_layout                     = gs_layout
    CHANGING
      it_outtab                     = gt_alv
      it_fieldcatalog               = gt_fieldcat
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.
  IF sy-subrc <> 0.
  ENDIF.

  CREATE OBJECT g_dyndoc_t
    EXPORTING
      style = 'ALV_GRID'.
*  CALL METHOD g_dyndoc_t->initialize_document
*    EXPORTING
*      background_color = cl_dd_area=>col_textarea.
  "对于页眉使用TOP_OF_PAGE事件
  CALL METHOD g_grid->list_processing_events
    EXPORTING
      i_event_name = 'TOP_OF_PAGE'
      i_dyndoc_id  = g_dyndoc_t.

  CREATE OBJECT g_dyndoc_e
    EXPORTING
      style = 'ALV_GRID'.
  "对于页脚使用END_OF_LIST事件
  CALL METHOD g_grid->list_processing_events
    EXPORTING
      i_event_name = 'END_OF_LIST'
      i_dyndoc_id  = g_dyndoc_e.
"--------------------@斌将军--------------------

页眉和页脚的子例程类似,页脚子例程如下

"--------------------@斌将军--------------------
FORM frm_event_end_of_list USING document TYPE REF TO cl_dd_document.
  DATA:lv_pos    TYPE i,
       lv_text   TYPE sdydo_text_element,
       lv_buffer TYPE string.

  lv_buffer = '<HTML><CENTER><H1>' && '页脚' && '</H1></CENTER></HTML>'.

  CALL METHOD document->html_insert
    EXPORTING
      contents = lv_buffer
    CHANGING
      position = lv_pos.

  "页脚HTML视图
  IF g_html_e IS INITIAL.
    CREATE OBJECT g_html_e
      EXPORTING
        parent = g_container_e.
  ENDIF.
  CALL METHOD document->merge_document.
  document->html_control = g_html_e.

  "显示
  CALL METHOD document->display_document
    EXPORTING
      reuse_control      = 'X'
      parent             = g_container_e
    EXCEPTIONS
      html_display_error = 1.
ENDFORM.
"--------------------@斌将军--------------------

参考代码,可通过链接获取

链接:https://pan.baidu.com/s/18bNmfmC9zSh1Si8W6AhQCQ?pwd=c0oj
提取码:c0oj

5、总结

以上就是关于ALV合并单元格的介绍,希望对您有所帮助。

定期更文,欢迎关注

实现ALV页眉页脚,ABAP,ABAP,页眉页脚,ALV文章来源地址https://www.toymoban.com/news/detail-857444.html

到了这里,关于实现ALV页眉页脚的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP,ABAP:ALV变式复制

    应用场景:程序优化,需要新开一个程序优化,优化完成后原程序ALV变式无法带到新的程序, ALV变式是很好用的功能 REPORT zbsc. 事务代码:ZBSC-ALV变式复制 程序名称:ZBSC-ALV变式复制 程序目的: ZBSC-ALV变式复制 开发人员: *(修改日志)----------------------------------------------------

    2024年02月09日
    浏览(45)
  • SAP_ABAP_MM_安全库存_设计方案+实现代码(MARD_MBEW )_ALV_行列控制动态编辑

    SAP ABAP 顾问(开发工程师)能力模型-CSDN博客 文章浏览阅读959次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料! https://blog.csdn.net/java_zhong1990/article/details/132469977 目标: 从工厂、库存地点、物料层面,设置库存的范围,

    2024年04月17日
    浏览(46)
  • Python处理PDF:在PDF文档中插入页眉和页脚

    在处理篇幅较长、结构复杂的PDF文档时,页眉和页脚的设计与插入就显得尤为重要。它们不仅扮演着美化文档、提升专业度的角色,更承担了导航指引、信息标注的重要功能。 页眉通常用于展示文档的标题或章节名称,有助于读者在翻阅过程中迅速定位所处位置,对文档的整

    2024年04月16日
    浏览(48)
  • 使用FreeMarker生成word文件自定义每页页眉或页脚

    最新工作中遇到生成word中表格时,要求文档中每页头部和底部都是固定格式的表格,但是内容不一样,头部信息在word中画样式的时候就可以设置为“在各页顶端以标题形式重复出现”,而底部就没有办法这样设置了,之后就想着在眉脚中设置相应的样式就可以啦,但是发现

    2024年02月16日
    浏览(92)
  • 开源Word文字替换小工具更新 增加文档页眉和页脚替换功能

    ITGeeker技术奇客发布的开源Word文字替换小工具更新到v1.0.1.0版本啦,现已支持Office Word文档页眉和页脚的替换。 同时ITGeeker技术奇客修复了v1.0.0.0版本因替换数字引起的in ‘ requires string as left operand, not int错误。 开源Word文字替换小工具官方介绍页面:https://www.itgeeker.net/itgeeke

    2024年02月11日
    浏览(43)
  • 【CSS 20】website layout 网站布局 页眉 导航栏 列布局 不相等栏 页脚

    website layout 网站布局 header 页眉 页眉(header)通常位于网站顶部(或顶部导航菜单的正下方) 通常包含徽标(logo)或网站名称 navbar 导航栏 导航栏包含链接列表,以帮助访问者浏览您的网站 内容 使用哪种布局通常取决于您的目标用户 最常见的布局是以下布局之一(或将它

    2024年02月13日
    浏览(84)
  • itextpdf7 使用之 html转pdf,生成目录可跳转、添加页眉页脚

    最近有个需求,生成信用报告。 需求: 1、生成pdf有页眉页脚 2、生成目录 3、目录加锚点可跳转。 难点: 1、生成的目录不能实时读取页码 2、目录是后生成的,属于两份pdf拼接的,不能添加锚点跳转 思路: 1、freemaker进行html页面布局及动态变量替换 2、生成一份pdf文档,用

    2024年02月20日
    浏览(38)
  • ALV 数值文本 转换为 金额属性

    ALV 数值文本 转换为 金额属性 只需给LVC_S_FCAT参数datatype赋值‘CURR’ gs_fcat-datatype = ‘CURR’.

    2024年02月15日
    浏览(29)
  • SAP ALV 点击单元格跳转事务代码

    实现效果:销售订单明细表,双击单元格进入 va03 事务代码 2.用户处理命令方法如下: 3.调用bdc SAP BDC 录屏及 ABAP 调用 BDC 参见此链接

    2024年02月16日
    浏览(33)
  • word页脚设置,页脚显示第几页共有几页设置步骤

    word页脚设置,页脚显示第几页共有几页设置步骤:  具体步骤: 步骤1: 步骤1.1选择页脚---空白页脚 步骤1.2,在\\\"[在此处键入]\\\",直接输入你需要的格式,如  “第页/共页”   步骤1.3选择第“”“”页中间的位置,选择“文档部件”---“域”    在类别中选择编号,在域名

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包