Professional Documents
Culture Documents
Alv Save Download-1245
Alv Save Download-1245
*---------------------------------------------------------------------*
*
CLASS lcl_event_d0100 DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event DEFINITION.
PUBLIC SECTION.
METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORT
ING E_ucomm.
TYPE-POOLS : cndp.
DATA : ok_code TYPE sy-ucomm.
ENDCLASS.
"LCL_EVENT DEFINITION
*---------------------------------------------------------------------*
*
CLASS LCL_EVENT IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event IMPLEMENTATION.
METHOD handle_user_command.
DATA : w_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA : it_rows TYPE lvc_t_row,
it_index TYPE lvc_s_row-index.
CASE E_Ucomm.
WHEN 'SAVE'.
PERFORM save_database.
CALL METHOD o_grid->refresh_table_display.
ENDCASE.
ENDMETHOD.
"HANDLE_USER_COMMAND
ENDCLASS.
*END-OF-SELECTION.
START-OF-SELECTION.
SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE itab UP TO 10 ROWS.
CALL SCREEN 9000.
**&---------------------------------------------------------------------*
**&
Module USER_COMMAND_9000 INPUT
**&---------------------------------------------------------------------*
**
text
**----------------------------------------------------------------------*
*module USER_COMMAND_9000 input.
*
*DATA : E_UCOMM TYPE SY-UCOMM.
*LV_UCOMM = SY-UCOMM.
*CASE E_UCOMM.
*WHEN 'SAVE'.
*PERFORM SAVE_DATABASE.
*CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY.
*
*WHEN 'BACK'.
*PERFORM FREE_OBJECTS.
*SET SCREEN 0.
*LEAVE SCREEN.
*
*ENDCASE.
*
*endmodule.
" USER_COMMAND_9000 INPUT
*
*&---------------------------------------------------------------------*
*&
Module ALV_POPULATE OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ALV_POPULATE output.
IF o_docking IS INITIAL.
* SET PF-STATUS 'PF'.
* SET TITLEBAR 'xxx'.
*CREATIONG DOCKING CONTAINER AND GRID
PERFORM create_object.
*FILLING THE FIELDCATALOG TABLE
PERFORM create_fieldcat.
*SETTING LAYOUT.
PERFORM set_layout.
*COLORING A CELL
*
PERFORM color_cell.
*
*MAKING A CELL EDITABLE
*
PERFORM cell_edit.
PERFORM EVENT.
*DISPLAYING THE OUTPUT.
PERFORM display.
ENDIF.
endmodule.
*&---------------------------------------------------------------------*
*&
Form CREATE_OBJECT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM create_object .
CREATE OBJECT o_docking
EXPORTING
*
PARENT
=
*
REPID
=
*
DYNNR
=
*
SIDE
= DOCK_AT_LEFT
*
EXTENSION
= 50
*
STYLE
=
*
LIFETIME
= lifetime_default
*
CAPTION
=
*
METRIC
= 0
ratio
= '95'
*
NO_AUTODEF_PROGID_DYNNR
=
*
NAME
=
* EXCEPTIONS
*
CNTL_ERROR
= 1
*
CNTL_SYSTEM_ERROR
= 2
*
CREATE_ERROR
= 3
*
LIFETIME_ERROR
= 4
*
LIFETIME_DYNPRO_DYNPRO_LINK = 5
*
others
= 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
ENDFORM.
" CREATE_OBJECT
*&---------------------------------------------------------------------*
*&
Form CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM create_fieldcat .
*
*
*
*
ENDFORM.
" CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*&
Form DISPLAY
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display .
CALL METHOD o_grid->set_table_for_first_display
EXPORTING
*
I_BUFFER_ACTIVE
=
*
I_BYPASSING_BUFFER
=
*
I_CONSISTENCY_CHECK
=
I_STRUCTURE_NAME
= 'MARA'
*
is_variant
= w_variant
*
i_save
= 'A'
*
I_DEFAULT
= 'X'
is_layout
= i_layout
*
IS_PRINT
=
*
IT_SPECIAL_GROUPS
=
*
IT_TOOLBAR_EXCLUDING
=
*
IT_HYPERLINK
=
*
IT_ALV_GRAPHICS
=
*
IT_EXCEPT_QINFO
=
CHANGING
it_outtab
= itab
it_fieldcatalog
= i_field
*
IT_SORT
=
*
IT_FILTER
=
EXCEPTIONS
invalid_parameter_combination = 1
program_error
= 2
too_many_lines
= 3
OTHERS
= 4
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
" DISPLAY
*&---------------------------------------------------------------------*
*&
Form SAVE_DATABASE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM save_database .
CALL METHOD o_grid->get_selected_rows
IMPORTING
ET_INDEX_ROWS = I_SELECTED_ROWS.
*
ET_ROW_NO
=
.
LOOP AT I_SELECTED_ROWS INTO W_SELECTED_ROWS.
READ TABLE ITAB INTO WA INDEX W_SELECTED_ROWS-INDEX.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING WA TO WA_MODIFIED.
APPEND WA_MODIFIED TO I_MODIFIED.
ENDIF.
ENDLOOP.
MODIFY MARA FROM TABLE I_MODIFIED.
ENDFORM.
" SAVE_DATABASE
*&---------------------------------------------------------------------*
*&
Form set_layout
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM set_layout .
i_layout-edit = 'X'.
ENDFORM.
" set_layout
*&---------------------------------------------------------------------*
*&
Form EVENT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form EVENT .
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER event_receiver->handle_user_command FOR o_grid.
*CALL METHOD o_grid->register_edit_event
* EXPORTING
*
i_event_id = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED
** EXCEPTIONS
**
ERROR
= 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.
endform.
" EVENT
*&---------------------------------------------------------------------*
*&
Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
*&---------------------------------------------------------------------*
*&
Form FREE_OBJECTS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form FREE_OBJECTS .
endform.
" FREE_OBJECTS