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: 

Transfer modified line to handle_data_changed method

Former Member
0 Kudos

Hi all,

I have a problem with my ALV OO.

I have several fields, but there is a field (TAX) that I have implemented a F4 help seach by ONF4 method. This help search works fine, but when my try to send the modified row to my my HANDLE_DATA_CHANGED Method in order to loop the modified rows of the ALV, the ->mt_mod_cells is empty

     LOOP AT rr_data_changed->mt_mod_cells INTO ls_mod_cells.

Could you tell me how could I save my line previously modified in my F4 help procedure, and transfer this line to my HANDLE_DATA_CHANGED Method and make the er_data_changed contains the row modified?.

Have to say, I am using

CALL METHOD cont_editalvgd -> register_edit_event

   Exporting

           {}I_event_id = cl_gui_alv_grid => mc_evt_modified


and


ALL METHOD cont_editalvgd -> register_edit_event

   Exporting

           {}I_event_id = cl_gui_alv_grid => mc_evt_enter


At the same time


Thanks in advance,

Mario

7 REPLIES 7

former_member188724
Contributor
0 Kudos

Hello Mario,

Pls try to add this code and check. if you have any issues pls do let me know.

set handler event handler(Name)->on_f4 for grid.

Rgds,

K.S

<removed by moderator>

Message was edited by: Manish Kumar

0 Kudos

Hi K S!

Mi program has already that line:

SET HANDLER go_event_receiver01->handle_onf4 FOR ALL INSTANCES

I've tried with

SET HANDLER go_event_receiver01->handle_onf4 FOR alvgrid

And it doesn´t work

Any other idea?

Thanks

0 Kudos

Hi Mario,

Will be helpful if you can paste your handle_data_changed method code to analyse.

Rgds,

K.S

0 Kudos

Hi K S!

This is the logic according to my issue:

    handle_data_changed

         FOR EVENT data_changed OF cl_gui_alv_grid

             IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm,


    handle_data_changed_finished

         FOR EVENT data_changed_finished OF cl_gui_alv_grid

             IMPORTING e_modified et_good_cells,

     handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid

                IMPORTING e_fieldname e_fieldvalue es_row_no er_event_data

                          et_bad_cells e_display,


METHOD handle_data_changed.

     PERFORM f_update_gt_fichero USING er_data_changed e_onf4 e_onf4_before e_onf4_after e_                                                                    ucomm.

ENDMETHOD.                    "handle_data_changed

METHOD handle_data_changed_finished.

     PERFORM data_changed_finished  USING e_modified et_good_cells.

   ENDMETHOD.                    "handle_data_changed_finished


METHOD handle_onf4.

     PERFORM f_handle_onf4 USING e_fieldname

                                                            e_fieldvalue

                                                            es_row_no "-row_id

                                                            er_event_data

                                                           et_bad_cells

                                                           e_display.

     er_event_data->m_event_handled = 'X'.

   ENDMETHOD


FORM f_handle_onf4  USING  p_e_fieldname  TYPE lvc_fname

                            p_e_fieldvalue TYPE lvc_value

                            p_es_row_id    TYPE lvc_s_roid

                            p_er_event_data TYPE REF TO cl_alv_event_data

                            p_et_bad_cells TYPE lvc_t_modi

                            p_e_display    TYPE char01.

* Declaración de estructuras locales.

   DATA: lw_return TYPE ddshretval,

         lw_stable TYPE lvc_s_stbl,

         li_return TYPE TABLE OF ddshretval,

         ls_return TYPE ddshretval,

         lv_pais   TYPE land1,

         lv_posf4  TYPE posnr,

         lv_ots(3) TYPE c,

         ls_pais   TYPE ztconv_pais.

   DATA: BEGIN OF lt_tabl1 OCCURS 0,

            ots TYPE zots_ed_impuesto,

