一个简单的学习例子(基于screen的alv)
执行按钮后
点击左上角的修改按钮
偷了个小懒,没有根据模块池的方式做。
REPORT Z_TEST_STL002.
TABLES T001.
SELECT-OPTIONS S_BUKRS FOR t001-BUKRS.
SELECT-OPTIONS S_ORT01 FOR t001-ORT01.
DATA:OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM,
G_C_CTR TYPE SCRFNAME VALUE 'ALV_GRID_OO_CTRL',
G_GRID TYPE REF TO CL_GUI_ALV_GRID,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GS_LAYOUT TYPE LVC_S_LAYO.
DATA GT_T001 TYPE TABLE OF T001.
START-OF-SELECTION.
call SCREEN 0100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ST001'.
SET TITLEBAR 'TT001'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module INIT_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INIT_0100 OUTPUT.
IF G_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_C_CTR.
CREATE OBJECT G_GRID
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
GS_LAYOUT-EDIT = 'X'.
SELECT *
FROM T001
INTO TABLE GT_T001
WHERE BUKRS IN S_BUKRS
AND ORT01 IN S_ORT01.
设置初期显示数据
CALL
METHOD G_GRID
->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING I_STRUCTURE_NAME = 'T001'
IS_LAYOUT = GS_LAYOUT
CHANGING IT_OUTTAB = GT_T001 .
初始默认可编辑状态
CALL
METHOD G_GRID
->SET_READY_FOR_INPUT
EXPORTING I_READY_FOR_INPUT = 1 .
ENDIF .
ENDMODULE . " INIT_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT .
SAVE_OK = OK_CODE .
CLEAR OK_CODE .
CASE SAVE_OK .
WHEN 'EXIT' .
LEAVE PROGRAM .
WHEN 'SWITCH' .
PERFORM SWITCH_EDIT_MODE .
WHEN OTHERS .
* do nothing
ENDCASE .
ENDMODULE . " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form SWITCH_EDIT_MODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SWITCH_EDIT_MODE .
IF G_GRID ->IS_READY_FOR_INPUT ( ) EQ 0 .
可编辑状态
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 . " SWITCH_EDIT_MODE