OO ALV 实现方式 ALV TABLE 之 标准工具栏

本文详细介绍了如何通过事件处理类和ALV操作类,实现报表的自定义功能,包括获取数据、全屏网格列表处理及主方法整合数据的流程。

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


*&---------------------------------------------------------------------*
*& Report  ZALV01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zalv01.
*变量定义
TYPES ty_spfli TYPE spfli OCCURS 0.
DATA: gr_table     TYPE REF TO cl_salv_table.


*----------------------------------------------------------------------*
*       CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*       事件处理类(定义)
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: on_user_command FOR EVENT added_function OF
cl_salv_events
                      IMPORTING e_salv_function.
ENDCLASS.                    "lcl_handle_events DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*       事件处理类(实现)
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    DATA l_string TYPE string.
    CONCATENATE 'Function is ' e_salv_function
           INTO l_string
           SEPARATED BY space.
    MESSAGE i000(0k) WITH l_string.
  ENDMETHOD.                    "on_user_command
ENDCLASS.                    "lcl_handle_events IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS lcl_alv DEFINITION
*----------------------------------------------------------------------*
*       ALV操作类(定义)
*----------------------------------------------------------------------*
CLASS lcl_alv DEFINITION.
  PUBLIC SECTION.
    METHODS: getdata         "取得要显示的数据
               RETURNING value(lt_tab) TYPE ty_spfli,
             alv_full        "全屏Grid列表处理方法
               IMPORTING value(lt_tab) TYPE ty_spfli,
             main.           "主方法
ENDCLASS.                    "lcl_alv DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_alv IMPLEMENTATION
*----------------------------------------------------------------------*
*       ALV操作类(实现)
*----------------------------------------------------------------------*
CLASS lcl_alv IMPLEMENTATION.
*取得要显示的数据
  METHOD getdata.
    SELECT INTO TABLE lt_tab FROM spfli.
  ENDMETHOD.                    "getdata

*输出全屏网格列表的方法
  METHOD alv_full.
    DATA: lr_functions TYPE REF TO cl_salv_functions,
          lr_events    TYPE REF TO cl_salv_events.

    "创建实例
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = gr_table
          CHANGING
            t_table      = lt_tab
        ).
      CATCH cx_salv_msg.
    ENDTRY.

    lr_events = gr_table->get_event( ).

    "设置ALV功能
    gr_table->set_screen_status(
    pfstatus      =  'STA100'
    report        =  sy-repid
    set_functions = gr_table->c_functions_all ).

    "注册事件
    SET HANDLER lcl_handle_events=>on_user_command FOR lr_events.

    "显示列表
    gr_table->display( ).
  ENDMETHOD.                    "alv_full

*主方法,整合数据
  METHOD main.
    DATA: lt_tab TYPE TABLE OF spfli.

    "取得要显示的数据
    lt_tab = me->getdata( ).

    me->alv_full( lt_tab ).
  ENDMETHOD.                    "main
ENDCLASS.                    "lcl_alv IMPLEMENTATION

*报表执行
START-OF-SELECTION.
  DATA  lr_alv   TYPE REF TO lcl_alv.
  CREATE OBJECT lr_alv.
  lr_alv->main( ).

转载于:https://www.cnblogs.com/eric0701/archive/2012/09/25/2701488.html

### 回答1: 要使用OOALV在ABAP中生成对SFLIGHT数据库的报表,您可以按照以下步骤进行: 1. 在SE11中创建一个结构来定义您的报表列和行。结构必须与SFLIGHT数据库表中的列相匹配。 2. 在SEGW中创建一个OData服务,用于从SFLIGHT数据库中检索数据。 3. 在ABAP类中创建一个方法来获取OData服务返回的数据。 4. 在ABAP类中创建一个方法来定义您的ALV报表,并使用该方法创建ALV实例。 5. 在ALV实例中,将数据传递给ALV,并设置ALV字段目录和布局,以便在报表中正确显示数据。 6. 最后,您可以在ABAP程序中调用该类的方法来生成您的报表。 通过以上步骤,您可以在ABAP中使用OOALV来生成对SFLIGHT数据库的报表。 ### 回答2: 在ABAP中实现OOALV(对象导向的ALV报表)方式生成对SFLIGHT数据库的报表,需要完成以下步骤: 1. 定义一个ALV树控制对象,用于展示报表的结构和布局。可以使用ABAP类的方法`cl_gui_alv_tree`来创建该对象。 2. 创建一个视图对象,用于检索和处理SFLIGHT数据库表中的数据。可以使用ABAP类的方法`cl_abap_view`来创建该对象,并将SFLIGHT作为目标数据库表。 3. 在ABAP程序中,通过实例化ALV树控制对象,设置相应的参数,例如标题、字段、列宽等。 4. 实例化视图对象,并使用`set_database_table`方法将SFLIGHT表与视图对象关联起来。 5. 使用`set_table_for_first_display`方法将ALV树控制对象与视图对象关联起来,完成报表的生成。 6. 根据需要可以通过方法`add_toolbar`向报表添加自定义工具栏按钮。 7. 最后,使用`display`方法显示报表。 简而言之,通过创建ALV树控制对象和视图对象,并将它们关联起来,然后添加所需的参数,最后显示生成的报表。这样就可以实现OOALV方式生成对SFLIGHT数据库的报表。 ### 回答3: 在ABAP中,可以通过使用OOALV(对象导向的ALV)的方式来生成对SFLIGHT数据库的报表。以下是实现方式的步骤: 1. 首先,创建一个ABAP程序,并导入必要的数据字典表和SFLIGHT数据库表。 2. 创建一个ABAP类来定义报表的逻辑和功能。这个类需要继承CL_SALV_TABLE类,以便使用ALV控件。 3. 在该类中,定义必要的数据对象和变量,以便在报表中存储和处理数据。 4. 实现一个方法来初始化和配置ALV控制对象。在该方法中,创建一个ALV对象,并将所有必要的属性和设置应用于该对象。例如,可以设置表格布局、列标题、排序和筛选选项等。 5. 实现一个方法来获取SFLIGHT数据库表中的数据,并将其存储在报表使用的数据对象中。可以使用SELECT语句从SFLIGHT表中检索数据,并将其填充到数据对象中。 6. 在报表类中实现另一个方法来显示和渲染报表。在该方法中,使用ALV控制对象显示报表,并通过将数据对象中的数据与ALV对象相关联来填充报表。 7. 最后,在报表程序中实例化/创建报表类的对象,并调用显示和渲染报表的方法。这将在屏幕上显示生成的报表。 通过这些步骤,可以在ABAP中实现OOALV方式来生成对SFLIGHT数据库的报表。这种方式可以提供更灵活和可扩展的报表生成功能,同时具有更好的用户界面和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值