Colores en celdas de tabla dinámica con FIELD-SYMBOL

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • vic3
    Member
    • mar
    • 33

    #1

    Colores en celdas de tabla dinámica con FIELD-SYMBOL

    Hola, buenas tardes.

    He cargado una tabla dinámica <gt_dyntable> haciendo una selección de datos.
    El problema es que ahora, con los datos que tengo en la tabla dinámica, necesito colorear las celdas dependiendo de una serie de condiciones...

    Si la tabla no fuese dinámica sería tan fácil como esto (por ejemplo):

    DATA lv_color TYPE lvc_s_scol. "Creo LV para el color
    FIELD-SYMBOLS <fs_tabla> LIKE LINE OF IT_ZTVSGPRUEBA06. "Creo FS para la tabla interna

    lv_layout-coltab_fieldname = 'CELLCOLORS'. "asigno nombre a mi variable

    * Para los colores de celda ********
    UNASSIGN <fs_tabla>.
    LOOP AT IT_ZTVSGPRUEBA06 ASSIGNING <fs_tabla>. "Recorro la tabla interna
    CASE <fs_tabla>-PAIS. "Para la columna COLOR
    WHEN 'ALEMANIA'.
    lv_color-fname = 'PAIS' .
    lv_color-color-col = '6'. "ROJO
    lv_color-color-int = '1'. "INTENSIDAD
    lv_color-color-inv = '1'. "INVERSO
    APPEND lv_color TO <fs_tabla>-cellcolors.
    ENDCASE.
    ENDLOOP.


    No tengo ni idea como hacerlo con una tabla dinámica de la cual no puedo introducir su campo <fs_tabla>-PAIS, porque no lo sé.

    Se agradecería vuestra ayuda, un saludo.
    Consultor técnico SAP
  • vanesamacri
    Senior Member
    • jun
    • 146

    #2
    Hola.

    Probá asignando el nombre del campo a evaluar a otro field symbol.

    Ejemplo:

    FIELD-SYMBOLS <fs_campo> type ANY.

    UNASSIGN <fs_campo>.

    ASSIGN ('<FS_TABLA>-PAIS') TO <fs_campo>.

    IF <fs_campo> IS ASSIGNED.

    *** Lógica para evaluar contenido de campo PAIS.

    ENDIF.


    Espero haber sido claro. Cualquier cosa, avisá.
    Un saludo.

    Comentario

    • vic3
      Member
      • mar
      • 33

      #3
      Ya lo he resuelto, si alguien tiene dudas de como hacerlo que pregunte

      Un saludo!
      Consultor técnico SAP

      Comentario

      • FuryNocturn
        Junior Member
        • oct
        • 10

        #4
        mi ejemplo.

        este es el código que use yo mira que necesitas cambiar y te funcionara. en la tabla tendrás que tener declarado 3 campos el nivel o el campo que quieras pintar y los dos campos para pintar dicho campo style y colors.

        Código:
        *********************************************************************************************************
        * PINTA LOS CAMPOS DE OCUPACION                                                                         *
        *********************************************************************************************************
        TYPES: BEGIN OF ty_date,   
        [COLOR="Red"]    sel,
            nrev     TYPE znr,
            pista    TYPE znp,
            cliente  TYPE kunnr,
            fecha    TYPE dats,
            hora     TYPE tims,
            nivel    TYPE zlevel,[/COLOR]
          style     TYPE lvc_t_styl,
          colors    TYPE lvc_t_scol,
                     END OF ty_date.
        
        DATA: gt_data        TYPE TABLE OF ty_date,
                  wa_style      TYPE LINE OF lvc_t_styl,
                  wa_colors     TYPE LINE OF lvc_t_scol.
        
        
        
        FIELD-SYMBOLS: <wa_data> TYPE ty_date.
        
        
          LOOP AT [COLOR="Red"]gt_data[/COLOR] ASSIGNING <wa_data>.
            IF <wa_data>-[COLOR="Red"]nivel[/COLOR] = 0 OR
               <wa_data>-[COLOR="Red"]nivel[/COLOR] = 1 OR
               <wa_data>-[COLOR="Red"]nivel[/COLOR] = 2 OR
               <wa_data>-[COLOR="Red"]nivel[/COLOR] = 3 OR
               <wa_data>-[COLOR="Red"]nivel[/COLOR] = 4.
        
              wa_style-fieldname = '[COLOR="Red"]NIVEL[/COLOR]'.
              wa_style-style = cl_gui_alv_grid=>mc_style_disabled.
        
              APPEND wa_style TO <wa_data>-style.
              CLEAR wa_style.
        
              wa_colors-fname = [COLOR="Red"]'NIVEL'[/COLOR].
              IF <wa_data>-[COLOR="Red"]nivel[/COLOR] = 0.
                wa_colors-color-col = 5.
              ELSEIF <wa_data>-[COLOR="Red"]nivel[/COLOR] = 1 OR
                     <wa_data>-[COLOR="Red"]nivel [/COLOR] = 2 OR
                     <wa_data>-[COLOR="Red"]nivel[/COLOR] = 3.
                wa_colors-color-col = 3.
              ELSE.
                wa_colors-color-col = 6.
              ENDIF.
        
              wa_colors-color-int = 1.
        
              APPEND wa_colors TO <wa_data>-colors.
              CLEAR wa_colors.
        
            ENDIF.
        
          ENDLOOP.
        espero que ayude a alguien.

        Comentario

        Trabajando...