CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BACKGROUND_ID = 'SIWB_WALLPAPER'
I_CALLBACK_PROGRAM = I_REPID
I_GRID_SETTINGS = LC_GLAY -------------------------
I_CALLBACK_HTML_TOP_OF_PAGE = W_HTML_TOP_OF_PAGE
I_BUFFER_ACTIVE = 'X'
* I_STRUCTURE_NAME = ''
* I_DEFAULT = 'X'
* I_SAVE = 'A'
* IS_VARIANT = W_VARIANT
IS_LAYOUT = W_LAYOUT
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = GD_FIELDCAT
IT_EVENTS = I_EVENTS
IT_EVENT_EXIT = I_EVENT_EXIT
IT_EXCLUDING = I_EXCLUDING
IS_PRINT = W_PRINT
* i_screen_start_column = 1
* i_screen_start_line = 1
* i_screen_end_column = 70
* i_screen_end_line = 30
TABLES
T_OUTTAB = GT_OUT.
其中需要设置: --------------------------------------
LC_GLAY-EDT_CLL_CB = 'X'.
=====(2)
首先编辑ALV的CALLER_EXIT事件,在call back的subroutine中做如下处理
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = W_ALV_GRID.
最后调用 W_ALV_GRID->CHECK_CHANGED_DATA( ).
ALV GRID中编辑的值就可以更新到ALV内表中了
例子如下:
PERFORM FM_EVENT_BUILD.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'"調用函數
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_DEFAULT = 'X'
I_SAVE = 'A'
IT_FIELDCAT_LVC = T_FIELDCAT
IS_LAYOUT_LVC = X_LAYOUT
IT_EVENTS = GV_EVENTS
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
---
FORM FM_EVENT_BUILD.
DATA LV_EVENT LIKE LINE OF GV_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = GV_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* LV_EVENT-NAME = 'CALLER_EXIT'.
* LV_EVENT-FORM = 'FM_BUTTON'.
* APPEND LV_EVENT TO GV_EVENTS.
* delete GV_EVENTS where name = 'USER_COMMAND'.
* LV_EVENT-NAME = 'USER_COMMAND'.
* LV_EVENT-FORM = 'USER_COMMAND'.
* APPEND LV_EVENT TO GV_EVENTS.
READ TABLE GV_EVENTS WITH KEY NAME = 'CALLER_EXIT' INTO LV_EVENT .
IF SY-SUBRC = 0 .
LV_EVENT-FORM = 'FM_BUTTON' .
APPEND LV_EVENT TO GV_EVENTS . "add form 'TOP_OF_PAGE' to the events,
ENDIF. "perform the FORM 'to_of_page' .
ENDFORM.
FORM FM_BUTTON USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.
DATA GV_GRID TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
E_GRID = GV_GRID
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
CREATE OBJECT GV_EVENT_RECEIVER.
SET HANDLER GV_EVENT_RECEIVER->HANDLE_BUTTON_CLICK FOR GV_GRID.
ENDFORM.