2008 Aug 25 10:25 AM
hi
I used two ALV Grids in two screens ,if we change data in first screen grid that should effect in second screen Grid also , but now
in second scree first time i am getting correct values but next time if i go same previous data is coming in GRID is there any explicit method
to clear Grid contents.
thx
hi
I used two ALV Grids in two screens ,if we change data in first screen grid that should effect in second screen Grid also , but now
in second scree first time i am getting correct values but next time if i go same previous data is coming in GRID is there any explicit method
to clear Grid contents.
thx
2008 Aug 25 10:26 AM
hi,
Just referesh the internal table u r passing to the ALV.
Regards,
Anversha
2008 Aug 25 10:30 AM
you have to Call the method REFRESH_TABLE_DISPLAY method of the Corresponding Gird in your case it is second grid . and you will be able to see the values.
2008 Aug 25 10:30 AM
Hi,
This generally happens when we donot referesh or clear the internal table or workarea.
So refresh the data in internal table before used .
example :
CLEAR: g_wa_outtab.
REFRESH: g_t_outtab.hope this helps.
thanx,
dhanashri.
Edited by: Dhanashri Pawar on Aug 25, 2008 11:32 AM
2008 Aug 25 10:32 AM
Hello Lakshmi
You may have a look at my sample report ZUS_SDN_TWO_ALV_GRIDS_2SCR.
Double-click on a customer on the first screen and its sales areas are displayed on the second screen.
Go back and repeat this using another customer.
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_TWO_ALV_GRIDS_2SCR
*&
*&---------------------------------------------------------------------*
*& Thread: clear GRID
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1017969"></a>
*&
*& Thread: ALV Grid OO u2013 Get_selected_rows u2013 I can I re-display ALV Grid with selected
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="924061"></a>
*&
*& Thread: CL_GUI_ALV_GRID-GET_SELECTED_ROWS Parameter ET_INDEX_ROWS not filled.
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="826287"></a>
*&
*& Thread: ALV double-click
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="900214"></a>
*&---------------------------------------------------------------------*
*& Screen '0100' contains no elements.
*& ok_code -> assigned to GD_OKCODE
*&
*& Flow logic:
* PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*&
*& Screen '0200': copy of screen '0100' (for the sake of simplicity)
*&---------------------------------------------------------------------*
REPORT zus_sdn_two_alv_grids_2scr.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syrepid,
*
go_docking1 TYPE REF TO cl_gui_docking_container,
go_docking2 TYPE REF TO cl_gui_docking_container,
go_grid1 TYPE REF TO cl_gui_alv_grid,
go_grid2 TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo.
DATA:
gt_outtab1 TYPE STANDARD TABLE OF knb1,
gt_outtab2 TYPE STANDARD TABLE OF knvv.
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
* define local data
DATA:
lt_rows type lvc_t_row.
CHECK ( sender = go_grid1 ).
append e_row to lt_rows.
CALL METHOD go_grid1->set_selected_rows
EXPORTING
it_index_rows = lt_rows
* it_row_no =
* is_keep_other_selections =
.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_outtab1
WHERE bukrs = '1000'.
PERFORM init_controls.
* Display data
gs_layout-grid_title = 'Customers'.
gs_layout-sel_mode = 'D'. " multiple row selection
gs_layout-sel_mode = ' '. " single row selection
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'KNB1'
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab1
EXCEPTIONS
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.
gs_layout-grid_title = 'Customers Details (Sales Areas)'.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'KNVV'
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab2 " empty !!!
EXCEPTIONS
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.
gd_repid = syst-repid.
* Link the docking container to the target dynpro
CALL METHOD go_docking1->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
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.
* Link the docking container to the target dynpro
CALL METHOD go_docking2->link
EXPORTING
repid = gd_repid
dynnr = '0200'
* CONTAINER =
EXCEPTIONS
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.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro '0100' (does not contain any dynpro elements):
*
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form INIT_CONTROLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_controls .
* Create docking container
CREATE OBJECT go_docking1
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
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.
* Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_docking1
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER:
lcl_eventhandler=>handle_double_click FOR go_grid1.
* Create docking container
CREATE OBJECT go_docking2
EXPORTING
parent = go_docking2
ratio = 90
EXCEPTIONS
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.
* Create ALV grids
CREATE OBJECT go_grid2
EXPORTING
i_parent = go_docking2
EXCEPTIONS
OTHERS = 5.
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. " INIT_CONTROLS
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"
* SET TITLEBAR 'xxx'.
* Refresh display of detail ALV list
CALL METHOD go_grid2->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
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.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
TRANSLATE gd_okcode TO UPPER CASE.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
CASE syst-dynnr.
WHEN '0100'.
SET SCREEN 0. LEAVE SCREEN.
WHEN '0200'.
SET SCREEN '0100'.
LEAVE SCREEN.
ENDCASE.
* User has pushed button "Display Details"
WHEN 'DETAIL'.
PERFORM entry_show_details.
CALL SCREEN '0200'.
WHEN 'DELETE'.
perform DELETE_ENTRIES.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form ENTRY_SHOW_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM entry_show_details .
* define local data
DATA:
ls_row TYPE lvc_s_row,
lt_rows type lvc_t_row,
ls_knb1 TYPE knb1,
lt_knb1 TYPE STANDARD TABLE OF knb1.
CALL METHOD go_grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows
* et_row_no =
.
LOOP AT lt_rows INTO ls_row.
READ TABLE gt_outtab1 INTO ls_knb1 INDEX ls_row-index.
APPEND ls_knb1 TO lt_knb1.
ENDLOOP.
IF ( lt_rows IS INITIAL ).
REFRESH: gt_outtab2.
ELSE.
SELECT * FROM knvv INTO TABLE gt_outtab2
FOR ALL ENTRIES IN lt_knb1
WHERE kunnr = lt_knb1-kunnr.
ENDIF.
ENDFORM. " ENTRY_SHOW_DETAILS
*&---------------------------------------------------------------------*
*& Form DELETE_ENTRIES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form DELETE_ENTRIES .
* define local data
DATA:
ls_row TYPE lvc_s_row,
lt_rows type lvc_t_row.
CALL METHOD go_grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows
* et_row_no =
.
LOOP AT lt_rows INTO ls_row.
delete gt_outtab1 INDEX ls_row-index.
ENDLOOP.
go_grid1->refresh_table_display( ). " Mandatory !!!
endform. " DELETE_ENTRIES
Regards
Uwe
2008 Oct 24 5:51 AM
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |