实现ALV页眉页脚

1、文档介绍

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

2、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'EXPORTINGit_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'EXPORTINGit_list_commentary = lt_listheaderi_logo             = 'ENJOYSAP_LOGO'
*     I_END_OF_LIST_GRID =
*     I_ALV_FORM         =.
ENDFORM. " FRM_END_OF_LIST
"--------------------@斌将军--------------------

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

 找到对应LOGO

2.2、ALV事件方式实现

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

 事件代码

"--------------------@斌将军--------------------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'EXPORTINGi_list_type     = 0IMPORTINGet_events       = gt_eventEXCEPTIONSlist_type_wrong = 1OTHERS          = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF."查找TOP_OF_PAGE事件,并将回调子例程传输给FORMREAD 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事件,并将回调子例程传输给FORMREAD 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

2.3、ALV参数实现页眉

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

3、ALV展示HTML页眉页脚

效果如下

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_insertEXPORTINGcontents = lv_bufferCHANGINGposition = lv_pos.lv_text = '标题'.CALL METHOD document->add_textEXPORTINGtext      = lv_textsap_style = 'HEADING'."插入两行空行CALL METHOD document->new_line.CALL METHOD document->add_iconEXPORTINGsap_icon = 'ICON_CUSTOMER'."STRONG是加粗lv_text = '用户名:'.CALL METHOD document->add_textEXPORTINGtext         = lv_textsap_emphasis = 'Strong'."间隔CALL METHOD document->add_gapEXPORTINGwidth = 2.lv_text = '斌将军'.CALL METHOD document->add_textEXPORTINGtext          = lv_textsap_fontsize  = cl_dd_document=>largesap_fontstyle = cl_dd_document=>serifsap_emphasis  = cl_dd_document=>emphasis."间隔CALL METHOD document->add_gapEXPORTINGwidth = 10.CALL METHOD document->add_iconEXPORTINGsap_icon = 'ICON_DATE'.lv_text = '日期:'.CALL METHOD document->add_textEXPORTINGtext         = lv_textsap_emphasis = 'Strong'.CALL METHOD document->add_gapEXPORTINGwidth = 2.lv_text = '20240420'.CALL METHOD document->add_textEXPORTINGtext      = lv_textsap_style = 'Key'.CALL METHOD document->add_gapEXPORTINGwidth = 10.CALL METHOD document->add_iconEXPORTINGsap_icon = 'ICON_INFORMATION'.lv_text = '链接:'.CALL METHOD document->add_textEXPORTINGtext         = lv_textsap_emphasis = 'Strong'.CALL METHOD document->add_linkEXPORTINGurl     = 'http://www.baidu.com'tooltip = '百度' "小手指的提示信息text    = 'Baidu'."横线CALL METHOD document->underline.ENDFORM.                    "HTML_TOP_OF_PAGE
"--------------------@斌将军--------------------

4、OOALV页眉页脚

效果如下

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

"--------------------@斌将军--------------------
*&---------------------------------------------------------------------*
*&      Form  FRM_CREATE_CONTAINER_9000
*&      创建容器
*&---------------------------------------------------------------------*
FORM frm_create_container_9000."创建 容器CREATE OBJECT g_container_9000EXPORTINGrepid                       = sy-repiddynnr                       = '9000'side                        = cl_gui_docking_container=>dock_at_top "ALV贴屏幕左边,从左边算屏幕宽度,extension                   = 1000"屏幕宽度style                       = cl_gui_control=>ws_child "可选参数,设置ALV是否可用手动拖动大小EXCEPTIONScntl_error                  = 1cntl_system_error           = 2create_error                = 3lifetime_error              = 4lifetime_dynpro_dynpro_link = 5OTHERS                      = 6.IF sy-subrc <> 0.MESSAGE s001(00) WITH '屏幕初始化失败'.LEAVE LIST-PROCESSING.ENDIF."拆分成3行1列部分CREATE OBJECT g_splitterEXPORTINGparent  = g_container_9000rows    = 3columns = 1."第一行第一列  "用作页眉CALL METHOD g_splitter->get_containerEXPORTINGrow       = 1column    = 1RECEIVINGcontainer = g_container_t.CALL METHOD g_splitter->set_row_height   "设置行高EXPORTINGid     = 1        "第几行height = 20."第二行第一列 用作展示主要数据CALL METHOD g_splitter->get_containerEXPORTINGrow       = 2column    = 1RECEIVINGcontainer = g_container_m."第三行第一列   "用作页脚CALL METHOD g_splitter->get_containerEXPORTINGrow       = 3column    = 1RECEIVINGcontainer = g_container_e.CALL METHOD g_splitter->set_row_height   "设置行高EXPORTINGid     = 3        "第几行height = 20.CREATE OBJECT g_grid "中间部分为展示主数据EXPORTINGi_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_gridIMPORTING e_dyndoc_id.METHODS handle_end_of_list FOR EVENT end_of_list OF cl_gui_alv_gridIMPORTING 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_displayEXPORTINGi_save                        = 'A'i_default                     = 'X' "允许定义默认布局is_layout                     = gs_layoutCHANGINGit_outtab                     = gt_alvit_fieldcatalog               = gt_fieldcatEXCEPTIONSinvalid_parameter_combination = 1program_error                 = 2too_many_lines                = 3OTHERS                        = 4.IF sy-subrc <> 0.ENDIF.CREATE OBJECT g_dyndoc_tEXPORTINGstyle = '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_eventsEXPORTINGi_event_name = 'TOP_OF_PAGE'i_dyndoc_id  = g_dyndoc_t.CREATE OBJECT g_dyndoc_eEXPORTINGstyle = 'ALV_GRID'."对于页脚使用END_OF_LIST事件CALL METHOD g_grid->list_processing_eventsEXPORTINGi_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_insertEXPORTINGcontents = lv_bufferCHANGINGposition = lv_pos."页脚HTML视图IF g_html_e IS INITIAL.CREATE OBJECT g_html_eEXPORTINGparent = g_container_e.ENDIF.CALL METHOD document->merge_document.document->html_control = g_html_e."显示CALL METHOD document->display_documentEXPORTINGreuse_control      = 'X'parent             = g_container_eEXCEPTIONShtml_display_error = 1.
ENDFORM.
"--------------------@斌将军--------------------

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

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

