ABAP分屏 显示多个ALV 可调节

文章介绍了如何在ABAP中使用cl_gui_docking_container和cl_gui_splitter_container来创建动态的分屏控件,拆分屏幕以展示多个可调节的ALV报表。通过实例代码展示了容器的创建、控件的拆分步骤,最终达到在GUI上灵活展示不同数据的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

今天休息日,因为下雨在家也很无聊,突然想到了以前的一个需求就是报表展示多个ALV,当初我的解决办法就是画固定的控件来进行展示这些存放不同数据的ALV,今天通过网上各位大顾的博客来研究了一下ABAP 分屏 控件拆分,展示可调节的ALV,分享给大家,也算是自己的一个小笔记,如有什么问题,希望指出,虚心纠正!


一、实现步骤

1.相关定义

代码如下(示例):

*&---------------------------------------------------------------------*
* DEFIEN DATA
*&---------------------------------------------------------------------*
DATA:go_docking01   TYPE REF TO cl_gui_docking_container,  " 动态自适应
     go_container01 TYPE REF TO cl_gui_container,          " 容器1
     go_container02 TYPE REF TO cl_gui_container,          " 容器2
     go_container03 TYPE REF TO cl_gui_container,          " 容器3
     go_container04 TYPE REF TO cl_gui_container,          " 容器4
     go_splitter    TYPE REF TO cl_gui_splitter_container, " 拆分用1
     go_splitter2   TYPE REF TO cl_gui_splitter_container, " 拆分用1
     go_grid01      TYPE REF TO cl_gui_alv_grid,
     go_grid02      TYPE REF TO cl_gui_alv_grid,
     go_grid03      TYPE REF TO cl_gui_alv_grid.

2.容器创建、控件拆分

代码如下(示例):

* 实例化分屏对象,放置于docking_container
  CREATE OBJECT go_docking01
    EXPORTING
      repid     = sy-repid
      dynnr     = '9000'
      extension = 2050
      side      = cl_gui_docking_container=>dock_at_bottom.

* 把屏幕分割成一行两列
  CREATE OBJECT go_splitter
    EXPORTING
      link_dynnr = sy-dynnr
      link_repid = sy-repid
      parent     = go_docking01
      rows       = 1  " 1行
      columns    = 2  " 2列
    EXCEPTIONS
      OTHERS     = 1.
  IF sy-subrc <> 0.
    MESSAGE e000(tree_control_msg).
  ENDIF.

*对分好的两个container分配对应的容器
* 控件分配到容器
*--------LEFT SIDE----------------------------------------------------*
  CALL METHOD go_splitter->set_column_width
    EXPORTING
      id    = 1
      width = 40. " 控件宽度
  CALL METHOD go_splitter->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = go_container01.

*--------RIGHT SIDE ----------------------------------------------------*
  CALL METHOD go_splitter->set_column_width
    EXPORTING
      id    = 2
      width = 60. " 控件宽度
  CALL METHOD go_splitter->get_container
    EXPORTING
      row       = 1
      column    = 2
    RECEIVING
      container = go_container02.

* 将第一行第二例的容器go_container2,分成两行一列
  CREATE OBJECT go_splitter2
    EXPORTING
      link_dynnr = sy-dynnr
      link_repid = sy-repid
      parent     = go_container02
      rows       = 2
      columns    = 1.

*  为分好的两个容器,分配container
  CALL METHOD go_splitter2->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = go_container03.

  CALL METHOD go_splitter2->get_container
    EXPORTING
      row       = 2
      column    = 1
    RECEIVING
      container = go_container04.

二、效果展示

如下:

总结

无非是我们用cl_gui_docking_container产生一个动态的容器,然后把一个容器拆分成多个屏幕,分别再进行数据展示。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值