02-26-2015 11:05 AM
hello all,
in the splitter container,
when i clicked afvc table displayed its fields in the below container,
but iam unable to display data when i clicked other tables,
now my question is how do i refresh container so that i can display data for every table...
tanks in advance...
02-26-2015 12:51 PM
Hey Vinay Reddy,
i think you use hotspot click and you implemented a eventhandler class. To refresh data in second table, you have to update table data and call method
CALL METHOD io_alv->refresh_table_display
.
After this, it is necessary that pbo is called again that gui recognize that table data have changed.
You can call pbo explicit with Method
cl_gui_cfw=>set_new_ok_code( EXPORTING new_code = 'REFRESH' ).
but i think thats not necessary in your case 😉
02-26-2015 12:51 PM
Hey Vinay Reddy,
i think you use hotspot click and you implemented a eventhandler class. To refresh data in second table, you have to update table data and call method
CALL METHOD io_alv->refresh_table_display
.
After this, it is necessary that pbo is called again that gui recognize that table data have changed.
You can call pbo explicit with Method
cl_gui_cfw=>set_new_ok_code( EXPORTING new_code = 'REFRESH' ).
but i think thats not necessary in your case 😉
02-27-2015 10:30 AM
hi daniel,
as u said i have used hotspot_click method in the event class...
i tried with both CALL METHOD io_alv->refresh_table_display
and cl_gui_cfw=>set_new_ok_code( EXPORTING new_code = 'REFRESH' ).,
but it did not work..
for u r reference i am pasting my code here...
****************************************************************************************************************************
class event_class DEFINITION DEFERRED.
data : wa_lvc_fcat1 type lvc_S_fcat,
it_lvc_fcat1 type lvc_t_fcat.
data : wa_lvc_fcat2 type lvc_s_fcat,
it_lvc_fcat2 type lvc_t_fcat.
data : wa_lvc_layout1 type lvc_S_layo,
wa_lvc_layout2 type lvc_s_layo.
data : obj_alv1 TYPE REF TO cl_gui_alv_grid,
obj_alv2 TYPE REF TO cl_gui_alv_grid.
data : obj_container1 type REF TO cl_gui_container,
obj_container2 type REF TO cl_gui_container.
data : obj_cust1 TYPE REF TO cl_gui_custom_container,
obj_splitter1 TYPE REF TO cl_gui_splitter_container.
data : obj_event_class type REF TO event_class.
*data and internla table declaration *********************
data : wa_dd02l TYPE dd02l,
it_dd02l TYPE TABLE OF dd02l.
data : wa_dd03l TYPE dd03l,
it_dd03l TYPE TABLE OF dd03l.
data : ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
CONSTANTS : c_x TYPE c VALUE 'X'.
data : w_error TYPE c.
*sel screen declaration ************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN skip 1.
select-OPTIONS : so_table FOR wa_dd02l-tabname.
SELECTION-SCREEN skip 1.
SELECTION-SCREEN END OF BLOCK b1.
**************************************************************
INITIALIZATION.
START-OF-SELECTION.
select * FROM dd02l INto CORRESPONDING FIELDS OF TABLE it_dd02l
WHERE tabname in so_table
and tabclass eq 'TRANSP'.
call SCREEN 100. "main alv
*event_class definition**********************
class event_class DEFINITION.
PUBLIC SECTION.
METHODs : handle_hotspot_click FOR EVENT hotspot_click of cl_gui_alv_grid IMPORTING e_row_id.
ENDCLASS.
*event_class implementation****************
class event_class IMPLEMENTATION.
METHOD handle_hotspot_click.
READ TABLE it_dd02l INTO wa_dd02l INDEX e_row_id.
if sy-subrc = 0.
select * FROM dd03l INTO CORRESPONDING FIELDS OF TABLE it_dd03l
WHERE tabname eq wa_dd02l-tabname.
endif.
PERFORM secondary_alv_display.
endmethod.
ENDCLASS.
**************************************
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'Z_MAIN_ALV_100'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE FIRST_CONTAINER OUTPUT.
*create object of custom container
if obj_cust1 is INITIAL.
CREATE OBJECT OBJ_CUST1
EXPORTING
CONTAINER_NAME = 'CUST_CONT1'
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.
move c_x to w_error.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
*create splitter container object ****************
if w_error ne 'X' .
CREATE OBJECT OBJ_SPLITTER1
EXPORTING
* LINK_DYNNR =
* LINK_REPID =
* SHELLSTYLE =
* LEFT =
* TOP =
* WIDTH =
* HEIGHT =
* METRIC = cntl_metric_dynpro
ALIGN = 15
PARENT = obj_cust1
ROWS = 2
COLUMNS = 1
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
others = 3
.
IF SY-SUBRC <> 0.
move c_x to w_error.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
if w_error ne 'X'.
CALL METHOD OBJ_SPLITTER1->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = obj_container1.
CALL METHOD OBJ_SPLITTER1->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = obj_container2.
endif.
*create object alv1 ****
CREATE OBJECT OBJ_ALV1
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
I_PARENT = obj_container1
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
* I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
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.
*fieldcat for alv1
REFRESH it_lvc_fcat1.
clear wa_lvc_fcat1.
wa_lvc_fcat1-row_pos = 1.
wa_lvc_fcat1-col_pos = 1.
wa_lvc_fcat1-fieldname = 'TABNAME'.
wa_lvc_fcat1-tabname = 'IT_DD02L'.
wa_lvc_fcat1-coltext = 'Table Name'.
wa_lvc_fcat1-outputlen = 30.
wa_lvc_fcat1-emphasize = 'C501'.
wa_lvc_fcat1-style = ALV_STYLE_FONT_BOLD.
wa_lvc_fcat1-hotspot = 'X'.
APPEND wa_lvc_fcat1 to it_lvc_fcat1.
clear wa_lvc_fcat1.
wa_lvc_fcat1-row_pos = 1.
wa_lvc_fcat1-col_pos = 2.
wa_lvc_fcat1-fieldname = 'TABCLASS'.
wa_lvc_fcat1-tabname = 'IT_DD02L'.
wa_lvc_fcat1-coltext = 'Category'.
wa_lvc_fcat1-outputlen = 10.
APPEND wa_lvc_fcat1 to it_lvc_fcat1.
clear wa_lvc_fcat1.
wa_lvc_fcat1-row_pos = 1.
wa_lvc_fcat1-col_pos = 3.
wa_lvc_fcat1-fieldname = 'AS4USER'.
wa_lvc_fcat1-tabname = 'IT_DD02L'.
wa_lvc_fcat1-coltext = 'Created By'.
wa_lvc_fcat1-outputlen = 15.
APPEND wa_lvc_fcat1 to it_lvc_fcat1.
clear wa_lvc_fcat1.
wa_lvc_fcat1-row_pos = 1.
wa_lvc_fcat1-col_pos = 4.
wa_lvc_fcat1-fieldname = 'AS4DATE'.
wa_lvc_fcat1-tabname = 'IT_DD02L'.
wa_lvc_fcat1-coltext = 'Created Date'.
wa_lvc_fcat1-outputlen = 10.
APPEND wa_lvc_fcat1 to it_lvc_fcat1.
clear wa_lvc_fcat1.
wa_lvc_fcat1-row_pos = 1.
wa_lvc_fcat1-col_pos = 5.
wa_lvc_fcat1-fieldname = 'AS4TIME'.
wa_lvc_fcat1-tabname = 'IT_DD02L'.
wa_lvc_fcat1-coltext = 'Created Time'.
wa_lvc_fcat1-outputlen = 10.
APPEND wa_lvc_fcat1 to it_lvc_fcat1.
clear wa_lvc_fcat1.
wa_lvc_fcat1-row_pos = 1.
wa_lvc_fcat1-col_pos = 6.
wa_lvc_fcat1-fieldname = 'CONTFLAG'.
wa_lvc_fcat1-tabname = 'IT_DD02L'.
wa_lvc_fcat1-coltext = 'Delivery Class'.
wa_lvc_fcat1-outputlen = 15.
APPEND wa_lvc_fcat1 to it_lvc_fcat1.
**********main 100_layout ************************
wa_lvc_layout1-cwidth_opt = 'X'.
wa_lvc_layout1-zebra = 'X'.
wa_lvc_layout1-col_opt = 'X'.
wa_lvc_layout1-grid_title = 'Header Tables'.
*******main ALV Display ******************
**call alv1 display ***
CALL METHOD OBJ_ALV1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
I_SAVE = ''
* I_DEFAULT = 'X'
IS_LAYOUT = wa_lvc_layout1
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = it_dd02l
IT_FIELDCATALOG = it_lvc_fcat1
* 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_class.
set HANDLER obj_event_class->handle_hotspot_click FOR obj_Alv1.
ENDMODULE. " FIRST_CONTAINER OUTPUT
MODULE USER_COMMAND_0100 INPUT.
if ok_code is NOT INITIAL.
save_ok = ok_code.
CLEAR ok_code.
endif.
case save_ok.
When 'CANCEL' or 'EXIT' or 'BACK'.
leave to SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
FORM SECONDARY_ALV_DISPLAY .
*create object alv2
CREATE OBJECT OBJ_ALV2
EXPORTING
I_PARENT = obj_container2
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
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.
*fieldcat for secondary alv *******
REFRESH it_lvc_fcat2.
clear wa_lvc_fcat2.
wa_lvc_fcat2-row_pos = 1.
wa_lvc_fcat2-col_pos = 1.
wa_lvc_fcat2-fieldname = 'FIELDNAME'.
wa_lvc_fcat2-tabname = 'IT_DD03L'.
wa_lvc_fcat2-coltext = 'Field Name'.
wa_lvc_fcat2-outputlen = 10.
APPEND wa_lvc_fcat2 to it_lvc_fcat2.
clear wa_lvc_fcat2.
wa_lvc_fcat2-row_pos = 1.
wa_lvc_fcat2-col_pos = 2.
wa_lvc_fcat2-fieldname = 'CHECKTABLE'.
wa_lvc_fcat2-tabname = 'IT_DD03L'.
wa_lvc_fcat2-coltext = 'Check Table'.
wa_lvc_fcat2-outputlen = 10.
APPEND wa_lvc_fcat2 to it_lvc_fcat2.
clear wa_lvc_fcat2.
wa_lvc_fcat2-row_pos = 1.
wa_lvc_fcat2-col_pos = 3.
wa_lvc_fcat2-fieldname = 'KEYFLAG'.
wa_lvc_fcat2-tabname = 'IT_DD03L'.
wa_lvc_fcat2-coltext = 'Key Flag'.
wa_lvc_fcat2-outputlen = 10.
APPEND wa_lvc_fcat2 to it_lvc_fcat2.
***secondary layout for 101 *********************
wa_lvc_layout2-cwidth_opt = 'X'.
wa_lvc_layout2-zebra = 'X'.
wa_lvc_layout2-col_opt = 'X'.
*****secondary alv dipslay*************************
CALL METHOD OBJ_ALV2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
I_SAVE = ''
* I_DEFAULT = 'X'
IS_LAYOUT = wa_lvc_layout2
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = it_dd03l
IT_FIELDCATALOG = it_lvc_fcat2
* 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.
call METHOD obj_alv2->refresh_table_display.
ENDFORM. " SECONDARY_ALV_DISPLAY
*****************************************************************************************************************
02-27-2015 10:41 AM
Hey Vinay,
don`t call "PERFORM secondary_alv_display." again. You have only to change your outtab data, "CALL METHOD io_alv->refresh_table_display" and process pbo again. ALV load data automatically for presentation from your outtab in global data.
02-27-2015 11:55 AM
02-27-2015 12:00 PM
If it don`t process automatically,
you can call pbo explicit with Method
cl_gui_cfw=>set_new_ok_code( EXPORTING new_code = 'REFRESH' ).
02-27-2015 12:09 PM
daniel,
i have not used cl_gui_cfw=>set_new_ok_code( EXPORTING new_code = 'REFRESH' ).,
i have used PERFORM secondary_alv_display.
and now my problem got solved...
i tried like this,
if obj_alv2 is initial.
...all the code...
else.
call method obj_alv2->refrseh_table_display.
endif.
02-27-2015 1:53 PM
Ok. That`s a good choice. The main Point is that you don`t create object again.
02-26-2015 10:01 PM
Hi Vinay
If you already created 2 containers, you should have 2 object references of CL_GRID instances. Modify the tables passed with ...first_display, call refresh (check all parameters) for the instances of the grid objects, call CL_GUI_VFW=>FLUSH.
If this does not work, üpost some relevant code.
Thanks & regards
Saifur Rahaman
02-27-2015 4:03 AM
Hi,
In PAI, reload the second internal table with new data based on first internal table after clicking and in PBO, use refresh_table_display.
02-27-2015 12:40 PM
In pbo of screen (100) don't create reference objects every time.
if OBJ_SPLITTER1 is iniial then create else return from PBO. endif.
and then use refresh_table_display from PAI whenever required to show changed data.
Regards,
Hasan
02-27-2015 12:59 PM
Or
IF alvgrid IS INITIAL.
CREATE OBJECT alvgrid...
alvgrid-> set_table_for_first_display (...).
ELSE.
alvgrid-> refresh_table_display( ).
ENDIF.
Regards,
Raymond
02-28-2015 5:48 AM