以前一直运用container的方式来显示alv,现在介绍一种不太常用的方法来显示alv,希望可以提供一种新的思路。但是一直没有找到怎样运用此方法在Toolbar上增加一个按钮,或者响应某些事件。

REPORT  ZPRO_DAVID_ALV_CL.

*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_REPORT DEFINITION.
 PUBLIC SECTION.
*----------------------------------------------------------------------*
* Final Output Table
*----------------------------------------------------------------------*
    TYPES: BEGIN OF TY_MARA,
            MATNR TYPE MATNR,
            ERSDA TYPE ERSDA,
            MATKL TYPE MATKL,
            MTART TYPE MTART,
            LVORM TYPE LVORM,
           END OF TY_MARA.
   DATA: O_ALV TYPE REF TO CL_SALV_TABLE,              " ALV Reference
          T_MARA TYPE STANDARD TABLE OF TY_MARA.
*----------------------------------------------------------------------*
* Methods to Fetch Data and Generate Output
*----------------------------------------------------------------------*
    METHODS: GET_DATA,                                  "Data Selection
             GENERATE_OUTPUT.                           "Generating Output  PRIVATE SECTION.
*----------------------------------------------------------------------*
* Methods to Set PF-Status, Header and Footer
*----------------------------------------------------------------------*
    METHODS: SET_PF_STATUS
                  CHANGING
                      CO_ALV TYPE REF TO CL_SALV_TABLE, " Default Pf Status

SET_TOP_OF_PAGE
                  CHANGING
                      CO_ALV TYPE REF TO CL_SALV_TABLE, " Set Top of page
               SET_END_OF_PAGE
                  CHANGING
                      CO_ALV TYPE REF TO CL_SALV_TABLE. " Set End of page
    ENDCLASS.
"lcl_report DEFINITION*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_REPORT IMPLEMENTATION.
*----------------------------------------------------------------------*
* Data selection
*----------------------------------------------------------------------*
  METHOD GET_DATA.
    SELECT MATNR ERSDA MATKL MTART LVORM INTO TABLE T_MARA
           FROM MARA UP TO 20 ROWS.
  ENDMETHOD.
"get_data*----------------------------------------------------------------------*
* Generating Output
*----------------------------------------------------------------------*
  METHOD GENERATE_OUTPUT.
*Exception Class
    DATA: LC_MSG TYPE REF TO CX_SALV_MSG.
*----------------------------------------------------------------------*
* We are calling the static Factory method which will give back
* the ALV object reference.
*----------------------------------------------------------------------*
    TRY.
        CALL METHOD CL_SALV_TABLE=>FACTORY
          IMPORTING
            R_SALV_TABLE = O_ALV
          CHANGING
            T_TABLE      = T_MARA.
      CATCH CX_SALV_MSG INTO LC_MSG .
    ENDTRY.
************************************************************************
* In this area we will call the methods which will set the
* different properties to the ALV
************************************************************************
* Calling Set PF status method
    CALL METHOD SET_PF_STATUS
      CHANGING
        CO_ALV = O_ALV.       "set_end_of_page* Calling the top of page method
    CALL METHOD SET_TOP_OF_PAGE
      CHANGING
        CO_ALV = O_ALV.
* Calling the End of page method
    CALL METHOD SET_END_OF_PAGE
      CHANGING
        CO_ALV = O_ALV.
************************************************************************
* Displaying the ALV
* Here we will call the DISPLAY method to get the output on the screen
************************************************************************
    O_ALV->DISPLAY( ).
  ENDMETHOD.                    "generate_output************************************************************************
*    In this area we will implement the methods which are defined in
*    the class definition
************************************************************************
* Setting Default PF-Status
  METHOD SET_PF_STATUS.
    DATA: LO_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS_LIST.
* Default functions
    LO_FUNCTIONS = CO_ALV->GET_FUNCTIONS( ).
    LO_FUNCTIONS->SET_DEFAULT( ABAP_TRUE ).
  ENDMETHOD.                    "set_pf_status
* Setting Top_of_page
  METHOD SET_TOP_OF_PAGE.
    DATA: LO_HEADER TYPE REF TO CL_SALV_FORM_LAYOUT_GRID,
          LO_H_LABEL TYPE REF TO CL_SALV_FORM_LABEL,
          LO_H_FLOW  TYPE REF TO CL_SALV_FORM_LAYOUT_FLOW.
