怎样在屏幕上显示多个alv
本文解说怎样在屏幕上显示多个alv.
实现这种需求关键是下面几点(举例:在屏幕上显示4个alv):
1.须要定义4个alv control
2.由于有4个alv control,于是就须要定义4个容器装这4个控件
3.为了合理布局这4个容器,就要将这4个容器嵌入另外一个splitter 容器中
4.可是splitter容器又仅仅能置入其它容器中,那么就须要再定义一个容器
总之,须要3层容器和1层控件,总共要定义6个容器和4个控件
5.最里面的容器应该是cl_gui_custom_container类型。基于屏幕容器区域创建该容器
6.再在最底层容器里面嵌入splitter 容器
7.依据splitter容器创建4个镶嵌在其内的alv容器
8.再在alv容器中创建alv控件
9.调用alv的方法现实内表数据
下面是屏幕上显示4个alv的实例:
主程序代码:
TYPE-POOLS: slis, icon.
TABLES: sflight, spfli, scarr, sbook.
* Define okcode
DATA: ok_code TYPE sy-ucomm.
* Define objects used in screen
DATA: go_split_container TYPE REF TO cl_gui_splitter_container.
DATA: go_container TYPE REF TO cl_gui_custom_container.
DATA: go_container1 TYPE REF TO cl_gui_container.
DATA: go_container2 TYPE REF TO cl_gui_container.
DATA: go_container3 TYPE REF TO cl_gui_container.
DATA: go_container4 TYPE REF TO cl_gui_container.
DATA: go_alv_control1 TYPE REF TO cl_gui_alv_grid.
DATA: go_alv_control2 TYPE REF TO cl_gui_alv_grid.
DATA: go_alv_control3 TYPE REF TO cl_gui_alv_grid.
DATA: go_alv_control4 TYPE REF TO cl_gui_alv_grid.
* Define internal tables and structures
DATA: BEGIN OF gs_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
END OF gs_sflight.
DATA: BEGIN OF gs_spfli,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF gs_spfli.
DATA: BEGIN OF gs_scarr,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
END OF gs_scarr.
DATA: BEGIN OF gs_sbook,
carrid TYPE sbook-carrid,
connid TYPE sbook-connid,
bookid TYPE sbook-bookid,
customid TYPE sbook-customid,
END OF gs_sbook.
* Define alv components
DATA: gs_field_cat1 TYPE lvc_s_fcat.
DATA: gs_field_cat2 TYPE lvc_s_fcat.
DATA: gs_field_cat3 TYPE lvc_s_fcat.
DATA: gs_field_cat4 TYPE lvc_s_fcat.
DATA: gt_field_cat1 TYPE lvc_t_fcat.
DATA: gt_field_cat2 TYPE lvc_t_fcat.
DATA: gt_field_cat3 TYPE lvc_t_fcat.
DATA: gt_field_cat4 TYPE lvc_t_fcat.
* Define displayed data
DATA: gt_sflight LIKE STANDARD TABLE OF gs_sflight,
gt_spfli LIKE STANDARD TABLE OF gs_spfli,
gt_scarr LIKE STANDARD TABLE OF gs_scarr,
gt_sbook LIKE STANDARD TABLE OF gs_sbook.
START-OF-SELECTION.
PERFORM sub_retrieve_data.
PERFORM sub_alv_data.
CALL SCREEN 9100.
*&---------------------------------------------------------------------*
*& Form SUB_RETRIEVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_retrieve_data .
SELECT
carrid
connid
fldate
price
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
FROM sflight.
SELECT
carrid
connid
cityfrom
cityto
INTO CORRESPONDING FIELDS OF TABLE gt_spfli
FROM spfli.
SELECT
carrid
carrname
INTO CORRESPONDING FIELDS OF TABLE gt_scarr
FROM scarr.
SELECT
carrid
connid
bookid
customid
INTO CORRESPONDING FIELDS OF TABLE gt_sbook
FROM sbook.
ENDFORM. " SUB_RETRIEVE_DATA
*&---------------------------------------------------------------------*
*& Form SUB_ALV_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_alv_data .
* Build field catelog 1
gs_field_cat1-col_pos = 1.
gs_field_cat1-fieldname = 'CARRID'.
gs_field_cat1-scrtext_m = 'airline code'.
APPEND gs_field_cat1 TO gt_field_cat1.
gs_field_cat1-col_pos = 2.
gs_field_cat1-fieldname = 'CONNID'.
gs_field_cat1-scrtext_m = 'connection number'.
APPEND gs_field_cat1 TO gt_field_cat1.
gs_field_cat1-col_pos = 3.
gs_field_cat1-fieldname = 'FLDATE'.
gs_field_cat1-scrtext_m = 'flight date'.
APPEND gs_field_cat1 TO gt_field_cat1.
gs_field_cat1-col_pos = 4.
gs_field_cat1-fieldname = 'PRICE'.
gs_field_cat1-scrtext_m = 'flight price'.
APPEND gs_field_cat1 TO gt_field_cat1.
* Build field catelog 2
gs_field_cat2-col_pos = 1.
gs_field_cat2-fieldname = 'CARRID'.
gs_field_cat2-scrtext_m = 'airline code'.
APPEND gs_field_cat2 TO gt_field_cat2.
gs_field_cat2-col_pos = 2.
gs_field_cat2-fieldname = 'CONNID'.
gs_field_cat2-scrtext_m = 'connection number'.
APPEND gs_field_cat2 TO gt_field_cat2.
gs_field_cat2-col_pos = 3.
gs_field_cat2-fieldname = 'CITYFROM'.
gs_field_cat2-scrtext_m = 'city from'.
APPEND gs_field_cat2 TO gt_field_cat2.
gs_field_cat2-col_pos = 4.
gs_field_cat2-fieldname = 'CITYTO'.
gs_field_cat2-scrtext_m = 'city to'.
APPEND gs_field_cat2 TO gt_field_cat2.
* Build field catelog 3
gs_field_cat3-col_pos = 1.
gs_field_cat3-fieldname = 'CARRID'.
gs_field_cat3-scrtext_m = 'airline code'.
APPEND gs_field_cat3 TO gt_field_cat3.
gs_field_cat3-col_pos = 2.
gs_field_cat3-fieldname = 'CONNID'.
gs_field_cat3-scrtext_m = 'connection number'.
APPEND gs_field_cat3 TO gt_field_cat3.
* Build field catelog 4
gs_field_cat4-col_pos = 1.
gs_field_cat4-fieldname = 'CARRID'.
gs_field_cat4-scrtext_m = 'airline code'.
APPEND gs_field_cat4 TO gt_field_cat4.
gs_field_cat4-col_pos = 2.
gs_field_cat4-fieldname = 'CONNID'.
gs_field_cat4-scrtext_m = 'connection number'.
APPEND gs_field_cat4 TO gt_field_cat4.
gs_field_cat4-col_pos = 3.
gs_field_cat4-fieldname = 'BOOKID'.
gs_field_cat4-scrtext_m = 'book id'.
APPEND gs_field_cat4 TO gt_field_cat4.
gs_field_cat4-col_pos = 4.
gs_field_cat4-fieldname = 'CUSTOMID'.
gs_field_cat4-scrtext_m = 'custom id'.
APPEND gs_field_cat4 TO gt_field_cat4.
ENDFORM. " SUB_ALV_DATA
*&---------------------------------------------------------------------*
*& Module ALV_DISPLAY OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE alv_display OUTPUT.
IF go_split_container IS INITIAL.
CREATE OBJECT go_container
EXPORTING
container_name = 'GO_CONTAINER'.
CREATE OBJECT go_split_container
EXPORTING
link_dynnr = sy-dynnr
link_repid = sy-repid
parent = go_container
rows = 2
columns = 2
name = 'GO_SPLIT_CONTAINER'.
CALL METHOD go_split_container->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_container1.
CALL METHOD go_split_container->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_container2.
CALL METHOD go_split_container->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = go_container3.
CALL METHOD go_split_container->get_container
EXPORTING
row = 2
column = 2
RECEIVING
container = go_container4.
CREATE OBJECT go_alv_control1
EXPORTING
i_parent = go_container1.
CREATE OBJECT go_alv_control2
EXPORTING
i_parent = go_container2.
CREATE OBJECT go_alv_control3
EXPORTING
i_parent = go_container3.
CREATE OBJECT go_alv_control4
EXPORTING
i_parent = go_container4.
CALL METHOD go_alv_control1->set_table_for_first_display
CHANGING
it_outtab = gt_sflight
it_fieldcatalog = gt_field_cat1.
CALL METHOD go_alv_control2->set_table_for_first_display
CHANGING
it_outtab = gt_spfli
it_fieldcatalog = gt_field_cat2.
CALL METHOD go_alv_control3->set_table_for_first_display
CHANGING
it_outtab = gt_scarr
it_fieldcatalog = gt_field_cat3.
CALL METHOD go_alv_control4->set_table_for_first_display
CHANGING
it_outtab = gt_sbook
it_fieldcatalog = gt_field_cat4.
ELSE.
CALL METHOD go_alv_control1->refresh_table_display.
CALL METHOD go_alv_control2->refresh_table_display.
CALL METHOD go_alv_control3->refresh_table_display.
CALL METHOD go_alv_control4->refresh_table_display.
ENDIF.
ENDMODULE. " ALV_DISPLAY OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_9100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9100 OUTPUT.
SET PF-STATUS 'STATUS9100'.
ENDMODULE. " STATUS_9100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9100 INPUT.
CASE ok_code.
WHEN 'PBAK'.
CALL METHOD go_alv_control1->free.
CALL METHOD go_alv_control2->free.
CALL METHOD go_alv_control3->free.
CALL METHOD go_alv_control4->free.
CALL METHOD go_container1->free.
CALL METHOD go_container2->free.
CALL METHOD go_container3->free.
CALL METHOD go_container4->free.
CALL METHOD go_split_container->free.
CALL METHOD go_container->free.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_9100 INPUT
屏幕9100中的代码:
PROCESS BEFORE OUTPUT.
MODULE status_9100.
MODULE alv_display.
PROCESS AFTER INPUT.
MODULE user_command_9100.
怎样在屏幕上显示多个alv的更多相关文章
- 在屏幕上显示C盘根目录下的所有文件和文件夹
1 import java.io.File; //在屏幕上显示C盘根目录下的所有文件和文件夹 public class ListDemo { public static void main(Strin ...
- linux tail-在屏幕上显示指定文件的末尾若干行
博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 tail命令用于输入文件中的尾部内容.tail命令默认在屏幕上显示指定文件的末尾10行.如果给定的文件不止一个,则在显示的每个 ...
- Droid@screen:在PC屏幕上显示Android手机屏幕
这里介绍一款工具——Droid@screen,用来获取手机屏幕,显示在PC屏幕上.它集截图.录像等多种功能于一体. 安装 1. 下载地址:http://droid-at-screen.org/d ...
- 【opengl】OpenGL中三维物体显示在二维屏幕上显示的变换过程
转自:http://blog.sina.com.cn/s/blog_957b9fdb0100zesv.html 为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机(Camera)模 ...
- iOS开发中获取视图在屏幕上显示的位置
在iOS开发中,我们会经常遇到一个问题,例如,点击一个按钮,弹出一个遮罩层,上面显示一个弹框,弹框显示的位置在按钮附近.如果这个按钮的位置相对于屏幕边缘的距离是固定的,那就容易了,可以直接写死位置.可 ...
- ProgressDialog(三)——代号为中心的屏幕上显示ProgressDialog(ProgressBar)
MainActivity如下面: package cc.testprogressdialog; import android.os.Bundle; import android.view.Gravit ...
- ABAP 在屏幕上显示图片
1.se78 上传 或 预览图片 图片预览 2.程序代码 定义各变量 DATA: H_PICTURE TYPE REF TO CL_GUI_PICTURE, H_PIC_CONTAINER TYPE ...
- Flash3D学习计划(三)——学习VB,IB相关,理解三角形顶点顺序;在屏幕上显示2D矩形,并实现缩放,平移,旋转
VB:顶点缓冲 IB: 顶点索引缓冲 三角形的顶点顺序决定了三角形是顺时针还是逆时针,从而决定了三角形在背面剔除的过程中是否会被剔除掉. 相关理论知识可以在前面的文章中找到更多的说明. 实现效果 sf ...
- [SimplePlayer] 2. 在屏幕上显示视频图像
我们这里采用SDL(本文所用版本为SDL2.0.5)来进行图像输出,SDL在进行图像渲染时一般采用的会是direct3D或者opengl,SDL对它们进行了封装,不过我们这里只讨论SDL的使用,并不会 ...
随机推荐
- C++晋升之std中vector的实现原理(标准模板动态库中矢量的实现原理)
我们实现的数据结构是为了解决在执行过程中动态的开辟空间使用(比如我们不停的输入,输入的多少我们不确定) 假设当你看到这篇文章的话,就当作是零食咀嚼,营养没有有BUG,能够直接看我博客中文章:CPU对内 ...
- Find the minimum线段树成段更新
问题 G: Find the minimum 时间限制: 2 Sec 内存限制: 128 MB 提交: 83 解决: 20 [ 提交][ 状态][ 讨论版] 题目描述 Given an int ...
- MFC 用gdi绘制填充多边形区域
MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...
- 让MFC程序隐藏运行界面
在MFC中隐藏运行界面确实花花点功力. 针对对话框程序,一种不是很好地实现方法是在OnPaint函数中添加如下代码: CWnd::ShowWindow(SW_HIDE); 添加后执行会发现屏幕会闪烁一 ...
- 【ASP.NET Web API教程】4.1 ASP.NET Web API中的路由
原文:[ASP.NET Web API教程]4.1 ASP.NET Web API中的路由 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. ...
- dwz+jquery+fileupload+springmvc实现文件上传 及图片预览
1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarD ...
- AMR音频编码器概述及文件格式分析
全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的. 一.分类 1. AMR: ...
- 计算VMT的长度
function GetVirtualMethodCount(AClass: TClass): Integer; begin Result := (PInteger(Integer(AClass) + ...
- [Java学习笔记]Java Tips
1.Java没有sizeof关键字 , volatile是java关键字.详情见:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166. ...
- [c++语法]类
什么是类 类 是 面向对象的基础.c里面是没有对象的,只有数据,即静态的死物. 从面向过程升级到面向对象后,有了对象的概念,对象是数据与方法的合体,是动态的活物. 类代表着一类事物的特征.而对象,是类 ...