Como cambiarle el color a una fila a un reporte en ALV?

Colapsar
Este tema está cerrado
X
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Juani
    Junior Member
    • sep
    • 9

    #1

    Como cambiarle el color a una fila a un reporte en ALV?

    Buenos días.

    Quiero cambiarle el color a una fila a un reporte en ALV para diferenciar los totales del detalle y tenga una mejor vista el reporte. anexo una imagen para que tengan una idea de lo que quiero.

    Gracias de antemano.

    Saludos

    Atte.

    Henger Abreu.
    Archivos Adjuntos
  • ademar
    Member
    • oct
    • 31

    #2
    Hola, una solucion seria poner:
    fieldcat-emphasize = 'C910'. te da el color de la columna.
    donde declaras tu fieldcat para el alv; pero lo consideras en la columna de tu campo total.

    Ahora puedess jugar con el color que deses desde (000 - 999)
    'C910'

    espero te sirva.

    ------------------------------------
    antony.alza@gmail.com

    Comentario

    • DavidXD_XD
      Moderator
      • ago
      • 1255

      #3
      Hola .. este link cae a pelo

      David Carballido Córdova

      Comentario

      • ademar
        Member
        • oct
        • 31

        #4
        Lo que te mande es para una columna sorry, para una fila seria algo similar, primero tendrias que crear una columna mas a tu tabla interna final (la q muestras en el alv), para poner el color,asi:
        1ª crearla columna
        ..........
        .......
        color(4) type c,
        end of ti_interna.
        2º evaluas en q fila pondras el color
        if ti_interna-campo eq 'H'.
        ti_interna-color = 'C610'.
        endif.
        3º en el layout pones:
        gt_layout-info_fieldname = 'COLOR'.

        4º listo puedes probar.

        espero te sirva
        suerte.

        ------------------------------------
        antony.alza@gmail.com

        Comentario

        • Juani
          Junior Member
          • sep
          • 9

          #5
          Buenos Días;

          Ya agregue la columna color a mi tabla interna (lista-color="C610"), este campo esta lleno en la fila donde se tiene que cambiar el color. Pero en donde tendria que validar este campo para poder cambiar el color? para que me entiendan mejor les anexo archivo.
          Archivos Adjuntos

          Comentario

          • DavidXD_XD
            Moderator
            • ago
            • 1255

            #6
            Aver yo hice un caso pintando de rojo las celdas que estan con error ... primero hay q declarar los pool de tipos e includes, luego la tabla interna, luego enlazar el campo de color en el layout y por ultimo llamar al ALV:

            Código:
            TYPE-POOLS: SLIS.
            INCLUDE <COLOR>.
            [COLOR="Blue"]* Tabla interna a mostrar en ALV[/COLOR]
            DATA: BEGIN OF gt_itab OCCURS 0.
                    INCLUDE STRUCTURE spfli.
            DATA:   field_col TYPE slis_t_specialcol_alv.        "Tabla interna para colores
            DATA: END OF gt_itab.
            [COLOR="blue"]* Tabla interna auxiliar[/COLOR]
            DATA: gt_aux_itab TYPE TABLE OF spfli WITH HEADER LINE.
            
            [COLOR="blue"]* Area de trabajo para tabla interna de colores[/COLOR]
            DATA: tmp_field_col TYPE slis_specialcol_alv.
            [COLOR="blue"]* Variables para ALV[/COLOR]
            DATA: gs_layout TYPE lvc_s_layo,
                  gt_fieldcat TYPE lvc_t_fcat.
            
            START-OF-SELECTION.
            [COLOR="blue"]* Lleno una tabla interna auxiliar[/COLOR]
              SELECT *
                INTO TABLE gt_aux_itab
                  FROM spfli.
            [COLOR="blue"]* Se mostrara en rojo las aerolineas que comienzan con L[/COLOR]
              LOOP AT gt_aux_itab.
                CLEAR gt_itab.
                MOVE-CORRESPONDING gt_aux_itab TO gt_itab.
                IF gt_aux_itab-carrid(1) = 'L'.
                  CLEAR tmp_field_col.
                  tmp_field_col-fieldname = 'CARRID'.
                  tmp_field_col-color-col = col_negative.        "Color de la celda
                  tmp_field_col-color-int = 0.
                  tmp_field_col-color-inv = 0.
                  APPEND tmp_field_col TO gt_itab-field_col.
                ENDIF.
                APPEND gt_itab.
              ENDLOOP.
            
            [COLOR="blue"]* Creo el Layout[/COLOR]
              gs_layout-zebra      = 'X'.
              gs_layout-excp_fname = SPACE.
              gs_layout-sel_mode      = SPACE.
              gs_layout-ctab_fname = 'FIELD_COL'.     "Enlazamos el campo en el layout
            
            [COLOR="blue"]* Llenamos el Fieldcat a partir de la Tabla SPFLI[/COLOR]
              CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
                  EXPORTING
                      I_PROGRAM_NAME        = 'SPFLI'
                  CHANGING
                      CT_FIELDCAT           = gt_fieldcat.
            
            [COLOR="blue"]* Y al final llamamos al ALV previa instancion de contenedores[/COLOR]
              CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
                    EXPORTING
                        I_SAVE                = 'A'
                        IS_LAYOUT             = gs_layout
                    CHANGING
                        IT_FIELDCATALOG       = gt_fieldcat[]
                        IT_OUTTAB             = gt_itab[].
            Lo mas seguro es que funcione, todavia no lo he probado , cuando llegue al trabajo lo pruebo y si hay correcciones lo cambio, espero te pueda aclarar como se trabajan los colores en los ALV's
            David Carballido Córdova

            Comentario

            • alvcano
              Junior Member
              • oct
              • 13

              #7
              Os dejo este enlace con un ejemplo de como cambiar el color a las columnas y filas de un ALV. Es bastante sencillo

              Es este post describo como podemos jugar con los colores dentro de un ALV de SAP. Utilizaremos el tipo de datos SLIS_T_SPECIALCOL_ALV.

              Comentario

              Trabajando...