Академический Документы
Профессиональный Документы
Культура Документы
Attachments:3
Added by Guest, last edited by Manish Kumar on Jul 10, 2013 (view change)
show comment
Go to start of metadata
This example shows the ALV grid with flights using class methods.The ALV grid shows the flight details and after selecting a line a change
button can be pushed to display a change screen [stage:screen 200]. After the changes have been saved, the ALV grid screen is displayed
again, and the grid is updated with the changes. The ALV Grid has traffic lights and colors for showing updates.The table data is also updated
with the changes.
Coloring a line
Steps:
Create screen 100 with the ALV grid. Remember to include an exit button
REPORT
sapmz_hf_alv_grid.
METHOD handle_toolbar.
EVENT HANDLER METHOD FOR EVENT TOOLBAR.
CONSTANTS:
CONSTANTS FOR BUTTON TYPE
c_button_normal
c_menu_and_default_button
c_menu
c_separator
c_radio_button
c_checkbox
c_menu_entry
DATA: ls_toolbar
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
i
i
i
i
i
i
i
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
0,
1,
2,
3,
4,
5,
6.
TYPE stb_button.
*
*
*
*
CLEAR ls_toolbar.
MOVE 'CHANGE'
MOVE icon_change
MOVE 'Change flight'
MOVE 'Change'
MOVE ' '
APPEND ls_toolbar
*This code is for giving
TO ls_toolbar-function.
TO ls_toolbar-icon.
TO ls_toolbar-quickinfo.
TO ls_toolbar-text.
TO ls_toolbar-disabled.
TO e_object->mt_toolbar.
space in between two icons
*
*
*
*
*
*
*
*
*
*
*
*
CLEAR ls_toolbar.
MOVE c_separator TO ls_toolbar-butn_type..
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'SAVE'
TO ls_toolbar-function.
MOVE icon_display_text
TO ls_toolbar-icon.
MOVE 'Display flight' TO ls_toolbar-quickinfo.
MOVE 'Display'
TO ls_toolbar-text.
MOVE ' '
TO ls_toolbar-disabled.
APPEND ls_toolbar
TO e_object->mt_toolbar.
ENDMETHOD.
"handle_toolbar
METHOD handle_user_command.
* HANDLE OWN FUNCTIONS IN THE TOOLBAR
CASE e_ucomm.
WHEN 'CHANGE'.
PERFORM change_flight.
ENDCASE.
ENDMETHOD.
"handle_user_command
ENDCLASS.
"lcl_event_receiver IMPLEMENTATION
*-------------------------------------------------------------------* S T A R T - O F - S E L E C T I O N.
*-------------------------------------------------------------------START-OF-SELECTION.
SET SCREEN '100'.
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
DATA:
*
FOR PARAMETER 'IS_VARIANT' THAT IS SAID TO SET UP OPTIONS FOR STORING
*
THE GRID LAYOUT AS A VARIANT IN METHOD SET_TABLE_FOR_FIRST_DISPLAY .
l_layout TYPE disvariant,
*
UTLITY FIELD
l_lines TYPE i.
* AFTER RETURNING FROM SCREEN 200 THE LINE THAT WAS SELECTED BEFORE GOING TO SCREEN 200, SHOULD
* THE TABLE GI_INDEX_ROWS WAS THE OUTPUT TABLE FROM THE GET_SELECTED_ROWS METHOD IN FORM CHANGE
*
*
*
*
NAME OF THE EXCEPTION FIELD (TRAFFIC LIGHT FIELD) AND THE COLOR
FIELD + SET THE EXCEPTION AND COLOR FIELD OF THE TABLE
gs_layout-excp_fname = 'TRAFFIC_LIGHT'.
gs_layout-info_fname = 'LINE_COLOR'.
LOOP AT gi_zsflight INTO g_wa_zsflight.
IF g_wa_zsflight-paymentsum < 100000.
*
*
ENDLOOP.
*
*-- END OF GRID SETUP ------------------------------------------* RAISE EVENT TOOLBAR TO SHOW THE MODIFIED TOOLBAR
CALL METHOD go_grid->set_toolbar_interactive.
*
*
SET FOCUS TO THE GRID . THIS IS NOT NECESSERY IN THIS EXAMPLE AS THERE IS ONLY ONE CONTROL IN TH
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_grid.
ENDIF.
ENDMODULE.
" STATUS_0100
OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0201 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'EXIT200'.
LEAVE TO SCREEN 100.
WHEN'SAVE'.
PERFORM save_changes.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0201
INPUT
*&---------------------------------------------------------------------*
*&
Form get_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM get_data.
* Read data from table ZSFLIGHT
SELECT *
FROM zsflight
INTO TABLE gi_zsflight.
ENDFORM.
" load_data_into_grid
*&---------------------------------------------------------------------*
*&
Form change_flight
*&---------------------------------------------------------------------*
* READS THE CONTENTS OF THE SELECTED ROW IN THE GRID AND TRANSFERS
* THE DATA TO SCREEN 200 , WHERE IT CAN BE CHANGED AND SAVED .
*----------------------------------------------------------------------*
FORM change_flight.
DATA:l_lines TYPE i.
REFRESH gi_index_rows.
CLEAR
g_selected_row.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
** READ INDEXES OF SELECTED ROWS . IN THIS EXAMPLE ONLY ONE ROW CAN BE SELECTED AS WE ARE USING
'B',
** SO IT IS ONLY NECESSARY TO READ THE FIRST ENTRY IN TABLE GI_INDEX_ROWS
**
LOOP AT gi_index_rows INTO g_selected_row.
IF sy-tabix = 1.
READ TABLE gi_zsflight INDEX g_selected_row-index INTO g_wa_zsflight.
ENDIF.
ENDLOOP.
*
* TRANSFER DATA FROM THE SELECTED ROW TO SCREEN 200 AND SHOW SCREEN 200
CLEAR g_screen200.
MOVE-CORRESPONDING g_wa_zsflight TO g_screen200.
LEAVE TO SCREEN '200'.
ENDFORM.
" change_flight
*&---------------------------------------------------------------------*
*&
Form save_changes
*&---------------------------------------------------------------------*
* CHANGES MADE IN SCREEN 200 ARE WRITTEN TO THE DATABASE TABLE ZSFLIGHT,
* AND TO THE GRID TABLE GI_ZSFLIGHT, AND THE GRID IS UPDATED WITH
* METHOD REFRESH_TABLE_DISPLAY TO DISPLAY THE CHANGES.
*----------------------------------------------------------------------*
FORM save_changes.
DATA: l_traffic_light TYPE c.
* UPDATE TRAFFIC LIGHT FIELD
" save_changes