Sei sulla pagina 1di 5

Para el manejo de ALV (definir lo siguiente previamente) :

DATA: gt_fieldcat gs_fieldcat gd_layout TYPE slis_t_fieldcat_alv, TYPE slis_fieldcat_alv, TYPE slis_layout_alv. Nos permite definer colores por rengln y celda en la ALV

Para definir colores por celda:


Agregar un campo dentro de la estructura final de la siguiente forma:
cell_color TYPE lvc_t_scol,

Una vez que se tenga informacin en nuestra estructura final de salida podemos llamar a una funcin para definir el color en las celdas. Aqu indicamos el campo que definir el color en cada celda especfica y dependiendo de su valor asignar el color deseado. Se debe definir previamente un dato wa_cellcolor de tipo lvc_s_scol.
FORM color_celdas. DATA: wa_cellcolor TYPE lvc_s_scol. wa_cellcolor-fname = 'DOCITM'. case lt_final-docitm. WHEN 10. wa_cellcolor-color-col = '1'. Color WHEN 20. wa_cellcolor-color-col = '3'. Color WHEN 30. wa_cellcolor-color-col = '5'. Color WHEN 40. wa_cellcolor-color-col = '7'. Color endcase. wa_cellcolor-color-int = '1'. Color wa_cellcolor-color-inv = '0'. Color append wa_cellcolor to lt_final-cell_color. ENDFORM.

1 3 5 7 intensificado de Texto o fondo

Aqu en la estructura wa_cellcolor previamente definida del tipo lvc_s_scol, indicaremos en fname el campo/columna que llevar un color en celdas especficas, en color-col indicaremos el color que deseamos dependiendo de cierto valor, en color-int indicamos si es intensificado (1 ON, 0 Off), en color-inv indicamos si el color ser inverso ( 1 Color del texto, 0 Color del fondo). Despus de especificar cada valor hacemos APPEND de esa estructura hacia el campo que definimos tendra la informacin del color para las celdas, en este caso cell_color. Dentro de esta misma funcin podemos indicar de igual forma otros campos ms en los que deseamos tambin asignar un valor en ciertas celdas siguiendo la misma sintaxis. Por ejemplo si valor_neto es menor que 0 entonces muestra el texto en color rojo.
IF lt_final-valor_neto < wa_cellcolor-fname wa_cellcolor-color-col wa_cellcolor-color-int wa_cellcolor-color-inv append wa_cellcolor to ENDIF. 0 = 'VALOR_NETO'. = '6'. = '0'. = '1'. lt_final-cell_color.

Manejo de ALV

Para definir colores por rengln:


Agregar un campo dentro de la estructura final de la siguiente forma:
line_color(4) TYPE c,

Por cada rengln en la estructura final hay que llenar el campo line_color dependiendo del color que se desee y del valor que tenga un campo especfico.
concatenate 'C' lt_final-escenario '10' into lt_final-line_color.

Aqu por ejemplo dependiendo del valor en el campo escenario defino el color que llevar todo el rengln. El valor debe iniciar con la letra C seguido del color que ser un valor entre 0 y 7, posteriormente se indica los valores 10 donde 1 establece si el color es intensificado (1 On, 0 Off) y el 0 establece si el color ser inverso (1 Color del texto, 0 Color del fondo). Finalmente guardamos ese valor en el campo de la estructura final que utilizamos para el color en cada rengln, que en este caso es line_color. Antes del llenado de la ALV debo indicar el nombre del campo que tendr el parmetro del color para el rengln.
FORM crea_layout gd_layout-no_input = 'X'. gd_layout-colwidth_optimize = 'X'. * Set layout field for row attributes(i.e. color) gd_layout-info_fieldname = 'LINE_COLOR'. gd_layout-coltab_fieldname = 'CELL_COLOR'. ENDFORM.

Aqu en info_fieldname indico el nombre del campo en la estructura final que especificar el color del rengln. coltab_fieldname especifica el nombre del campo en la estructura final que definir el color en celdas especficas. Especificar los valores de los campos en la ALV y hacer el llamado a la funcin REUSE_ALV_GRID_DISPLAY
gs_fieldcat-fieldname = 'DOCITM'. gs_fieldcat-reptext_ddic = text-001. gs_fieldcat-seltext_m = 'POSNR'. gs_fieldcat-tabname = 'LT_FINAL'. gs_fieldcat-outputlen = 10. APPEND gs_fieldcat TO gt_fieldcat. ..... * CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid it_fieldcat = gt_fieldcat[] is_layout = gd_layout i_save = 'A' TABLES t_outtab = LT_FINAL.

Manejo de ALV

