一、SALV 介绍和简单的SALV案例

58 篇文章 3 订阅
SALV是SAPNetweaver04引入的面向对象的ALV开发类,旨在统一不同类型的ALV开发。它包括CL_SALV_TABLE、CL_SALV_HIERSEQU_TABLE和CL_SALV_TREE等类,支持2D表格、层次结构和树形结构显示。示例代码展示了如何使用CL_SALV_TABLE类创建和显示一个简单的ALV表格,包括数据抽取和ALV实例的生成与显示。
摘要由CSDN通过智能技术生成

SALV 介绍和简单的SALV案例

一、SALV介绍

​ SAP Netweaver 04SAP引入了一个新的Class Cl_SALV 来进行面向对象(OO ALV) 的开发。在SAP Netweaver之前,我们可以根据ALV的展现方式(Tabular, Tree, Hierarchical),ALV的类型(List or Grid)来决定用什么来开发ALV.比如,如果想用控件框架,我们要用到class CL_GUI_ALV_GRID来创建ALV,为避免这种选择综合症,SAP推出了一个万能模式–完全基于面向对象的ALV类家族,如下:

ALV FlavourClass
Simple 2D table displayCL_SALV_TABLE
Hierarchical ALV displayCL_SALV_HIERSEQU_TABLE
Tree AlV using classCL_SALV_TREE

CL_SALV_TABLE:一般ALV

CL_SALV_HIERSEQU_TABLE:以层次结构显示的ALV

CL_SALV_TREE:树形结构ALV

SALV有点很多,SALV可以像使用函数方式生成ALV那样,不用创建屏幕就可以调用的全屏方式显示的ALV

而且最重要的是,SALV的GRID报表可以在后台运行

二、实现与代码

所有的SALV类都是通过静态方法,CL_SALV_TABLE=>FACTORY 生成ALV的实例(instance),然后调用实例方法display显示ALV

下面代码是通过class CL_SALV_TABLE实现SALV的简单实例:

*&---------------------------------------------------------------------*
*& 一个简单的通过类CL_SALV_TABLE生成SALV的例子
*&---------------------------------------------------------------------*
REPORT zabap_salv1.
*
*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
*
  PUBLIC SECTION.
*
*   定义SALV输出内表
    TYPES: BEGIN OF ty_vbak,
             vbeln TYPE vbak-vbeln,
             erdat TYPE erdat,
             auart TYPE auart,
             kunnr TYPE kunnr,
           END OF ty_vbak.
*
    DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.
*
*   ALV reference
    DATA: o_alv TYPE REF TO cl_salv_table.
*
    METHODS:
*     抽取数据
      get_data,
*
*     生成输出内容
      generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
*    In this section we will define the private methods which can
*      be implemented to set the properties of the ALV and can be
*      called in the
*
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
*
ENDCLASS.                    "lcl_report DEFINITION
*
*
START-OF-SELECTION.
  DATA: lo_report TYPE REF TO lcl_report.
*
  CREATE OBJECT lo_report.
*
  lo_report->get_data( ).
*
  lo_report->generate_output( ).
*
*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
  METHOD get_data.
*   抽取数据
    SELECT vbeln
           erdat
           auart
           kunnr
      INTO TABLE t_vbak
      FROM vbak
           UP TO 20 ROWS.
*
  ENDMETHOD.                    "get_data
*
*.......................................................................
  METHOD generate_output.
*   New ALV instance
*   We are calling the static Factory method which will give back
*   the ALV object reference.
*
* exception class
    DATA: lx_msg TYPE REF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = o_alv
          CHANGING
            t_table      = t_vbak ).
      CATCH cx_salv_msg INTO lx_msg.
    ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
*    In this area we will call the methods which will set the
*      different properties to the ALV
*
*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*
* Displaying the ALV
*   调用Display方法将数据输出到屏幕上
    o_alv->display( ).
*
  ENDMETHOD.                    "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
*    In this area we will implement the methods which are defined in
*      the class definition
*
*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
*
ENDCLASS.                    "lcl_report IMPLEMENTATION
三、执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5EUopN7L-1678612397557)(D:\学习计划笔记\SALV\IMAGE\image-20220416110936888.png)]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值