5、总结

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

定期更文,欢迎关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

长图高效切割新体验:支持按随机宽度灵活裁切,释放无限创意与效率

图像的传播已经成为我们日常生活的一部分。而长图&#xff0c;作为一种特殊的图像形式&#xff0c;其独特的展示方式能够吸引更多的目光。但是&#xff0c;如何将长图高效切割&#xff0c;以展现其独特的魅力呢&#xff1f;现在&#xff0c;我们为您带来了一款支持按随机宽度切…

怎么找回录音文件?这4个方法实用又简单!

“我有一份比较重要的录音文件保存在电脑上了&#xff0c;不知道是因为误删还是什么原因&#xff0c;这个文件丢失了&#xff0c;我现在有什么比较好的方法可以找回这个文件吗&#xff1f;” 录音文件是我们日常生活中经常使用的文件类型&#xff0c;无论是会议记录、学习笔记还…

论机器学习(ML)在网络安全中的重要性

机器学习是什么&#xff1f; 机器学习(ML)是人工智能的一个分支&#xff0c;它使用算法来使计算机系统能够自动地从数据和经验中进行学习&#xff0c;并改进其性能&#xff0c;而无需进行明确的编程。机器学习涉及对大量数据的分析&#xff0c;通过识别数据中的模式来做出预测…

MySQL/MariaDB 如何查看当前的用户

MySQL 的所有数据库用户信息是存储在 user 数据表中的。 可以在登录成功数据后运行 SQL&#xff1a; MariaDB [(none)]> select user,host from user;就可以查看到数据中的所有用户信息。 MariaDB [(none)]> select user,host from user; ERROR 1046 (3D000): No databa…

数据集笔记:geolife staypoint聚合的location 最近的10个其他location

数据集&#xff1a;处理geolife数据-CSDN博客 这边的stations&#xff0c;找到每个station 最近的其他10个station 1 读取数据 假设已经读完了&#xff0c;就是locations 2 保留有用的列 locations.drop([center,user_id],axis1,inplaceTrue) locations 3 加载几何形状 使用…

27 - 数据传送指令

---- 整理自B站UP主 踌躇月光 的视频 文章目录 1. CPU 电路2. 数据传送指令的几种情况3. 实验工程4. 实验结果 1. CPU 电路 2. 数据传送指令的几种情况 # program.asm; 1. ; MOV A, 5;; 2. ; MOV A, B;; 3. ; MOV A, [5];; 4. ; MOV B, 6 ; MOV A, [B]; 5. ; MOV [0x2f], 5;; …

Zynq 7000 系列中成功执行BootROM的条件

Zynq 7000设备的启动需要正确的电压序列和I/O引脚控制。BootROM的流程由复位类型、启动模式引脚设置以及启动映像来控制。BootROM对所选启动设备的引脚连接有特定的要求。 Zynq 7000 SoC设备具有电源、时钟和复位要求&#xff0c;这些要求必须得到满足&#xff0c;才能成功执行…

