"数据更改事件
IS_EVENTS-NAME = IS_EVENTS-FORM = 'DATA_CHANGED'.
APPEND IS_EVENTS TO IT_EVENTS.
"单元格值修改回调设置,否则需要双击生效
IS_GRID-EDT_CLL_CB = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'FRM_USER_STATUS'
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND '
"I_CALLBACK_TOP_OF_PAGE = 'FRM_TOP_PAGE'
IS_LAYOUT_LVC = IS_LAYO
IT_FIELDCAT_LVC = IT_FIELD
IT_EVENTS = IT_EVENTS
I_GRID_SETTINGS = IS_GRID
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = IT_ALV
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*&---------------------------------------------------------------------*
*& Form data_changed
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM DATA_CHANGED USING PCL_DATA TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
DATA CDAT TYPE C LENGTH 10.
DATA LV_CHARG LIKE IS_ALV-CHARG_MJ.
DATA(LT_MOD_CELL) = PCL_DATA->MT_MOD_CELLS .
" MESSAGE '触发!' TYPE 'I'.
LOOP AT LT_MOD_CELL INTO DATA(LS_MOD_CELL)."所有修改的单元格内容与行
CLEAR LV_CHARG.
CASE LS_MOD_CELL-FIELDNAME.
WHEN 'CHK'."修改字段名
"读取修改行
READ TABLE IT_ALV INTO IS_ALV INDEX LS_MOD_CELL-ROW_ID.
IF SY-SUBRC = 0.
"修改后的值
IS_ALV-CHK = 'X'.
ENDIF.
ENDCASE.
ENDLOOP.
DATA: IS_GRID TYPE REF TO CL_GUI_ALV_GRID,
Is_STBL TYPE LVC_S_STBL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = IS_GRID.
IS_STBL-ROW = 'X'." 基于行稳定刷新
IS_STBL-COL = 'X'." 基于列稳定刷新
CALL METHOD IS_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = Is_STBL.
ENDFORM.
06-23
4809

07-07
1798

06-04
1993

09-30
1631
