abap 屏幕显示ALV
abap 屏幕显示ALV




REPORT ZPCYMOKUAI.
TYPE-pools: slis.
DATA: i_layout TYPE slis_layout_alv. " 定义布局结构
DATA: gt_spfli TYPE TABLE OF spfli,
gs_spfli TYPE spfli.
" ===== 1. 全局变量声明区 =====
DATA: stu_id TYPE string,
stu_name TYPE string.
DATA: ok_code TYPE sy-ucomm.
DATA: grid TYPE REF TO cl_gui_alv_grid,
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
g_custom_container1 TYPE REF TO cl_gui_custom_container,
gt_sflight TYPE TABLE OF sflight.
" ===== 2. 可执行的启动事件(必须添加这个事件块) =====
START-OF-SELECTION.
CALL SCREEN 0100.
" ===== 3. 屏幕逻辑模块(PBO 和 PAI) =====
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET TITLEBAR 'TITLE_0100'.
SET PF-STATUS 'STANDARD'.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = 'CCCONTAINER'.
CREATE OBJECT grid
EXPORTING
i_parent = g_custom_container.
ENDIF.
IF g_custom_container1 IS INITIAL.
CREATE OBJECT g_custom_container1
EXPORTING
container_name = 'CCTABLE'.
CREATE OBJECT grid1
EXPORTING
i_parent = g_custom_container1.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
"MESSAGE '按钮被点击了' TYPE 'I'. " 测试消息
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'SEARCH'.
DATA tempvalue TYPE c LENGTH 10.
tempvalue = |%{ stu_id }%|.
SELECT * FROM sflight INTO TABLE gt_sflight WHERE currency LIKE tempvalue.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight.
WHEN 'SHOW'. " 新增按钮的处理
PERFORM f1000_layout_init CHANGING i_layout.
PERFORM f_display_data.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*----------------------------------------------------------------------*
* FORM F_DISPLAY_DATA
*----------------------------------------------------------------------*
FORM f_display_data .
CLEAR gt_spfli[].
SELECT *
FROM spfli
INTO TABLE gt_spfli
UP TO 1000 ROWS.
IF sy-subrc <> 0.
MESSAGE '未查询到任何数据' TYPE 'I'.
EXIT.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'SPFLI'
I_SAVE = 'A'
is_layout = i_layout
TABLES
t_outtab = gt_spfli[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'ALV显示出错' TYPE 'E'.
ENDIF.
ENDFORM.
FORM f1000_layout_init USING i_layout TYPE slis_layout_alv.
CLEAR i_layout.
i_layout-colwidth_optimize = 'X'. " 自动优化列宽
i_layout-zebra = 'X'. " 斑马条纹
i_layout-totals_text = '合计'. " 合计行文本
i_layout-no_colhead = ''. " 显示列标题
ENDFORM.
预览:

浙公网安备 33010602011771号