千家信息网

ALV 小结之一:简单报表、布局、平均求和

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,以表MARDH为例,来开发ALV报表。一、最简单的ALV报表先来做一个最简单的ALV报表。源码如下:REPORT zquy_alv_test_01.TYPE-POOLS slis.TABLES : m
千家信息网最后更新 2025年02月02日ALV 小结之一:简单报表、布局、平均求和

以表MARDH为例,来开发ALV报表。

一、最简单的ALV报表

先来做一个最简单的ALV报表。源码如下:

REPORT zquy_alv_test_01.
TYPE-POOLS slis.
TABLES : mardh.
DATA :it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,

BEGIN OF wa_data,
check TYPE c,
matnr TYPE matnr,
lgort TYPE lgort_d,
labst TYPE labst,
END OF wa_data,
wt_data LIKE wa_data OCCURS 100 WITH HEADER LINE.
PARAMETERS : p_lfgja TYPE lfgja OBLIGATORY,
p_lfmon TYPE lfmon OBLIGATORY.

START-OF-SELECTION.
PERFORM. get_data.
PERFORM. set_alv_layout.
PERFORM. dis_alv_grid.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* 填充数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM. get_data .
SELECT * INTO CORRESPONDING FIELDS OF TABLE wt_data FROM mardh WHERE lfgja = p_lfgja AND lfmon = p_lfmon AND labst > 1000.
ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form set_alv_layout
*&---------------------------------------------------------------------*
* 设置数据的显示格式
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM. set_alv_layout .
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'matnr'.
wa_fieldcat-seltext_m = '物料编码'.
APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'lgort'.
wa_fieldcat-seltext_m = '库区'.
APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'labst'.
wa_fieldcat-seltext_m = '非限制使用库存'.
APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. " set_alv_layout
*&---------------------------------------------------------------------*
*& Form dis_alv_grid
*&---------------------------------------------------------------------*
* 输出ALV列表
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM. dis_alv_grid .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
it_fieldcat = it_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = wt_data
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " dis_alv_grid

OK,运行程序后,输出如下:

二、设置ALV输出的格式

定义格式对象:

DATA:
lth_layout TYPE slis_layout_alv.

lth_layout-box_fieldname = 'CHECK'. //设置全选字段,别忘了在数据结构中加入此字段。
lth_layout-colwidth_optimize = 'X'. //设置列的宽度自动调整。
lth_layout-zebra = 'X'. // 设置间隔行颜色交替。

调用ALV显示控件:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = lth_layout
it_fieldcat = it_fieldcat
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = wt_data
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2.

做好调整后,运行程序,输出如下:

三、求和求平均值

wa_fieldcat-do_sum = 'A' //求这列的最大值。

wa_fieldcat-do_sum = 'B' //求这列的最小值。

wa_fieldcat-do_sum = 'C'. //求平均值,必须为大写。

按物料进行小计:

定义排序条件:

DATA : lt_sort TYPE slis_t_sortinfo_alv.

.......

START-OF-SELECTION.
PERFORM. get_data.
PERFORM. sort_build.
PERFORM. set_alv_layout.
PERFORM. dis_alv_grid.
FORM. sort_build .
DATA lwa_sort TYPE slis_sortinfo_alv.

lwa_sort-fieldname = 'MATNR'.

lwa_sort-up = 'X'.

lwa_sort-subtot = 'X'.

APPEND lwa_sort TO lt_sort.

ENDFORM. " SORT_BUILD

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = lth_layout
it_fieldcat = it_fieldcat
IT_SORT = lt_sort
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = wt_data
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2

如图:

11.jpg

22.jpg

33.jpg

输出 报表 数据 格式 字段 平均值 物料 程序 调整 运行 最大 最小 大写 宽度 对象 库区 库存 控件 数据结构 最大值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福师2022年2月基础数据库应用答案 如何在服务器部署语音识别 琅琊区网络安全 安徽质量软件开发 如何修改sql数据库数据 17年软件开发人员薪资 蓟县天气预报软件开发 计算机网络安全维护公司 为什么学无线网络技术 云数据库有什么功效 如何选择物联网数据库 保险公司数据库怎么整合数据 netty服务器搭建 杭州同欣网络技术有限公司金融 网络安全的绘画六年级高质量 余姚嵌入式软件开发服务 大型网站服务器架构与小型不同 关于网络安全对照检查 山东易时代网络技术有限公司 锐捷连接认证服务器 网页源码怎么注册到服务器上线 网络安全线上短视频接力活动总结 linux服务器管理工具 视频服务器手机版 专科软件开发学什么专业 保险公司数据库怎么整合数据 netty服务器搭建 汽车软件开发项目管理书籍 服务器四核主频3.5价格 发电企业安全性评价数据库
0