* Header object
    CREATE OBJECT LO_HEADER.
*----------------------------------------------------------------------*
* To create a Label or Flow we have to specify the target
* row and column number where we need to set up the output
* text.
*----------------------------------------------------------------------*
* Information in Bold
    LO_H_LABEL = LO_HEADER->CREATE_LABEL( ROW = 1 COLUMN = 1 ).
    LO_H_LABEL->SET_TEXT('Header of the ALV Output in Bold').
* Information in tabular format
    LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 2 COLUMN = 1 ).
    LO_H_FLOW->CREATE_TEXT( TEXT = 'This is text of flow in Header' ).
    LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 3 COLUMN = 1 ).
    LO_H_FLOW->CREATE_TEXT( TEXT = 'Date of List Generation' ).
    LO_H_FLOW = LO_HEADER->CREATE_FLOW( ROW = 3 COLUMN = 2 ).
    LO_H_FLOW->CREATE_TEXT( TEXT = sy-datum ).
* Set the top of list using the header for Online
    CO_ALV->SET_TOP_OF_LIST( LO_HEADER ).
* Set the top of list using the header for Print
    CO_ALV->SET_TOP_OF_LIST_PRINT( LO_HEADER ).  ENDMETHOD.                    "set_top_of_page
* Setting End_Of_page
  METHOD SET_END_OF_PAGE.
    DATA: LO_FOOTER  TYPE REF TO CL_SALV_FORM_LAYOUT_GRID,
          LO_F_LABEL TYPE REF TO CL_SALV_FORM_LABEL,
          LO_F_FLOW  TYPE REF TO CL_SALV_FORM_LAYOUT_FLOW.
* Footer Object
    CREATE OBJECT LO_FOOTER.
* Information in Bold
    LO_F_LABEL = LO_FOOTER->CREATE_LABEL( ROW = 1 COLUMN = 1 ).
    LO_F_LABEL->SET_TEXT('Footer of the ALV in Bold').
* Tabular Information
    LO_F_FLOW = LO_FOOTER->CREATE_FLOW( ROW = 2 COLUMN = 1 ).
    LO_F_FLOW->CREATE_TEXT( TEXT = 'This is text of flow in footer' ).
* Set the end of list using the header for Online
    CO_ALV->SET_END_OF_LIST( LO_FOOTER ).
* Set the End of list using the header for Print
    CO_ALV->SET_END_OF_LIST_PRINT( LO_FOOTER ).
  ENDMETHOD.                    "set_end_of_page
  ENDCLASS.
"lcl_report IMPLEMENTATION*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*
  DATA: LO_REPORT TYPE REF TO LCL_REPORT.
  CREATE OBJECT LO_REPORT.
  LO_REPORT->GET_DATA( ).
  LO_REPORT->GENERATE_OUTPUT( ).

除此外,还可以和Container结合起来一起用:

DATA: GR_TABLE   TYPE REF TO CL_SALV_TABLE.
 DATA: GR_REPORT TYPE REF TO LCL_REPORT .
 DATA: CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

CREATE OBJECT CONTAINER1
     EXPORTING
       CONTAINER_NAME = 'CONTMARA'.

TRY.
       CL_SALV_TABLE=>FACTORY(
         EXPORTING
           R_CONTAINER    = CONTAINER1
           CONTAINER_NAME = 'CONTMARA'
         IMPORTING
           R_SALV_TABLE   = GR_TABLE
         CHANGING
           T_TABLE        = T_MARA ).
     CATCH CX_SALV_MSG.                                 "#EC NO_HANDLER
   ENDTRY.

create object GR_REPORT.
      GR_REPORT->SET_PF_STATUS( CHANGING CO_ALV =  GR_TABLE ).
      GR_REPORT->SET_TOP_OF_PAGE( CHANGING CO_ALV =  GR_TABLE ).
     GR_REPORT->SET_COLUMNS( CHANGING CO_ALV =  GR_TABLE ).
     GR_TABLE->DISPLAY( ).

