ABAP分屏 显示多个ALV 可调节


前言

今天休息日,因为下雨在家也很无聊,突然想到了以前的一个需求就是报表展示多个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产生一个动态的容器,然后把一个容器拆分成多个屏幕,分别再进行数据展示。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 你可以使用SAP ABAP语言编写一个ALV列表。首先,你需要了解ALV(Adobe List Viewer)是什么,它是SAP系统中用于显示数据的一种标准用户界面控件。 具体来说,你可以使用ALV函数库,这些函数可以让你设置ALV列表的各种属性,如列宽、字段格式、排序方式等。 例如,你可以使用REUSE_ALV_GRID_DISPLAY函数来显示ALV列表,并使用IT_FIELDCAT参数来设置列的格式。 下面是一个简单的例子: ``` *定义数据结构 TYPES: BEGIN OF ty_sflight, carrid TYPE sflight-carrid, connid TYPE sflight-connid, fldate TYPE sflight-fldate, END OF ty_sflight. *定义数据表 DATA: it_sflight TYPE TABLE OF ty_sflight. *定义字段描述表 DATA: it_fieldcat TYPE lvc_t_fcat. *填充数据 SELECT * FROM sflight INTO TABLE it_sflight. *填充字段描述表 APPEND INITIAL LINE TO it_fieldcat ASSIGNING FIELD-SYMBOL(<fs_fieldcat>). <fs_fieldcat>-fieldname = 'CARRID'. <fs_fieldcat>-seltext_l = '航空公司代码'. APPEND INITIAL LINE TO it_fieldcat ASSIGNING FIELD-SYMBOL(<fs_fieldcat>). <fs_fieldcat>-fieldname = 'CONNID'. <fs_fieldcat>-seltext_l = '航班号'. APPEND INITIAL LINE TO it_fieldcat ASSIGNING FIELD-SYMBOL(<fs_fieldcat>). <fs_fieldcat>-fieldname = 'FLDATE'. <fs_fieldcat>-seltext_l = '起飞日期'. *显示ALV列表 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid i_structure_name = 'TY_SFLIGHT' i_save = 'A' TABLES t_outtab = it_sflight i_fieldcat = it_fieldcat. ``` ### 回答2: ABAP是SAP系统的编程语言,可用于开发和定制各种功能和报表。以下是使用ABAP编写一个ALV列表的步骤。 1. 定义内表:首先,我们需要定义一个内表来存储数据。使用ABAP的DATA语句创建一个具有所需字段的内表。 2. 获取数据:使用ABAP的SELECT语句从数据库中检索所需的数据,并将其存储在内表中。 3. 创建ALV试图:使用ABAP的CL_GUI_ALV_GRID类创建一个ALV列表的实例。定义此实例的属性和设置,如列标题,列宽度,排序等。 4. 载入数据:将内表的数据加载到ALV列表中,使用ALV实例的METHODS属性和方法。 5. 显示ALV列表:使用ABAP的CALL METHOD语句调用ALV实例的DISPLAY方法,以便将其显示在屏幕上。 6. 添加用户交互功能:根据需要,您可以在ALV列表中添加各种用户交互功能,如过滤器,排序,编辑等。使用ALV实例的相应方法和事件来实现它们。 7. 添加功能按钮:您还可以为ALV列表添加自定义功能按钮,以实现特定的操作。使用ABAP的FUNCTION_KEY语句来定义功能按钮,并使用ALV实例的EVENTS属性和方法来处理按钮的点击事件。 8. 处理用户输入:如果用户在ALV列表中进行了更改或交互操作,您可以使用相应的ALV事件来处理这些更改,并在内表中更新数据。 9. 处理指令:根据需要,您可以处理ALV列表中的不同命令,如打印,导出等。使用ALV实例的事件和方法来实现这些指令的功能。 10. 完善界面:最后,如果需要在ALV列表中添加其他UI元素,如选择框,文本框等,您可以使用ABAP的DIALOG和SCREEN等功能来实现。 以上是使用ABAP编写一个ALV列表的一般步骤。根据实际需求和具体业务场景,您可能需要根据自己的要求进行适当的调整和修改。 ### 回答3: ABAP是一种编程语言,用于在SAP系统中开发和定制应用程序。要使用ABAP编写一个ALVABAP List Viewer)列表,可以按照以下步骤进行操作: 1. 创建一个ABAP报表程序,使用SE38事务代码打开ABAP编辑器。 2. 在ABAP编辑器中,定义一个内部表,用于存储数据。例如,可以使用类型为TABLE OF结构的内部表。 3. 在ABAP编辑器中,使用SELECT语句从数据库表中检索所需的数据,并将其放入内部表中。 4. 定义一个ALV网格控件,并与内部表关联。可以使用CL_SALV_TABLE类来创建ALV网格控件对象。 5. 在ALV网格控件上,定义列,标题和布局等。可以使用方法ADD_COLUMN和SET_TABLE_FOR_FIRST_DISPLAY来添加列和定义布局。 6. 调用方法DISPLAY来显示ALV列表。 7. 为ALV列表添加自定义功能。例如,可以添加排序、筛选、汇总等功能。 8. 编译并执行ABAP报表程序,以显示ALV列表。 下面是一个示例代码,用于创建一个包含两列的ALV列表,并在SFLIGHT表中显示航班号和航班日期。 ``` REPORT ZALV_LIST. DATA: lt_flight TYPE TABLE OF sflight, lr_alv TYPE REF TO cl_salv_table. START-OF-SELECTION. SELECT carrid, connid, fldate, price FROM sflight INTO TABLE lt_flight. CREATE OBJECT lr_alv. lr_alv->add_column( 'Carrid' ). lr_alv->add_column( 'Connid' ). lr_alv->set_table_for_first_display( CHANGING it_outtab = lt_flight ). lr_alv->display( ). ``` 以上是一个简单的示例,您可以根据实际需求对代码进行修改和扩展。请注意,使用ALV列表还可以进行更复杂的操作,如行编辑、数据修改等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值