MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Checkbox en ALV - REUSE_ALV_GRID_DISPLAY (foro/showthread.php?t=77823)

maria22_ 24/01/18 10:20:27

Checkbox en ALV - REUSE_ALV_GRID_DISPLAY
 
Buenos días,

Tengo una tabla con un campo checkbox en el ALV, a veces aparece ya marcado y otras desmarcado por una validación.

Me piden que ese campo dependiendo del registro (valor que traiga ese campo) sea editable o no editable.

Uso la forma clásica para generar ALV. (REUSE_ALV_GRID_DISPLAY) y sé que la forma de hacerlo para toda la tabla es con wa_fieldcat-edit = ''- así sale no editable, ¿pero como puedo hacerlo registro a registro siendo esa una propiedad del catalogo? ¿es posible hacerlo sin ser abap orientado a objetos?

Gracias,
Saludos.

omegaotaku 24/01/18 17:54:53


Buenas tardes. Podrías armar una macro del fieldcatalog en donde la llamarías dentro de un LOOP de tu tabla de salida y le indicarías cuando hay que hacer cierto campo editable.
Por ej así:

DEFINE m_fieldcatalog.

ADD 1 TO fieldcatalog-col_pos.
fieldcatalog-tabname = 'IT_ALV'.
fieldcatalog-fieldname = &1.
fieldcatalog-edit = &2.
APPEND fieldcatalog.
CLEAR fieldcatalog.

END-OF-DEFINITION.

LOOP AT it_alv INTO wa_alv.

IF esedit eq abap_true.

m_fieldcatalog: 'COL1' 'X'.

ENDIF.

ENDLOOP.

Saludos.

maria22_ 25/01/18 11:06:56


Hola, muchas gracias por el aporte!! pero aún no me sale bien...

Este es mi código dentro de la rutina donde creo el catalogo de campos para el ALV.

* Macro para campo editable
DEFINE m_fieldcatalog.

clear wa_fieldcat.
wa_fieldcat-tabname = 'T_ALV'.
wa_fieldcat-fieldname = 'CONTROL'.
wa_fieldcat-seltext_l = 'Control'.
wa_fieldcat-just = 'L'.
wa_fieldcat-col_pos = 11.
wa_fieldcat-edit = &1.
wa_fieldcat-checkbox = 'X'.
append wa_fieldcat to t_fieldcat.
clear wa_fieldcat.

END-OF-DEFINITION.

* Tabla donde tengo los datos, el campo SEL es igual a 'X' en unos registros
* en otros está vacio (debe poderse marcar, si está a X -> no editar).
LOOP AT t_alv INTO w_alv.
IF w_alv-sel = 'X'.
l_edit1 = ' '. "no editable
m_fieldcatalog: l_edit1.
ELSE.
l_edit1 = 'X'. "editable
m_fieldcatalog: l_edit1.
ENDIF.
ENDLOOP.
-----------------------------------------------------------------
De esta forma si hay 10 registros me salen 10 columnas, en vez de aplicar la caracteristica registro a registro... No se donde puede estar el fallo...

Si me puedes/podéis ayudar a solucionarlo...Gracias!!!

omegaotaku 26/01/18 16:47:39


DEFINE m_fieldcatalog.

clear wa_fieldcat.
wa_fieldcat-tabname = 'T_ALV'.
wa_fieldcat-fieldname = 1&.
wa_fieldcat-seltext_l = 2&.
wa_fieldcat-col_pos = &3.
wa_fieldcat-edit = &4.
wa_fieldcat-checkbox = 'X'.
wa_fieldcat-just = 'L'.
append wa_fieldcat to t_fieldcat.
clear wa_fieldcat.

END-OF-DEFINITION.

LOOP AT t_alv INTO w_alv.

IF w_alv-sel = 'X'.

m_fieldcatalog: 'CONTROL' 'Control' '01' ' '.

ELSE.

m_fieldcatalog: 'CONTROL' 'Control' '01' 'X'.

ENDIF.

ENDLOOP.


Husos Horarios son GMT. La hora en este momento es 14:09:21.

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