#1 ALV快速模板
提示:
不了解我可以点这里看看哟.
文章目录
前言
大部分时候,我们的需求最常见的就是开发报表
如果只是简单的报表还好,有的报表是层层嵌套屏幕,每次重头开始略有点费劲,
所以就有了快速模板,CV大法,然后再处理业务逻辑。
一、普通ALV
业务和用户只想看看数据没什么操作,5min
REPORT YYTEST001.
DATA : gt_ekpo TYPE TABLE OF ekpo .
DATA : gr_table TYPE REF TO cl_salv_table ,
gr_sorts TYPE REF TO cl_salv_sorts , " Sorts – CL_SALV_SORTS
gr_agg TYPE REF TO cl_salv_aggregations , " Aggregations – CL_SALV_AGGREGATIONS
gr_functions TYPE REF TO cl_salv_functions , " Tool bar
gr_columns TYPE REF TO cl_salv_columns_table , " Columns – CL_SALV_COLUMNS_TABLE and CL_SALV_COLUMN_TABLE
gr_column TYPE REF TO cl_salv_column_table ,
lw_color TYPE lvc_s_colo.
START-OF-SELECTION .
" 读取后处理数据
SELECT *
INTO TABLE gt_ekpo FROM ekpo UP TO 100 rows .
cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = gt_ekpo ).
" tool bar
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
"Columns – CL_SALV_COLUMNS_TABLE and CL_SALV_COLUMN_TABLE
* gr_columns = gr_table->get_columns( ).
* gr_column ?= gr_columns->get_column( 'ZMRQNO' ).
* gr_column->set_long_text( '测试文本' ).
* gr_column->set_medium_text( '测试文本' ).
* gr_column->set_short_text( '测试文本' ).
"整列不显示
gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'MANDT' ).
CALL METHOD gr_column->set_visible
EXPORTING
value = if_salv_c_bool_sap=>false.
"排序
gr_sorts = gr_table->get_sorts( ).
gr_sorts->add_sort( columnname = 'EBELN' ).
* Aggregations – CL_SALV_AGGREGATIONS
" 汇总一列
gr_agg = gr_table->get_aggregations( ).
gr_agg->add_aggregation( 'MENGE' ).
gr_table->display( ).
另外还有种相对low一点的模板。
这种的好处就是方便业务经常变化,比如和用户沟通后需求变来变去,比如一会要加个联动,
一会要加个按钮,这个就比较方便经常的修改。
REPORT yytest002.
*&--------------------------------------*
*& 功能说明:
*& 创建人:
*& 日期
*&
*& 开发顾问 请求 业务顾问 时间 修改内容
*&
*&--------------------------------------*
INCLUDE yytest002_top .
INCLUDE yytest002_sel .
INCLUDE yytest002_main .
INCLUDE yytest002_frm .
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_TOP
*&---------------------------------------------------------------------*
"""""""""""""""""""""""TABLE"""""""""""""""""""""""""""""""""""
TYPE-POOLS : slis .
TABLES : sscrfields .
"""""""""""""""""""""""Type Define"""""""""""""""""""""""""""""
TYPES : BEGIN OF ty_alv ,
sel TYPE char1 ,
END OF ty_alv .
"""""""""""""""""""""""Inner Table"""""""""""""""""""""""""""""
DATA : gt_alv TYPE TABLE OF ty_alv .
"""""""""""""""""""""""Global Value""""""""""""""""""""""""""""
DATA : gw_alv TYPE ty_alv .
""""""""""""""""""""""" ALV """""""""""""""""""""""""""""""""""
DATA : gw_fieldcat TYPE slis_fieldcat_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gw_layout TYPE slis_layout_alv.
"""""""""""""""""""""""Define Macro"""""""""""""""""""""""""""""""""
DEFINE add_fieldcat_alv .
CLEAR : gw_fieldcat .
gw_fieldcat-fieldname = &1 .
gw_fieldcat-seltext_l = &2 .
gw_fieldcat-outputlen = &3 .
gw_fieldcat-hotspot = &4 .
APPEND gw_fieldcat TO gt_fieldcat .
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
SELECT-OPTIONS :
PARAMETERS :
SELECTION-SCREEN END OF BLOCK b1 .
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_MAIN
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Initialization
*------------------------------------------------