每日OJ题_DFS回溯剪枝⑦_力扣77. 组合

目录 力扣77. 组合 解析代码 力扣77. 组合 77. 组合 难度 中等 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,…

Oracle集群-常用查询及操作(工作日常整理)

1.Oracle集群状态 select * from gv$instance; 示例结果&#xff1a; 2.Oracle集群-增大表空间 常见问题&#xff1a; 导入时或使用时&#xff0c;提示无法extend table ,增加表空间即可 常用操作&#xff1a; 1&#xff09;查询表空间 select * from dba_tablespaces; --…

数据结构——二叉树的顺序存储(堆)(C++实现)

数据结构——二叉树的顺序存储&#xff08;堆&#xff09;&#xff08;C实现&#xff09; 二叉树可以顺序存储的前提堆的定义堆的分类大根堆小根堆 整体结构把握两种调整算法向上调整算法递归版本 非递归版本向下调整算法非递归版本 向上调整算法和向下调整算法的比较 我们接着…

owasp top 10 越权漏洞·

指的是用户权限不明晰。 垂直越权&#xff1a;低权限用户&#xff0c;在无任何身份校验的情况下&#xff0c;能够使用高权 限&#xff08;不属于自己&#xff09;模块&#xff08;功能&#xff09;&#xff0c;或访问高权限拥有的数据&#xff1b; 水平越权&#xff1a;指相同…

华为MRS服务使用记录

背景&#xff1a;公司的业务需求是使用华为的这一套成品来进行开发&#xff0c;使用中发现&#xff0c;这个产品跟原生的Hadoop的那一套的使用&#xff0c;还是有很大的区别的&#xff0c;现记录一下&#xff0c;避免以后忘了 一、原始代码的下载 下载地址&#xff1a;MRS样例…

UVa12313 A Tiny Raytracer

UVa12313 A Tiny Raytracer 题目链接题意分析AC 代码 题目链接 UVA - 12313 A Tiny Raytracer 题意 给出 《训练指南》题意翻译 本题的任务是实现一个小型光线追踪渲染器。场景由若干三角形网格&#xff08;triangle mesh&#xff09;组成&#xff0c;有且仅有一个点光源&…

R语言高级数据管理

一&#xff0c;数学函数 绝对值函数abs(x) sqrt(x) 开平方根 不小于某个数的最小整数ceiling(x) 不大于某个数的最大整数floor(x) 四舍五入round(x) sin(x) cos(x) log(x) 二&#xff0c;统计函数 求平均值 > x<-c(2,3,4,5,6,7,8,9,10) > mean(x) 求和 &g…

RustGUI学习(iced)之小部件(二):如何使用滑动条部件

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

抓包理解协议

用的Wireshark 抓包 1.抓包网卡选择 - WLAN 无线网卡&#xff0c;其他是本地虚拟机的网卡 这里分别是开始捕获、停止捕获、重新捕获、网卡选择&#xff0c;下面是可以过滤选择 过滤tcp包 3次握手&#xff1a; source是源地址&#xff0c; destination是目标地址&#xff0c;in…

QT文件上传带进度条实例(含源码)

一、Qt上传知识点 QNetworkAccessManager QNetworkAccessManager 是 Qt 中用于执行网络操作的类,它提供了一种方便的方式来发送网络请求并处理响应。以下是关于 QNetworkAccessManager 的一些重要知识点: 发送网络请求:QNetworkAccessManager 可以通过不同的方法发送网络请…

CSS3(响应式布局)

#过渡# 属性连写&#xff1a; transition: width 2s linear 1s; //前一个时间用于表示过渡效果持续时间&#xff0c;后一个时间用于表示过渡效果的延迟。 #转换# #2D转换# 和 #3D转换# 注意&#xff1a;其中angle对应单位为&#xff1a;deg #圆角# #边框# …

使用Docker部署Jupyter Notebook并结合花生壳的内网穿透实现远程访问(详文)

一、前言 本文主要介绍如何利用宝塔面板中的Docker 3.9.3管理器,使用Docker本地部署Jupyter Notebook,并结合花生壳内网穿透工具实现任意浏览器公网远程访问Jupyter登录界面。 安装完成后在宝塔面板中图例 Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言。…

会声会影2024破解电脑版下载附带永久免费激活码

会声会影2024是一款功能强大的视频编辑软件&#xff0c;它凭借直观易用的界面、全面的编辑工具以及丰富的特效和转场效果&#xff0c;受到了广大视频编辑爱好者和专业人士的喜爱。以下是对会声会影2024的详细介绍&#xff1a; 会声会影最新一键安装包下载如下&#xff1a; ht…