*           mwskz TYPE mwskz,

         END OF lt_tabl1.

   CLEAR ls_pais.

   SELECT SINGLE *

             INTO ls_pais

             FROM ztconv_pais

            WHERE bukrs EQ gv_bukrs4.

   IF sy-subrc = 0.

     SELECT p~ots

       FROM ztconv_impuesto AS p

       INNER JOIN a003 AS q ON q~mwskz = p~mwskz

       INTO CORRESPONDING FIELDS OF TABLE lt_tabl1

       WHERE q~aland = ls_pais-land1.

   ENDIF.

   CASE p_e_fieldname.

     WHEN 'IMPUESTO_OTS'.

       CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

         EXPORTING

           retfield        = 'OTS'

           window_title    = 'Tipos de Impuesto OTS'

           value_org       = 'S'

         TABLES

           value_tab       = lt_tabl1

           return_tab      = li_return

         EXCEPTIONS

           parameter_error = 1

           no_values_found = 2

         OTHERS          = 3.

       IF sy-subrc = 0.

         CLEAR lv_posf4.

         READ TABLE li_return INTO ls_return WITH KEY fieldname = 'F0001'.

         IF ls_return IS NOT INITIAL.

           lv_posf4 = p_es_row_id-row_id + 2.

           READ TABLE gt_fichero INTO gs_fichero INDEX lv_posf4.

           IF sy-subrc = 0.

             gs_fichero-impuesto_ots = ls_return-fieldval.

*            MODIFY gt_fichero FROM gs_fichero INDEX lv_posf4.

             PERFORM f_elimina_cab_cliente.

           ENDIF.

         ENDIF.

       ENDIF.

   ENDCASE.

   ls_is_stable-row = 'X'.

   CALL METHOD go_alvgrid1->refresh_table_display

     EXPORTING

       is_stable      = ls_is_stable

       i_soft_refresh = 'X'.

   p_er_event_data->m_event_handled = 'X'.




FORM f_update_gt_fichero USING pti_er_data_changed TYPE REF TO cl_alv_changed_data_protocol

                                p_e_onf4          TYPE char01

                                p_e_onf4_before   TYPE char01

                                p_e_onf4_after    TYPE char01

                                p_e_ucomm         TYPE sy-ucomm.

   DATA: lv_field(30)           TYPE c,

         lv_pos                 TYPE i,

         lv_pos_act             TYPE i.

   FIELD-SYMBOLS: <lv_field>    TYPE ANY.

   LOOP AT pti_er_data_changed->mt_good_cells ASSIGNING <fs_updatetb>.

                                                  MY LOGIC         

   ENDLOOP.

ENDFORM.                    "f_update_gt_fichero

ENDFORM.                    "HANDLE_ONF4

previously I have defined:


FORM register_f4_fields .

   lt_f4_data-fieldname = 'IMPUESTO_OTS'.

   lt_f4_data-register = 'X'.

   lt_f4_data-getbefore = space.

   lt_f4_data-chngeafter = 'X'.

*  lt_f4_data-chngeafter  ='X'.

   INSERT lt_f4_data INTO TABLE lt_f4.

   CALL METHOD go_alvgrid1->register_f4_for_fields

     EXPORTING

       it_f4 = lt_f4[].

ENDFORM.        



Thanks

0 Kudos

after the SET HANDLER go_event_receiver01->handle_onf4 FOR alvgrid

perform register_f4_fields .    "set cells with search help

I use this logic

FORM f_handle_onf4

*§5 define fields and field-symbols for data-update
    field-symbols: <itab> type lvc_t_modi.
    data: ls_modi type lvc_s_modi.
    data: ls_f4 type ddshretval,
          lt_f4 type table of ddshretval.
* customised f4-help
    call method my_f4
      exporting
        sender        = sender
        es_row_no     = es_row_no
        er_event_data = er_event_data
        et_bad_cells  = et_bad_cells
        e_display     = e_display
        e_fieldname   = e_fieldname
      importing
        lt_f4         = lt_f4.

*§6 assign the cell table fieldsymbol to the dereferenced data table and
*   fill the table.
    assign er_event_data->m_data->* to <itab>.

    read table lt_f4 into ls_f4 with key fieldname = fieldname.
    if not ls_f4 is initial.
      ls_modi-row_id    = es_row_no-row_id.
      ls_modi-fieldname = fieldname.
      ls_modi-value     = ls_f4-fieldval.
      append ls_modi to <itab>.
    endif.
**§3 set attribute m_event_handled of er_event_data to avoid standard
**   f4-help.
    er_event_data->m_event_handled = 'X'.

pls try this and let me know if it helps.

Rgds,

K.S

0 Kudos

Thanks K.S

Solved by my own!

0 Kudos

Hi, since I am facing the same issue May I know how did you solve your problem ?

Kindly help me on this!!

Thanks,

Ishwarya R