El parmetro it_fieldcat especifica la tabla que tiene los campos que se mostrarn en la ALV. El parmetro is_layout especifica la estructura donde se definen los campos de nuestra estructura final que tendrn la informacin para el color por rengln y para el color en celdas (info_fieldname y coltab_fieldname respectivamente). El parmetro i_save permite que en la ALV de salida muestre 2 botones adicionales donde el usuario tendr la posibilidad de guardar el layout y llamar un layout previamente guardado. Puede tener los sig. Valores U Solamente layouts especficos del usuario pueden ser guardados X Solamente layouts globales pueden ser guardados A Tanto layouts globales como especficos del usuario pueden ser guardados Space Los layouts no pueden ser guardados El parmetro t_outtab indicar la tabla/estructura final que tendr la informacin que se mostrar en la ALV. Los campos o columnas que se mostrarn son los especificados en la tabla it_fieldcat.

Para mostrar otra ALV dando doble click en un rengln especfico.


Si deseamos que al dar doble click en un rengln especfico en la ALV nos muestre otra ALV con informacin relacionada al registro que se seleccion debemos hacer lo siguiente: Despus del llenado de los campos que tendr la ALV (tabla gt_fieldcat) haremos el llamado a la funcin REUSE_ALV_GRID_DISPLAY de la siguiente forma:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid it_fieldcat = gt_fieldcat[] i_callback_user_command = 'DEFINE_ALV2' TABLES t_outtab = LT_FINAL1.

El parmetro i_callback_user_command especificar la funcin que se llamar al dar doble click que en este caso es DEFINE_ALV2. La funcin DEFINE_ALV2 tendr el siguiente cdigo.
FORM DEFINE_ALV2 USING r_ucomm like sy-ucomm rs_selfield type slis_selfield. CASE r_ucomm. WHEN '&IC1'. if rs_selfield-tabindex > 0 and rs_selfield-sumindex le 0. read table lt_final1 into ls_registro index rs_selfield-tabindex. perform crear_estructura_salida_tabla2. endif. ENDCASE. ENDFORM.

El parmetro r_ucomm es el que nos trae el cdigo cuando se da doble click en un rengln especfico de la ALV. Este cdigo es &IC1 . Si se detecta que se dio doble click entonces hace la lectura de la Manejo de ALV 3

estructura/tabla utilizada en esa ALV para leer los datos correspondientes a ese registro, despus llamamos a la funcin para crear la segunda ALV. Aqu antes de crear la segunda ALV primero seleccionamos la informacin que deseamos y la pasamos a otra estructura/tabla que se utilizar en la segunda ALV.
FORM crear_estructura_salida_tabla2. refresh lt_final2_alv. LOOP AT lt_final2 where anln1 = ls_registro-anln1 and anln2 = ls_registro-anln2. MOVE-CORRESPONDING lt_final2 TO lt_final2_alv. APPEND lt_final2_alv. ENDLOOP. refresh gt_fieldcat. CLEAR gs_fieldcat. gs_fieldcat-fieldname = 'BUKRS'. gs_fieldcat-reptext_ddic = text-001. gs_fieldcat-tabname = 'LT_FINAL2_ALV'. gs_fieldcat-outputlen = 4. APPEND gs_fieldcat TO gt_fieldcat. gs_fieldcat-fieldname = 'ANLN1'. gs_fieldcat-reptext_ddic = text-002. gs_fieldcat-tabname = 'LT_FINAL2_ALV'. gs_fieldcat-outputlen = 12. APPEND gs_fieldcat TO gt_fieldcat. . gs_fieldcat-fieldname = 'VALOR_NETO'. gs_fieldcat-reptext_ddic = text-018. gs_fieldcat-tabname = 'LT_FINAL2'. gs_fieldcat-outputlen = 13. APPEND gs_fieldcat TO gt_fieldcat. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid it_fieldcat = gt_fieldcat[] i_callback_user_command = 'DEFINE_ALV3' TABLES t_outtab = LT_FINAL2_ALV. ENDOFMR. " crear_estructura_salida_tabla2

Si deseamos mostrar una tercera ALV entonces nuevamente utilizamos el parmetro i_callback_user_command, en caso contrario omitimos este parmetro. En este ejemplo hacemos el llamado a la funcin DEFINE_ALV3 que me permitir crear una tercera estructura ALV de forma similar a la anterior.

Manejo de ALV

COMO DAR COLORES EN UN ALV


En el Catalogo de campos has de aadir: d_fieldcat_ln-emphasize = 'Cxyz'. Donde C indica = 'color '. x indica = el numero de color debe ser del 1 al 9. y indica = el grado de intenso que es el color: -->'0'=off --> '1'=on. z indica = inverso -->'0'=off -->'1'=on. Ejemplo: d_fieldcat_ln-emphasize = 'C201'. pone un color gris claro.

Manejo de ALV

Potrebbero piacerti anche