ALV报表开发
01、ALV介绍
ALV全名为Abap List View,是SAP一个数据报表显示工具,根据用户的需求调整各栏位顺序及格式,输入内表,选择相应字段,将结果输出到界面上。
02、ALV类别
ALV技术 | 类别 | 名称 | 优点 | 缺点 |
---|---|---|---|---|
Function ALV | 函数 | REUSE_ALV_GRID_DSIPLAY | 简单易用,生产性价比较高 | 不易控制画面,无法满足特定开发需求 |
ALV GRID | 类 | CL_GUI_ALV_GRID | 更灵活、更安全 | 面向对象开发导致初学者难上手,不能以Batch Job登录后在后台运行 |
SALV | 类 | CL_SALV_TABLE | 解决上述两种ALV实现方式的缺点 | 面向对象开发导致初学者难上手,不支持编辑模式 |
03、写一个简单的ALV报表程序
ALV对于初学者,无需深入了解各个参数的含义,只需要会复制粘贴,改改代码,能正常显示报表即可,等熟悉报表开发之后,再慢慢了解各个参数,便于后续开展定制化开发工作。
笔者实力低微,对面向对象开发还未了解,因此只能用传统的Function ALV写一个简单的报表,供初学者了解ALV是什么、ALV怎么用、以及ALV输出的结果是什么样的
TYPE-POOLS: slis.
TABLES: mara.
DATA: gs_layout_lvc TYPE lvc_s_layo,
gt_fcat_lvc TYPE lvc_t_fcat,
gs_fcat_lvc TYPE lvc_s_fcat.
*直接定义内表
DATA: BEGIN OF item OCCURS 0,
matnr LIKE mara-matnr, "物料编号
mtart LIKE mara-mtart, "物料类型
matkl LIKE mara-matkl, "物料组
END OF item.
* 筛选界面 单选p,多选s
SELECTION-SCREEN BEGIN OF BLOCK blc WITH FRAME TITLE text-001.
PARAMETERS: p_matnr LIKE mara-matnr."物料编号
SELECT-OPTIONS s_mtart FOR mara-mtart ."物料类型
SELECT-OPTIONS s_matkl FOR mara-matkl ."物料组
SELECTION-SCREEN END OF BLOCK blc.
* 初始化变量
INITIALIZATION.
DATA: it_item LIKE TABLE OF item WITH HEADER LINE.
START-OF-SELECTION.
PERFORM get_data.
PERFORM frm_set_fieldcat.
PERFORM frm_alv_display.
* 获取数据
FORM get_data.
clear: it_item.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_item
FROM mara.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_fieldcat
*&---------------------------------------------------------------------*
FORM frm_set_fieldcat .
DEFINE set_fieldcat.
CLEAR gs_fcat_lvc .
gs_fcat_lvc-fieldname = &1."内表的字段
gs_fcat_lvc-outputlen = &2."输出长度
gs_fcat_lvc-scrtext_l = gs_fcat_lvc-scrtext_s = gs_fcat_lvc-scrtext_m = &3."在ALV里面显示的名字
gs_fcat_lvc-just = &4."水平对齐方式,L左对齐,R右对齐。
gs_fcat_lvc-lzero = &5. "输出前导0
gs_fcat_lvc-no_zero = &6.
gs_fcat_lvc-emphasize = &7.
APPEND gs_fcat_lvc TO gt_fcat_lvc .
END-OF-DEFINITION.
set_fieldcat:
'matnr' '' '物料编号' '' '' '' '',
'mtart' '' '物料类型' '' '' '' '' ,
'matkl' '' '物料组' '' '' '' '' .
ENDFORM.
* 显示数据
FORM frm_alv_display .
gs_layout_lvc-sel_mode = 'A'.
*-调用ALV展示数据
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = gs_layout_lvc
it_fieldcat_lvc = gt_fcat_lvc[]
i_save = 'A'
i_default = 'X'
TABLES
t_outtab = it_item
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.