实现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.rhkb.cn/news/315140.html

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

相关文章

开机流程+文件系统

linux的开机启动流程 1.开启电源 2.BIOS/UEFI 阶段&#xff1a; 计算机开机时&#xff0c;首先执行基本输入/输出系统 (BIOS) 或统一可扩展固件接口 (UEFI) 中的启动程序。 BIOS/UEFI 会进行自检 (POST)&#xff0c;初始化硬件设备&#xff0c;并检测可用的启动设备。 3.Boot…

MyBatis-Plus笔记——基础环境搭建

Spring 基础环境 Spring 基础环境 指的是 Spring MyBatis 辅助类 1.引入依赖 <properties> <maven.compiler.source>22</maven.compiler.source> <maven.compiler.target>22</maven.compiler.target> <project.build.sourceEncoding>…

mysql-sql-练习题-1

文章目录 环境注释建表 5张建库学生表课程表教师表分数表总表 语法书写顺序in学过/没学过完全相同 环境 Windows cmd&#xff08;普通用户/管理员&#xff09; mysql -uroot -pmysql版本&#xff0c;模式&#xff08;可自定义&#xff09; select version(),global.sql_mode…

Vue基础:为什么要学Vue3,Vue3相较于Vue2有那些优势?

为什么要学Vue3&#xff1f; 1.框架层面 1.响应式底层API的变化 Proxy 数组下标的修改 对象动态添加属性 解释说明&#xff1a;1.vue2采用的是Object.definePrototype&#xff0c;它每次只能对单个对象中的单个数据进行劫持&#xff0c;所以在Vue2中data()中的数据一多就要进行…

开启智慧之旅,AI与机器学习驱动的微服务设计模式探索

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#x1f525;&#xff1a;探索设计模式的魅力&#xff1a;开启智慧…

PotatoPie 4.0 实验教程(21) —— FPGA实现摄像头图像二值化(RGB2Gray2Bin)

PotatoPie 4.0开发板教程目录&#xff08;2024/04/21&#xff09; 为什么要进行图像的二值化&#xff1f; 当我们处理图像时&#xff0c;常常需要将其转换为二值图像。这是因为在很多应用中&#xff0c;我们只对图像中的某些特定部分感兴趣&#xff0c;而不需要考虑所有像素的…

ASP.NET企业投资价值分析系统

摘 要 本文将影响股票投资价值的宏观因素、行业因素、企业内部等诸多因素予以量化分析&#xff0c;对钢铁板块和汽车板块各上市公司进行综合评估&#xff0c;为广大股民的投资方向和资金安全提供了有力的支持。本文还阐述了企业投资价值分析的必要性&#xff0c;说明了企业投…

Elasticsearch进阶篇(三):ik分词器的使用与项目应用

ik分词器的使用 一、下载并安装1.1 已有作者编译后的包文件1.2 只有源代码的版本1.3 安装ik分词插件 二、ik分词器的模式2.1 ik_smart演示2.2 ik_max_word演示2.3 standard演示 三、ik分词器在项目中的使用四、ik配置文件4.1 配置文件的说明4.2 自定义词库 五、参考链接 一、下…

FPGA 以太网通信UDP通信环回

1 实验任务 上位机通过网口调试助手发送数据给 FPGA &#xff0c; FPGA 通过 PL 端以太网接口接收数据并将接收到的数据发送给上位机&#xff0c;完成以太网 UDP 数据的环回。 2 系统设计 系统时钟经过PLL时钟模块后&#xff0c;生成了两种不同频率和相位的时钟信号&#…

PotatoPie 4.0 实验教程(28) —— FPGA实现sobel算子对摄像头图像进行边缘提取

什么是sobel算子&#xff1f; Sobel 算子是一种常用的边缘检测算子&#xff0c;用于在图像中检测边缘。它基于对图像进行梯度运算&#xff0c;可以帮助识别图像中灰度值变化较大的区域&#xff0c;从而找到图像中的边缘。 Sobel 算子通过计算图像的水平和垂直方向的一阶导数来…

基础SQL DQL语句

基础查询 select * from 表名; 查询所有字段 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char(1) comment 性别,age tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,worka…

本地生活服务平台哪家强,怎么申请成为服务商?

当下&#xff0c;本地生活服务已经成为了多家互联网大厂布局的重要板块&#xff0c;在巨大的市场需求和强大的资本加持下&#xff0c;不少人都看到了本地生活服务平台广阔的前景和收益空间。在此背景下&#xff0c;许多普通人都跃跃欲试&#xff0c;想要成为本地生活服务商&…

ptyhon画图显示中文

import matplotlib.pyplot as plt import matplotlib# 设置中文字体 matplotlib.rcParams[font.sans-serif] [SimHei] matplotlib.rcParams[font.family]sans-serifplt.plot([1, 2, 3, 4]) plt.xlabel(这是x轴) plt.ylabel(这是y轴) plt.title(这是标题) plt.show()用这个代码…

计算机网络知识点

层次模型 IQS七层模型 TCP/IP 原理体系结构 应用层 应用层 应用层 表示层 运输层 运输层 会话层 网际层 网络层 运输层 网络接口层 数…

Bentley二次开发教程27-交互窗口-案例实战1-可视化矩形梁生成工具

为了展现在MicroStation二次开发中使用WinForm界面控件与MicroStation内的数据交互&#xff0c;这里我们使用三个案例进行展示&#xff0c;分别为可视化矩形梁生成工具&#xff0c;EC属性赋值工具与文件选择复制工具。 可视化矩形梁生成工具 该工具会根据用户输入的数据实时…

GAN详解,公式推导解读,详细到每一步的理论推导

在看这一篇文章之前&#xff0c;希望熟悉掌握熵的知识&#xff0c;可看我写的跟熵相关的一篇博客https://blog.csdn.net/m0_59156726/article/details/138128622 1. GAN 原始论文&#xff1a;https://arxiv.org/pdf/1406.2661.pdf 放一张GAN的结构&#xff0c;如下&#xff1…

基于canal监听MySQL binlog实现数据增量同步

一、背景 业务反馈客服消息列表查询速度慢&#xff0c;有时候甚至要差不多20秒&#xff0c;急需优化提升速度。 二、方案 引入 首先&#xff0c;体验系统&#xff0c;发现查询慢的正是消息列表查询接口。 接着去看代码的设计&#xff0c;流程比较长&#xff0c;但从代码逻…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC&#xff08;Tencent RTC&#xff09;腾讯实时音视频&#xff0c;源自于 QQ 音视频团队&#xff0c;是基于 QQ 音视频多年来的音视频技术积累&#xff0c;位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

clickhouse安装部署

虚拟机&#xff1a;virtualbox7.0 操作系统&#xff1a;ubuntu server 22.04.3 虚拟机硬件&#xff1a;cpu 1&#xff0c;内存 2G&#xff0c; 硬盘 100G 采用默认安装 参照 https://clickhouse.com/docs/en/install#quick-install 安装部署 对于Debian、Ubuntu&#xff0c…

【漏洞复现】艺创科技智能营销路由器后台命令执行漏洞

漏洞描述&#xff1a; 成都艺创科技有限公司是一家专注于新型网络设备研发、生产、销售和服务的企业&#xff0c;在大数据和云时代&#xff0c;致力于为企业提供能够提升业绩的新型网络设备。 智能营销路由器存在后台命令执行漏洞&#xff0c;攻击者可利用漏洞获取路由器控制…