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: 

Trigger ALV handle_data_change event for unit test

Marian_Zeis
Active Contributor

Hi experts,

i try to test my ALV OO with a unit test.
So basiclly i try following:

Setup ALV
Load Data in ALV
Change Data (eg. just one cell) in ALV
Trigger handle_data_changed
Check if everything worked fine

So far i´ve tried with something like that:
https://blogs.sap.com/2013/08/13/trigger-alv-datachange-event-manual/

I know is supposed to be changed in the Frontend, but i guess is somehow possible just by code.

My code for the unit test method is:

    f_cut->setup_alv( ).
    f_cut->tickets->lt_ticketlist = me->create_ticketlist( ).
    f_cut->tickets->go_alv_grid->refresh_table_display( ).
    READ TABLE f_cut->tickets->lt_ticketlist ASSIGNING <ls_ticketlist> WITH KEY object_id = '4000010502'.
    <ls_ticketlist>-pos = 2.
    DATA: it_pos TYPE lvc_t_pos.
    DATA: is_pos TYPE LVC_S_POS.
    is_pos-fieldname = 'POS'.is_pos-row_id = 6.
    APPEND is_pos to it_pos.
    f_cut->tickets->go_alv_grid->change_data_from_inside( it_cells = it_pos ).
    f_cut->tickets->go_alv_grid->if_cached_prop~set_prop(
    EXPORTING
      PROPNAME = 'GridModified'
      PROPVALUE = '1').
    f_cut->tickets->go_alv_grid->check_changed_data( ).


1 ACCEPTED SOLUTION

Marian_Zeis
Active Contributor

Got it on my own.
It was quiet simple

    ls_delta_cells-row_id    = sy-tabix.
    ls_delta_cells-fieldname = lv_fieldname.
    ls_delta_cells-value     = lv_value.
    APPEND ls_delta_cells TO lt_delta_cells.


    go_alv_grid->set_delta_cells(
      EXPORTING
   it_delta_cells = lt_delta_cells
    i_modified     = abap_true
    ).
    go_alv_grid->check_changed_data(  IMPORTING e_valid = lv_valid ).

That triggers data_changed

1 REPLY 1

Marian_Zeis
Active Contributor

Got it on my own.
It was quiet simple

    ls_delta_cells-row_id    = sy-tabix.
    ls_delta_cells-fieldname = lv_fieldname.
    ls_delta_cells-value     = lv_value.
    APPEND ls_delta_cells TO lt_delta_cells.


    go_alv_grid->set_delta_cells(
      EXPORTING
   it_delta_cells = lt_delta_cells
    i_modified     = abap_true
    ).
    go_alv_grid->check_changed_data(  IMPORTING e_valid = lv_valid ).

That triggers data_changed