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,
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: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 |