PDA

Ver la Versión Completa : EDITAR y GRABAR REGISTRO DE ALV GRID


brujop
14/08/13, 17:29:59
Buenas tardes recurro a su experiencia, para que me orienten y en su mejor caso algun ejemplo desde cero para editar y grabar un registro de un alv grid, estoy usando la funcion REUSE_ALV_GRID_DISPLAY_LVC.

Por favor espero su pronta respuesta.


Gracias

cganic
19/08/13, 17:39:08
Hola brujop.

Recientemente yo también me encontré con la necesidad de editar un ALV. Para esto, encontré en la red una función que me sirvió. En mi caso únicamente necesitaba editar un único campo de la fila del ALV y luego actualizarlo en una tabla. Te describo a continuación los pasos para actaulizar el ALV.

1. En tu tabla interna, agregas un campo (también debes declarar tu WA):
field_style TYPE lvc_t_styl, "FOR DISABLE

2. En el INIT_FIELDCAT debes indicar qué campos serán editables con la propiedad EDIT = 'X'. En mi caso editaba el campo potx2 de la tabla RESB:

GT_FIELDCAT-FIELDNAME = 'POTX2'.
GT_FIELDCAT-SELTEXT_L = 'JUSTIFICACION'.
GT_FIELDCAT-OUTPUTLEN = '40'.
GT_FIELDCAT-EDIT = 'X'.
APPEND GT_FIELDCAT.

3. En tu codigo insertas la siguiente función (por supuesto, agregas el PERFORM para invocarla):

FORM set_specific_field_attributes .
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .

* Populate style variable (FIELD_STYLE) with style properties
*
* The POTX2 column has been set to editable in the fieldcatalog...
* The following code sets it to be disabled(display only) if 'POTX2'
* is gt than 10.
LOOP AT IT_CONSULTA INTO WA_ITCONSULTA.
ls_stylerow-fieldname = 'POTX2' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
* APPEND has now been replaced by the INSERT command as it would error
* if entries are not added in correct order
* APPEND ls_stylerow TO WA_ITCONSULTA-field_style.
INSERT ls_stylerow into table WA_ITCONSULTA-field_style.
MODIFY IT_CONSULTA FROM WA_ITCONSULTA.
ENDLOOP.

ENDFORM. " set_specific_field_attributes

4. Una vez que ya puedes editar el ALV, si necesitas almacenar el valor en una tabla, puedes invocar al evento '&DATA_SAVE' o la que más te covenga y ya puedes actualizar el(los) campo(s) a través de un BAPI.

Espero te sirva.

Saludes.