Monday, November 15, 2010

Editar campos AVL

Tutoial de arranque
http://www.watto.org/program/abap/download/Z_ALV_TEMPLATE.abap
http://sgstocks.tripod.com/alvgrid_control.htm
http://www.watto.org/program/abap/download/Z_ALV_TEMPLATE.abap
http://www.sapalv.net/2009/08/sap-alv-tutorial-8-handling-data-change/

1. F01
CREATE OBJECT go_event_receiver.    
SET HANDLER go_event_receiver->handle_data_changed FOR go_alv.
CALL METHOD go_alv->register_edit_event
      EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.
2.
CLASS gcl_event_receiver DEFINITION.
   PUBLIC SECTION.
     METHODS:
     handle_toolbar      FOR EVENT toolbar OF cl_gui_alv_grid
                         IMPORTING e_object,
     handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
                         IMPORTING e_ucomm,
     handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
                         IMPORTING er_data_changed.

 ENDCLASS.   
3.
 method handle_data_changed.
    data: lv_changed type lvc_s_modi,
          lc_rpta type c,
          lwa_aspirante type gty_aspirante_alv.
    loop at er_data_changed->mt_good_cells into lv_changed
         where fieldname = 'APPAT' or fieldname = 'APMAT'
            or fieldname = 'NOMBR'.
      case lv_changed-fieldname.
        when 'APPT'.
          read table gtd_aspirante_alv into lwa_aspirante index lv_changed-row_id.
          perform validar_nombres using lwa_aspirante-nombr
                                        lv_changed-value
                                        lwa_aspirante-apmat
                                        'T'
                                   changing lc_rpta.
          check lc_rpta = 'T'.
        when 'APMAT'.
        when 'NOMBR'.
      endcase.
*      READ TABLE i_alv_data INTO v_alv_data INDEX lv_changed-row_id.
      if sy-subrc = 0.
*        MOVE lv_changed-value TO v_alv_data-cust_name.
*        MODIFY i_alv_data FROM v_alv_data INDEX lv_changed-row_id.
      endif.
    endloop.
  Endmethod.
Mostrar error
CALL METHOD er_data_changed->add_protocol_entry
           EXPORTING
             i_msgid = 'SU'
             i_msgno = '000'
             i_msgty = 'E'
             i_msgv1 = 'Ya existe un registro con los nombres'
             i_msgv2 = ' y apellidos ingresados.'
             i_fieldname = lv_changed-fieldname
             i_row_id = lv_changed-row_id .

1 comment: