1.SALV
SALV用的是类cl_salv_table下的相关方法,一般用于对话框或者功能要求比较简单的数据显示,比如明细数据显示,不能单元格编辑或者某行某列编辑,可以实现全部数据编辑(实用性不强),如要实现编辑可参考这篇博文 https://mp.weixin.qq.com/s?__biz=MzU1MDAzMDY3MQ==&mid=2247486617&idx=1&sn=b5680cdc73546d9648bec27170666106&scene=21#wechat_redirect,用的比较多的还是FUNCTION ALV或者OOALV。
2.简单SALV
本例展示最简单的SALV,只显示ALV,不注册事件。
测试代码如下:
REPORT zys096 .
DATA: gt_spfli TYPE TABLE OF spfli.
DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_columns TYPE REF TO cl_salv_columns.
START-OF-SELECTION.
SELECT * INTO TABLE gt_spfli FROM spfli.
cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = gt_spfli ).
gr_columns = gr_table->get_columns( ).
gr_columns->set_optimize( abap_true ).
gr_table->display( ).
效果展示如下:
3.较复杂SALV
本例中展示复杂功能的SALV,注册事件,包含功能如下:
1>全屏模式:显示状态STATUS及加按钮,注意在程序中建立status。
2>弹出框模式:设定弹出框位置及大小,没有set_screen_popup则为全屏显示
3>设定LAYOUT,比如布局
4>设置ALV的字段属性,比如是否显示,标题文本,ICON(图标)
5>设置单元格的样式,比如按钮,热键
6>注册事件包含双击,单击,按钮
测试代码如下:
REPORT zys097 .
TABLES mara.
DATA:go_table TYPE REF TO cl_salv_table.
DATA:BEGIN OF gs_itab,
sel,
icon TYPE char20,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
werks TYPE werks_d,
count TYPE i,
type TYPE c,
msg TYPE string,
button TYPE char20.
DATA: celltype TYPE salv_t_int4_column, "单元格格式,比如把单元格设置成热键,按钮
END OF gs_itab,
gt_itab LIKE TABLE OF gs_itab.
SELECT-OPTIONS:s_matnr FOR mara-matnr.
START-OF-SELECTION.
PERFORM frm_get_data.
END-OF-SELECTION.
PERFORM frm_out_data.
&---------------------------------------------------------------------
*& Form FRM_GET_DATA
&---------------------------------------------------------------------
FORM frm_get_data.
DATA: lt_celltype TYPE salv_t_int4_column.
DATA: ls_celltype LIKE LINE OF lt_celltype.
DATA: lv_tabix TYPE i.
SELECT a