Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

refresh data in splitter container

former_member185116
Active Participant
0 Kudos

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...

1 ACCEPTED SOLUTION

0 Kudos

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 😉

12 REPLIES 12

0 Kudos

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 😉

0 Kudos

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

*****************************************************************************************************************

0 Kudos

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.

0 Kudos

daniel , how do i process PBO again...

0 Kudos

If it don`t process automatically,

you can call pbo explicit with Method

cl_gui_cfw=>set_new_ok_code( EXPORTING new_code = 'REFRESH' ).

0 Kudos

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.


0 Kudos

Ok. That`s a good choice. The main Point is that you don`t create object again.

former_member191434
Participant
0 Kudos

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

jayanthi_jayaraman
Active Contributor
0 Kudos

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.

Former Member
0 Kudos

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

0 Kudos

Or


IF alvgrid IS INITIAL.

  CREATE OBJECT alvgrid...

  alvgrid-> set_table_for_first_display (...).

ELSE.

  alvgrid-> refresh_table_display( ).

ENDIF.

Regards,

Raymond

0 Kudos

thanks raymond..