MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 29/04/08, 10:35:50
mccoy mccoy is offline
Junior Member
 
Fecha de Ingreso: abr 2007
Mensajes: 6
Comparar campos en un alv

Buenas, estoy haciendo un ALV y necesito comparar el contenido de dos campos. Puesto que solamente puede estar informado uno de los dos campos.

*------------------------------------------------------------------
* CLASS lcl_event_hadler DEFINITION
*------------------------------------------------------------------


CLASS lcl_event_handler DEFINITION.

PUBLIC SECTION.

METHODS:

handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.

ENDCLASS. "lcl_event_handler DEFINITION

*------------------------------------------------------------------
* CLASS lcl_event_handler IMPLEMENTATION
*------------------------------------------------------------------

CLASS lcl_event_handler IMPLEMENTATION.
*------------------------------------------------------------------
* METHOD handle_data_changed
*------------------------------------------------------------------


METHOD handle_data_changed.

PERFORM handle_data_changed USING er_data_changed.

ENDMETHOD. "handle_data_changed

ENDCLASS. "lcl_event_handler IMPLEMENTATION

*---------------------------------------------------------------------
* Form HANDLE_DATA_CHANGED
*---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* -->P_ER_DATA_CHANGED text
*----------------------------------------------------------------------

FORM handle_data_changed USING ir_data_changed
TYPE REF TO
cl_alv_changed_data_protocol.


DATA: ls_mod_cell TYPE lvc_s_modi,
lv_value TYPE lvc_value,
lv_value1 TYPE lvc_value.

* SORT ir_data_changed->mt_mod_cells." BY row_id.


LOOP AT ir_data_changed->mt_mod_cells
INTO ls_mod_cell
WHERE fieldname = 'CAMPO2'.

CALL METHOD ir_data_changed->get_cell_value
EXPORTING
i_row_id = ls_mod_cell-row_id
i_fieldname = 'CAMPO2'
IMPORTING
e_value = lv_value1.

ENDLOOP.

LOOP AT ir_data_changed->mt_mod_cells
INTO ls_mod_cell
WHERE fieldname = 'CAMPO1'.

IF it_prueba-clase IS INITIAL.

CALL METHOD ir_data_changed->modify_cell
EXPORTING
i_row_id = ls_mod_cell-row_id
i_fieldname = ls_mod_cell-fieldname
i_value = campo_prueba.
ENDIF.

CALL METHOD ir_data_changed->get_cell_value
EXPORTING
i_row_id = ls_mod_cell-row_id
i_fieldname = 'CAMPO1'

IMPORTING
e_value = lv_value.

IF lv_value = lv_value1.

CALL METHOD ir_data_changed->add_protocol_entry
EXPORTING
i_msgid = 'SU'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = 'Solo un campo informado '
i_fieldname = ls_mod_cell-fieldname
i_row_id = ls_mod_cell-row_id.

ENDIF.

ENDLOOP.

ENDFORM. " HANDLE_DATA_CHANGED

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

Con este codigo he coseguido que me chequee el campo una vez, y solo cuando el que informo es el campo 1 o 2. Si borro el campo 2, pulso intro y vuelvo a rellenar el campo no entra en la parte del codigo para recuperar el campo 2.
Hay alguna otra manera de hacerlo?

Gracias por a delantado!
Responder Con Cita
  #2  
Viejo 29/04/08, 20:05:00
danny danny is offline
Member
 
Fecha de Ingreso: mar 2007
Mensajes: 36
Holas,

FORM handle_data_changed USING ir_data_changed
TYPE REF TO
cl_alv_changed_data_protocol.

DATA: e_modi TYPE lvc_s_modi.

LOOP AT ir_data_changed->mt_good_cells INTO e_modi.
CASE e_modi-fieldname.
WHEN 'CAMPO1.
If e_modi-value ne space.

CALL METHOD ir_data_changed->modify_cell
EXPORTING
i_row_id = e_modi-row_id
i_tabix = e_modi-tabix
i_fieldname = 'CAMPO2'
i_value = ''.


Endif.
WHEN 'CAMPO2'.
If e_modi-value ne space.

CALL METHOD ir_data_changed->modify_cell
EXPORTING
i_row_id = e_modi-row_id
i_tabix = e_modi-tabix
i_fieldname = 'CAMPO1'
i_value = ''.


Endif.
ENDCASE.
ENDLOOP.

ENDFORM. " HANDLE_DATA_CHANGED

Saludos;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 15:37:03.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web