运用类CL_SALV_TABLE实现alv相关推荐

  1. SAP 采购类报表实现ALV格式输出

    SAP 的一些标准报表格式极其不友好,如果不做特殊参数设定,报表使用起来很不方便.我们可以通过设置user parameter的方式,改变一些报表的显示格式,让其以ALV 列表形式显示结果,方便用户对 ...

  2. 【SAP Abap】SAP ALV开发(REUSE_ALV_GRID_DISPLAY_LVC)全网最详细 DEMO

    SAP ALV开发(REUSE_ALV_GRID_DISPLAY_LVC)全网最详细 DEMO 1.ALV 简介 2.演示程序 1.ALV 简介 ALV 报表程序,是我们在 SAP 项目中最常开发的程 ...

  3. 【ABAP】OO ALV 概述

    •OO ALV,是指通过面向对象(Object-Oriented)的方式实现的ALV输出 •基本使用原理: –通过界面调用,在界面的Customer Control控件中,输出ALV •CLASS A ...

  4. OO实现ALV TABLE 一:最简单的ALV显示

    以前都是通过函数"REUSE_ALV_GRID_DISPLAY"来显示列表,这种方式是面向过程的,现在有另外一种面向对象化的方式来显示列表,函数REUSE_ALV_GRID_DIS ...

  5. OO实现ALV TABLE 二:ALV显示的三种形式

    一般的ALV有三种显示形式,分别为 一.普通的List 二.全屏的Grid 三.在自定义屏幕的显示的Grid 跟以往实现这三种ALV显示方式相比,以往的三种显示方式分别是调用不同的Function和C ...

  6. OO实现ALV TABLE 三:ALV的功能设计

    细心的读者肯定已经注意前面的两个例子少了点什么,少了ALV提供的标准功能,比如排序,过滤,汇总,等,以及用户可以在ALV的功能栏上加上自己自定义的功能按钮. ALV的标准功能可以通过类CL_SALV_ ...

  7. OO实现ALV TABLE 四:ALV的显示样式

    通过类CL_SALV_DISPLAY_SETTINGS我们可以设置ALV的显示样式,主要包括ALV表头名称,列表颜色间隔显示,水平线是否显示,竖线是否显示等. 1.首先我们要取得类CL_SALV_DI ...

  8. OO实现ALV TABLE 六:ALV的弹出窗口形式

    前面的例子ALV列表都是直接输出在主窗口中,下面我们实现在弹出窗口中实现ALV.在弹出窗口中实现ALV也很简单,只要在实现类CL_SALV_TABLE的一个方法SET_SCREEN_POPUP就可以了 ...

  9. OO实现ALV TABLE 十:ALV的页眉页脚

    除了可以通过类CL_SALV_EVENTS_TABLE的事件设置ALV的页眉页脚之外,还可以通过类CL_SALV_TABLE的方法SET_TOP_OF_LIST,SET_TOP_OF_LIST_PRI ...

最新文章

  1. MySQL 性能调优的10个方法
  2. 对于session序列化跟session的钝化与活化的粗浅理解
  3. CF Educational Round 23 F.MEX Queries
  4. HBase 数据导入功能实现方式解释
  5. Python编程实现粒子群算法(PSO)详解
  6. 几分钟了解阿里云云服务器ECS
  7. Spring Boot 管理 MVC
  8. h5应用数据加密_邦伲德H5场景个性化开发,打破传统营销局限
  9. Android WebView重定向问题,Android WebView 重定向问题
  10. Python中yield简单用法
  11. docker执行容器内的shell_为什么不建议把数据库部署在docker容器内?
  12. python中的return函数-python中return的返回和执行
  13. python画曲线图-利用python绘制数据曲线图的实现
  14. 《TensorFlow技术解析与实战》——1.1 什么是人工智能
  15. 【资源挖掘】免费DEM数据下载
  16. 青岛高新职业学校计算机专业,“把灯光调亮 让我最后再好好看看你们” 青岛高新职业学校举行2021届毕业典礼...
  17. ERWIN中表结构导出到doc文件中
  18. Abp(.NetCore)开发与发布过程3-部署Ubuntu站点
  19. Camera幻灯片参数设置
  20. 计算机无法屏幕亮度,今天详解win10电脑屏幕亮度无法调节的具体解决手法

热门文章

  1. 使用OneHotEncoderEstimator操作Affairs
  2. 一个插排引发的设计思想 (三) 委托与事件
  3. 判断ShellExecute函数是否执行完一个程序的方法
  4. samba客户端的总结与归纳
  5. 十二天深入理解计算机系统(一)
  6. 自由职业者在合作之前要弄懂的15个问题
  7. 90后80后70后60后和50后的无奈
  8. 办公室里绝对不可谈论的4大话题
  9. 「实战篇」开源项目docker化运维部署-后端java部署(七)
  10. Eclipse 运行程序