这是第一个OOALV简单的练习(切换显示/修改模式)。
REPORT ztest_yls_alv.
"第一步 定义变量
DATA:ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm,
g_container TYPE scrfname VALUE 'CONTAINER',
g_grid TYPE REF TO cl_gui_alv_grid, "alv网格
g_custom_container TYPE REF TO cl_gui_custom_container, "存放alv容器
gs_layout TYPE lvc_s_layo, "布局结构
g_max TYPE i VALUE 100.
DATA:gt_outtab TYPE TABLE OF sflight.
"第二步 画屏幕或者直接调用屏幕。
CALL SCREEN 1000.
MODULE status_1000 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
"第三步 复制gui 然后调用标准模板
SET PF-STATUS 'STANDARD'.
"第四步创建变量
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container.
CREATE OBJECT g_grid
EXPORTING
i_parent = g_custom_container.
"布局的设置
gs_layout-edit = 'X'.
gs_layout-zebra = 'X'.
"取数
SELECT * FROM sflight INTO TABLE gt_outtab UP TO g_max ROWS.
"调用方法
CALL METHOD g_grid->set_table_for_first_display "显示
EXPORTING
i_structure_name = 'SFLIGHT'
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab.
CALL METHOD g_grid->set_ready_for_input "编辑
EXPORTING
i_ready_for_input = 1.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_1000 INPUT.
save_ok = ok_code."pi用户事件处理
CLEAR ok_code.
CASE save_ok.
WHEN '&F03'.
PERFORM prm_exit_program.
WHEN 'ZSWITCH'.
PERFORM prm_edit_mode.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form PRM_EXIT_PROGRAM
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM prm_exit_program .
LEAVE PROGRAM.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_EDIT_MODE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM prm_edit_mode .
IF g_grid->is_ready_for_input( ) EQ 0.
*§4.Use SET_READY_FOR_INPUT to switch between the substates.
CALL METHOD g_grid->set_ready_for_input "切换是否可编辑
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
ENDFORM.