08-25-2008 11:04 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.i CLEAR the Internal table contents also .thx
08-25-2008 11:11 AM
Hello
use method FREE of class CL_GUI_ALV_GRID or method for refresh grid display use REFRESH_TABLE_DISPLAY or use syntax clear alv_grid.
Thanks
08-25-2008 11:40 AM
Hi,
It will be achieved by refresh_table_display.
Go thru following code
REPORT z_oops_alv_grid.
TYPES : BEGIN OF tw_ekko,
mark TYPE flag,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
bstyp TYPE ebstyp,
bsart TYPE esart,
aedat TYPE erdat,
END OF tw_ekko,
tt_ekko TYPE TABLE OF tw_ekko.
TYPES : BEGIN OF tw_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
statu TYPE astat,
aedat TYPE paedt,
END OF tw_ekpo,
tt_ekpo TYPE TABLE OF tw_ekpo.
DATA: wa_ekko TYPE tw_ekko,
it_ekko TYPE tt_ekko.
DATA: wa_ekpo TYPE tw_ekpo,
it_ekpo TYPE tt_ekpo.
DATA: cl_container1 TYPE REF TO cl_gui_custom_container,
cl_container2 TYPE REF TO cl_gui_custom_container,
cl_container3 TYPE REF TO cl_gui_custom_container,
cl_alv1 TYPE REF TO cl_gui_alv_grid,
cl_alv2 TYPE REF TO cl_gui_alv_grid,
cl_alv3 TYPE REF TO cl_gui_alv_grid.
DATA : v_ebeln TYPE ebeln.
DATA: i_fldcat TYPE lvc_t_fcat,
i_fldcat1 TYPE lvc_t_fcat,
wa_fldcat LIKE LINE OF i_fldcat.
----
CLASS lcl_event DEFINITION
----
*
----
CLASS lcl_event DEFINITION.
PUBLIC SECTION.
METHODS: toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive,
usercommand FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm.
ENDCLASS. "lcl_event DEFINITION
----
CLASS lcl_event IMPLEMENTATION
----
*
----
CLASS lcl_event IMPLEMENTATION.
METHOD toolbar.
PERFORM toolbar CHANGING e_object e_interactive
e_object->mt_toolbar.
ENDMETHOD. "lcl_event IMPLEMENTATION
METHOD usercommand.
PERFORM user_command CHANGING e_ucomm.
ENDMETHOD. "usercommand
ENDCLASS. "lcl_event IMPLEMENTATION
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE t001.
SELECT-OPTIONS: so_ebeln FOR v_ebeln.
SELECTION-SCREEN END OF BLOCK blk1.
START-OF-SELECTION.
CALL SCREEN 100.
DATA: obj_event TYPE REF TO lcl_event.
CREATE OBJECT obj_event.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_100'.
SET TITLEBAR 'TITLE_100'.
SELECT ebeln
bukrs
bstyp
bsart
aedat
INTO CORRESPONDING FIELDS OF TABLE it_ekko
FROM ekko
WHERE ebeln IN so_ebeln.
IF cl_alv1 IS INITIAL.
CREATE OBJECT cl_container1 EXPORTING container_name = 'CONT1'.
CREATE OBJECT cl_alv1 EXPORTING i_parent = cl_container1.
PERFORM fieldcatalog.
CALL METHOD cl_alv1->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
i_save = 'X'
I_DEFAULT = 'X'
is_layout =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
it_outtab = it_ekko
it_fieldcatalog = i_fldcat
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.
CREATE OBJECT obj_event.
SET HANDLER : obj_event->toolbar FOR cl_alv1.
SET HANDLER : obj_event->usercommand FOR cl_alv1.
CALL METHOD cl_alv1->set_toolbar_interactive.
ELSE.
CALL METHOD cl_alv1->refresh_table_display.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Form toolbar
&----
text
----
<--P_E_OBJECT text
<--P_E_INTERACTIVE text
<--P_E_OBJECT_>MT_toolbar text
----
FORM toolbar CHANGING p_e_object TYPE REF TO cl_alv_event_toolbar_set
p_e_interactive
mt_toolbar TYPE ttb_button.
DATA wal_button TYPE stb_button.
wal_button-text = 'ITEM DETAILS'.
wal_button-quickinfo = 'PROCEED'.
wal_button-function = 'ITM1'.
wal_button-butn_type = 0.
wal_button-disabled = space.
INSERT wal_button INTO p_e_object->mt_toolbar INDEX 1.
ENDFORM. " toolbar
&----
*& Form user_command
&----
text
----
<--P_E_UCOMM text
----
FORM user_command CHANGING p_e_ucomm.
CASE p_e_ucomm.
WHEN 'ITM1'.
LEAVE TO SCREEN 200.
ENDCASE.
ENDFORM. " user_command
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE status_0200 OUTPUT.
SET PF-STATUS 'STATUS_200'.
SET TITLEBAR 'TITLE_200'.
CLEAR wa_ekko.
LOOP AT it_ekko INTO wa_ekko WHERE mark = 'X'.
READ TABLE it_ekko INTO wa_ekko WITH KEY mark = 'X'.
IF sy-subrc = 0.
CLEAR wa_ekPo.
SELECT SINGLE ebeln
ebelp
statu
aedat
FROM ekpo
INTO wa_ekpo
WHERE ebeln = wa_ekKo-ebeln.
APPEND wa_ekPo TO it_ekPo.
ENDIF.
ENDLOOP.
IF cl_alv2 IS INITIAL.
CREATE OBJECT cl_container2 EXPORTING container_name = 'CONT2'.
CREATE OBJECT cl_alv2 EXPORTING i_parent = cl_container2.
PERFORM fieldcatalog1.
CALL METHOD cl_alv2->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
i_save = 'X'
I_DEFAULT = 'X'
is_layout =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
it_outtab = it_ekPo
it_fieldcatalog = i_fldcat1
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.
ELSE.
CALL METHOD cl_ALV2->refresh_table_display.
ENDIF.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
IF sy-ucomm = 'BACK' OR sy-ucomm = 'EXIT' OR sy-ucomm = 'CANCEL'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE user_command_0200 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE TO SCREEN 100.
ENDIF.
IF sy-ucomm = 'EXIT' OR sy-ucomm = 'CANCEL'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0200 INPUT
&----
*& Form fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM fieldcatalog .
wa_fldcat-col_pos = '1'.
wa_fldcat-fieldname = 'MARK'.
wa_fldcat-checkbox = 'X'.
wa_fldcat-edit = 'X'.
APPEND wa_fldcat TO i_fldcat.
CLEAR wa_fldcat.
wa_fldcat-col_pos = '2'.
wa_fldcat-fieldname = 'EBELN'.
wa_fldcat-tabname = 'IT_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '3'.
wa_fldcat-fieldname = 'BUKRS'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '4'.
wa_fldcat-fieldname = 'BSTYP'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '5'.
wa_fldcat-fieldname = 'BSART'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '6'.
wa_fldcat-fieldname = 'AEDAT'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
ENDFORM. " fieldcatalog
&----
*& Form fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM fieldcatalog1 .
wa_fldcat-col_pos = '1'.
wa_fldcat-fieldname = 'EBELN'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
wa_fldcat-col_pos = '2'.
wa_fldcat-fieldname = 'EBELP'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
wa_fldcat-col_pos = '3'.
wa_fldcat-fieldname = 'STATU'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
wa_fldcat-col_pos = '4'.
wa_fldcat-fieldname = 'AEDAT'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
ENDFORM. " fieldcatalog1
Regards,
Vijetha.
08-25-2008 1:24 PM
Hi,
As per your requirement you are using 2 ALV Grid to display the data. 2nd ALV Grid data is depending on 1st ALV Grid.
Whenever you are displaying 2nd ALV Grid you have one internal table.So that you have to Clear the data from that internal table, load the data to the internal table and use the method 'REFRESH_TABLE_DISPLAY' to display the data.
Regards,
Boobalan S
09-29-2008 2:51 PM