下面共享的是源代码。需创建SCREEN和状态栏
TABLES: marav,mara.
*---------------------------------------------------------------------*
DATA:
BEGIN OF gt_out OCCURS 100 ,
matnr LIKE marav-matnr,
maktx LIKE marav-maktx,
matkl LIKE marav-matkl,
ntgew LIKE marav-ntgew,
gewei LIKE marav-gewei,
END OF gt_out.
**定义变量 功能码
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
SELECT-OPTIONS: s_matnr FOR marav-matnr .
*--------------------------------------------------------------------*
START-OF-SELECTION.
gs_variant-report = sy-repid.
PERFORM prepare_layout CHANGING gs_layout . "设置LAYOUT
REFRESH gt_fieldcat. "清空FIELDCAT内表
PERFORM prepare_field_catalog CHANGING gt_fieldcat ."设置FIELD CATALOG
***抓取数据
SELECT * FROM marav
INTO CORRESPONDING FIELDS OF TABLE gt_out
WHERE
matnr IN s_matnr.
END-OF-SELECTION.
CALL SCREEN 100. " 需创建屏幕 并创建ALV容器命名为T_COL
*&---------------------------------------------------------------------*
*& Form PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->
S_LAYOUT text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
***设置LAYOUT属性
ps_layout-zebra = 'X' .
ps_layout-smalltitle = 'X' .
ps_layout-cwidth_opt = 'X'. "设置自动列宽
ps_layout-no_toolbar = ' '.
ps_layout-no_rowmark = 'X'.
ENDFORM. "
REPARE_LAYOUT
*&---------------------------------------------------------------------*
*& FORM PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
* 根据维护表的结构初始化ALV的FIELD CATALOG
*----------------------------------------------------------------------*
* -->
T_FIELDCAT TEXT
*----------------------------------------------------------------------*
FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .
DATA: ls_fieldcat TYPE lvc_s_fcat,
l_rows TYPE i VALUE 1.
***填充FIELDCAT内表<得到展示的字段>
CLEAR:ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-coltext = '物料'.
ls_fieldcat-no_zero = 'X'.
ls_fieldcat-col_pos = l_rows.
APPEND ls_fieldcat TO pt_fieldcat.
l_rows = l_rows + 1.
CLEAR:ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-coltext = '描述'.
ls_fieldcat-col_pos = l_rows.
APPEND ls_fieldcat TO pt_fieldcat.
l_rows = l_rows + 1.
CLEAR:ls_fieldcat.
ls_fieldcat-fieldname = 'NTGEW'.
ls_fieldcat-coltext = '重量'.
ls_fieldcat-col_pos = l_rows.
APPEND ls_fieldcat TO pt_fieldcat.
l_rows = l_rows + 1.
CLEAR:ls_fieldcat.
ls_fieldcat-fieldname = 'GEWEI'.
ls_fieldcat-coltext = '单位'.
ls_fieldcat-col_pos = l_rows.
APPEND ls_fieldcat TO pt_fieldcat.
l_rows = l_rows + 1.
ENDFORM . "
REPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
*& FORM EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
* 去除不要的ALV工具栏按钮
*----------------------------------------------------------------------*
* <--P_LT_EXCLUDE TEXT
*----------------------------------------------------------------------*
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
ENDFORM. "EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'. "需创建设置界面可以操作的按钮
gs_variant-report = sy-repid.
IF gr_alvgrid IS INITIAL .
***建立对象
CREATE OBJECT alv_custom_container
EXPORTING
container_name = alv_container.
CREATE OBJECT gr_alvgrid "ALV_GRID
EXPORTING
i_parent = alv_custom_container. "将数据装载到控制屏幕中
***设置标题 需创建
SET TITLEBAR '100'.
***排除不要的按钮
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = sy-ucomm.
CLEAR: ok_code.
***响应工具栏事件
CASE save_ok.
WHEN 'BACK'.
SET SCREEN 0 . "按返回 按钮,返回选择屏幕
WHEN 'EXIT'.
LEAVE PROGRAM. "退出程序
WHEN OTHERS.
ENDCASE.
CASE sy-ucomm.
WHEN 'CODE'.
MESSAGE 'SUCESS' TYPE 'S'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT