• No se han encontrado resultados

G014-CrearunAlvconOrden,agrupamientoysubtotales,coloresylogos.docx

N/A
N/A
Protected

Academic year: 2020

Share "G014-CrearunAlvconOrden,agrupamientoysubtotales,coloresylogos.docx"

Copied!
18
0
0

Texto completo

(1)

Template de Alv con Ordenamientos,

agrupamientos, Colores y Logos

En este template vamos a presentar las siguientes cosas: 1. Colorear Columas

2. Colorear Lineas 3. Ordenar un Alv

4. Agrupar un Alv con subtotales 5. Agregar un Logo en el Top Of Page

Debajo de todo les dejo un ejemplo de programa integrador de todos

estos temas:

Antes que Empecemos la explicación de cómo colorear un alv, vamos a ver los códigos de colores con los cuales contamos y su clasificación:

CLSIFICACION DE COLORES: El color del ALV sigue el siguiente formato CXYZ donde...

C-> indica que es un color

X-> indica el numero de color, que debe ser del 1 al 9 Y-> indica la intensidad: ('0'=off / '1'=on).

(2)

1 – Alv con Columas de Colores:

Para poner colores en las columnas habrá que poner en el catálogo que se le pasa a la función ALV que esa columna la pinte de un determinado color. Para ello existe el campo "emphasize" en el catálogo donde se le introduce el color.

gt_catalog-col_pos = col_pos. gt_catalog-ref_tabname = 'MBEW'. gt_catalog-tabname = 'GT_DATOS'. gt_catalog-fieldname = 'MATNR'. gt_catalog-emphasize = 'C401'.

APPEND gt_catalog. CLEAR gt_catalog. ADD 1 TO col_pos.

Ejemplo:

2 – Alv con Filas de Colores

(3)

Declaracion:

TYPES: BEGIN OF ty_ztickets.

tickets like ztickets-tickets. cod_cliente like ztickets-cod_cliente, color(4).

END OF ty_ztickets.

DATA: it_ztickets TYPE TABLE OF ty_ztickets. DATA: wa_tk TYPE ty_ztickets.

En el Layout:

ls_layout-info_fieldname = 'COLOR'.

Y luego dependiendo alguna consicion se puede especificar que codigo de color mostrar: LOOP AT it_ztickets INTO wa_tk.

IF wa_tk-cant_hor_apro < 10. wa_tk-color = 'C600'. "Rojo" ELSEIF wa_tk-cant_hor_apro > 40. wa_tk-color = 'C500'. "Verde"

ELSE.

wa_tk-color = 'C400'. "Celeste"

ENDIF.

MODIFY it_ztickets FROM wa_tk. ENDLOOP.

Este código lo que se hace es pasarle un código de código diferente según el contenido del campo CANT_HOR_APRO.

(4)

3 – Ordenar Alv

Para ordenar un alv hay que agregar además de las variables LAYOUT, FIELDCAT, etc las siguientes:

DATA: ls_layout   TYPE slis_layout_alv,       lt_fieldcat TYPE slis_t_fieldcat_alv,       ls_fieldcat TYPE slis_fieldcat_alv,       lv_repid    TYPE sy-repid,

      t_sort      TYPE slis_sortinfo_alv,       it_sort     TYPE slis_t_sortinfo_alv..

Y ya que estamos tambien agregamos un perform Sort entre los demas que teniamos:

  PERFORM layout.   PERFORM sort.   PERFORM fieldcat.

Dentro de ese form Sort, vamos a especificar cuales son los campos por los cuales se debe ordenar, como también si el orden es ascendente o descendente.

(5)

La tabla puede ordenar por uno o más campos, donde en el campo SPOS de indicamos cual será el orden. *&---* *&      Form  SORT *&---* *       text *---* *  -->  p1        text *  <--  p2        text *---* FORM sort .

  t_sort-fieldname = 'FECHA'.   t_sort-tabname = 'IT_ZTICKETS'.   t_sort-spos = 1.

  t_sort-up = 'X'.   t_sort-subtot = 'X'.   APPEND t_sort TO it_sort.   CLEAR t_sort.

  t_sort-fieldname = 'COD_CLIENTE'.   t_sort-tabname = 'IT_ZTICKETS'.   t_sort-spos = 2.

  t_sort-up = 'X'.   t_sort-subtot = 'X'.   APPEND t_sort TO it_sort.   CLEAR t_sort.

ENDFORM.      " SORT

Y luego en la llamada a la función del alv hay que agregar el registro:

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING       i_callback_program     = lv_repid       is_layout      = ls_layout       it_fieldcat      = lt_fieldcat       it_sort      = it_sort[]     TABLES       t_outtab       = it_ztickets     EXCEPTIONS       program_error      = 1

      OTHERS       = 2.

(6)

4 – Agrupar Alv

Esta parte de Agrupa complete el ordenamiento.

Y se agrupa poniéndole en el fieldcat del campo por el cual se quiere agrupar, lo siguiente:

  ADD 1 TO lv_posi.

  ls_fieldcat-col_pos = lv_posi.

  ls_fieldcat-fieldname = 'CANT_HOR_APRO'.   ls_fieldcat-tabname = 'IT_ZTICKETS'.   ls_fieldcat-seltext_m = 'Horas Apro'.

    ls_fieldcat-do_sum = 'X'.     ls_fieldcat-datatype = 'CURR'.

  APPEND ls_fieldcat TO lt_fieldcat.   CLEAR ls_fieldcat.

(7)
(8)

5 – Agregando un logo en el Top-of-Page

Para Agregar el logo, solamente hay que agregar el registro a la función que grega los comentarios en el top-of-page:

De un logo que haya sido cargado por la transacción OAER.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

(9)

EJemplo integrador de todos los temas:

Porgrama: ZPRUEBA_ALV_SORT

(10)

*&---* *& Report  ZPRUEBA_ALV_SORT

*&

*&---* *&

*&

*&---*

REPORT  zprueba_alv_sort.

SELECTION-SCREEN: BEGIN OF BLOCK  b01 WITH FRAME TITLE text-tit. SELECTION-SCREEN: BEGIN OF BLOCK  b02 WITH FRAME TITLE text-ti2. PARAMETERS: p_top AS CHECKBOX USER-COMMAND top.

PARAMETERS: p_logo AS CHECKBOX.

(11)

SELECTION-SCREEN: SKIP.

SELECTION-SCREEN: BEGIN OF BLOCK  b03 WITH FRAME TITLE text-ti3. PARAMETERS: p_sort AS CHECKBOX.

PARAMETERS: p_agru AS CHECKBOX. SELECTION-SCREEN: END OF BLOCK  b03. SELECTION-SCREEN: SKIP.

SELECTION-SCREEN: BEGIN OF BLOCK  b04 WITH FRAME TITLE text-ti4. PARAMETERS: p_scol RADIOBUTTON GROUP gr1.

PARAMETERS: p_colc RADIOBUTTON GROUP gr1. PARAMETERS: p_colr RADIOBUTTON GROUP gr1. SELECTION-SCREEN: END OF BLOCK  b04. SELECTION-SCREEN: END OF BLOCK  b01.

TYPES: BEGIN OF ty_ztickets.

        INCLUDE STRUCTURE ztickets. TYPES: color(4).

TYPES: END OF ty_ztickets.

DATA: it_ztickets TYPE TABLE OF ty_ztickets. DATA: wa_tk TYPE ty_ztickets.

*variables de alv

TYPE-POOLS: slis.

DATA: ls_layout   TYPE slis_layout_alv,       lt_fieldcat TYPE slis_t_fieldcat_alv,       ls_fieldcat TYPE slis_fieldcat_alv,       lv_repid    TYPE sy-repid,

      t_sort      TYPE slis_sortinfo_alv,       it_sort     TYPE slis_t_sortinfo_alv.. DATA: lv_top TYPE slis_formname.

DATA: lv_logo(30).

*Evento para Habilitar Opcion de Logo cuando se habilita Mostrar Top of P age

AT SELECTION-SCREEN OUTPUT.   PERFORM habilitar_logo.

(12)

*Seleccion de Datos

  PERFORM seleccion.

*Armado de Alv

  PERFORM layout.   PERFORM sort.   PERFORM fieldcat.

*Ejecucion de Alv

  PERFORM run_alv.

*&---* *&      Form  HABILITAR_LOGO *&---* *       text *---* *  -->  p1        text *  <--  p2        text *---* FORM habilitar_logo .

  IF p_top = 'X'. "Si se eligio mostrar TOP OF PAGE

    IF sy-ucomm = 'TOP'.

      " Habilitar Opcion de Logo y Nombre

      LOOP AT SCREEN.

        IF screen-name = 'P_LOGO'.       screen-input = 1.

      MODIFY SCREEN.         ENDIF.

        IF screen-name = 'P_LOGNOM'.       screen-input = 1.

      MODIFY SCREEN.         ENDIF.       ENDLOOP.     ENDIF.   ELSE.     "Sino se eleigio la opcion de TOP oF PAGe deshabilitar Opcion de Logo  y Nombre

    LOOP AT SCREEN.

      IF screen-name = 'P_LOGO'.         screen-input = 0.

        MODIFY SCREEN.       ENDIF.

      IF screen-name = 'P_LOGNOM'.         screen-input = 0.

        MODIFY SCREEN.       ENDIF.

    ENDLOOP.   ENDIF.

(13)

*&---* *&      Form  SELECCION *&---* *       text *---* *  -->  p1        text *  <--  p2        text *---* FORM seleccion .   SELECT *

  FROM ztickets

  INTO TABLE it_ztickets.

*Si se eligio la opcion de Color por Filas

  IF p_colr = 'X'.

    LOOP AT it_ztickets INTO wa_tk.       IF wa_tk-cant_hor_apro < 10.

        wa_tk-color = 'C600'. "Rojo"

      ELSEIF wa_tk-cant_hor_apro > 40.

        wa_tk-color = 'C500'. "Verde"

      ELSE.

        wa_tk-color = 'C400'.  "Celeste"

      ENDIF.

      MODIFY it_ztickets FROM wa_tk.     ENDLOOP.   ENDIF. ENDFORM.      " SELECCION *&---* *&      Form  LAYOUT *&---* *       text *---* *  -->  p1        text *  <--  p2        text *---* FORM layout .

  ls_layout-colwidth_optimize = 'X'.   ls_layout-zebra      = 'X'.

* Si se eligio la opcion de color por columnas

  IF p_colr = 'X'.

    ls_layout-info_fieldname = 'COLOR'.   ENDIF.

ENDFORM.      " LAYOUT

(14)

*&---* *       text *---* *  -->  p1        text *  <--  p2        text *---* FORM sort . *  Significa que la IT_ZTICKETS a mostrar en el Alv se va a ordenar: *  Primero por FECHA       en forma ascendente mostrando subtotales *  Segundo por COD_CLIENTE en forma ascentente mostrando subtotales

  t_sort-fieldname = 'FECHA'.   t_sort-tabname = 'IT_ZTICKETS'.   t_sort-spos = 1.

  t_sort-up = 'X'.   t_sort-subtot = 'X'.   APPEND t_sort TO it_sort.   CLEAR t_sort.

  t_sort-fieldname = 'COD_CLIENTE'.   t_sort-tabname = 'IT_ZTICKETS'.   t_sort-spos = 2.

  t_sort-up = 'X'.   t_sort-subtot = 'X'.   APPEND t_sort TO it_sort.   CLEAR t_sort.

ENDFORM.      " SORT

*&---*&      Form  FIELDCAT

*&---FORM fieldcat .

  DATA: lv_posi TYPE i.   ADD 1 TO lv_posi.

  ls_fieldcat-col_pos = lv_posi.   ls_fieldcat-fieldname = 'FECHA'.   ls_fieldcat-tabname = 'IT_ZTICKETS'.   ls_fieldcat-seltext_m = 'Fecha'.

  APPEND ls_fieldcat TO lt_fieldcat.   CLEAR ls_fieldcat.

******************************************

  ADD 1 TO lv_posi.

  ls_fieldcat-col_pos = lv_posi.

(15)

  ls_fieldcat-seltext_m = 'codigo cliente'.

*  Si se eligio color por columas le indicar que color tendra ese columna

  IF p_colc = 'X'.

    ls_fieldcat-emphasize = 'C500'.   ENDIF.

  APPEND ls_fieldcat TO lt_fieldcat.   CLEAR ls_fieldcat.

******************************************

  ADD 1 TO lv_posi.

  ls_fieldcat-col_pos = lv_posi.   ls_fieldcat-fieldname = 'TICKET'.   ls_fieldcat-tabname = 'IT_ZTICKETS'.   ls_fieldcat-seltext_m = 'ticket'.

*  Si se eligio color por columas le indicar que color tendra ese columna

  IF p_colc = 'X'.

    ls_fieldcat-emphasize = 'C501'.   ENDIF.

  APPEND ls_fieldcat TO lt_fieldcat.   CLEAR ls_fieldcat.

******************************************

  ADD 1 TO lv_posi.

  ls_fieldcat-col_pos = lv_posi.   ls_fieldcat-fieldname = 'ADMIN'.   ls_fieldcat-tabname = 'IT_ZTICKETS'.   ls_fieldcat-seltext_m = 'administrador'.

*  Si se eligio color por columas le indicar que color tendra ese columna

  IF p_colc = 'X'.

    ls_fieldcat-emphasize = 'C510'.   ENDIF.

  APPEND ls_fieldcat TO lt_fieldcat.   CLEAR ls_fieldcat.

******************************************

  ADD 1 TO lv_posi.

  ls_fieldcat-col_pos = lv_posi.

  ls_fieldcat-fieldname = 'CANT_HOR_APRO'.   ls_fieldcat-tabname = 'IT_ZTICKETS'.   ls_fieldcat-seltext_m = 'Horas Apro'.

(16)

  IF p_agru = 'X'.

    ls_fieldcat-do_sum = 'X'.     ls_fieldcat-datatype = 'CURR'.   ENDIF.

*  Si se eligio color por columas le indicar que color tendra ese columna

  IF p_colc = 'X'.

    ls_fieldcat-emphasize = 'C511'.   ENDIF.

  APPEND ls_fieldcat TO lt_fieldcat.   CLEAR ls_fieldcat.

******************************************

ENDFORM.      "fieldcat

*&---* *&      Form  top_of_page

*&---* *       text

*---*

FORM top_of_page.

  DATA: it_top  TYPE slis_t_listheader. "TABLA DEL TOP_OF_PAGE

  DATA: wa_top  TYPE slis_listheader.   DATA: cantidad(3).

*

  REFRESH it_top.   wa_top-typ = 'H'.   wa_top-key = ''.

  wa_top-info = 'Informacion de Alquileres'.

  APPEND wa_top TO it_top.

  DESCRIBE TABLE it_ztickets LINES cantidad.   wa_top-typ = 'S'.

  wa_top-key = ''.

(17)

  APPEND wa_top TO it_top.   wa_top-typ = 'S'.

  wa_top-key = ''.

  CONCATENATE 'Usuario:' sy-uname   INTO wa_top-info SEPARATED BY space.   APPEND wa_top TO it_top.

  wa_top-typ = 'S'.   wa_top-key = ''.

  CONCATENATE 'Fecha:' sy-datum

  INTO wa_top-info SEPARATED BY space.   APPEND wa_top TO it_top.

*si se eligio un logo se lo pasamos a la funcion

  IF p_logo = 'X'.     lv_logo = p_lognom.   ENDIF.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      i_logo       = lv_logo       it_list_commentary = it_top       i_alv_form         = 'X'.

ENDFORM.      "top_of_page *&---* *&      Form  RUN_ALV *&---* *       text *---* *  -->  p1        text *  <--  p2        text *---* FORM run_alv .   lv_repid = sy-repid. * Opcion de ver top of page

  IF p_top = 'X'.

(18)

* Opcion de ordenar

  IF p_sort <> 'X'.     REFRESH it_sort.   ENDIF.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program     = lv_repid       is_layout      = ls_layout       it_fieldcat      = lt_fieldcat       i_callback_top_of_page = lv_top       it_sort      = it_sort[]     TABLES

      t_outtab       = it_ztickets     EXCEPTIONS

      program_error      = 1

      OTHERS       = 2.

ENDFORM.      " RUN_ALV

(19)

Referencias

Documento similar

pañol” y en el cual se hace un acertado estudio del Diccionario Gallego - Castellano editado por la Real Academia Gallega. Advertimos á nuestros lectores que quedan ya muy

Estableció a su favor como derechos fundamentales de aplicación inmediata la igualdad de oportunidades y el trato más favorable (CP artículos 13 y 85) para lograr el máximo

37 El TPI, en los fundamentos jurídicos del 149 al 154 de la sentencia «Virgia- micina», examinó las dos actividades complementarias que integran la evaluación de riesgos:

- Fase Visual: Color rojo cereza. Puede presentar un pequeño precipitado de sales tartáricas o de polifenoles polimerizados. - Fase Olfativa: Aroma limpio y complejo, donde destaca

Y tú sabes cómo es de desubicado Bruno, saca esa pala- bra cada vez y Marcial y yo nos miramos como diciendo «qué se le va a hacer».. Pero yo creo que Marcial se va a componer,

o esperar la resolución expresa&#34; (artículo 94 de la Ley de procedimiento administrativo). Luego si opta por esperar la resolución expresa, todo queda supeditado a que se

El peluche también baila, canta, agita las alas de murciélago, pide que le den de comer, cierra los ojos para simular un bostezo, pero otras veces, al fondo del patio o

CA: Pero una vez que quites las manos de forma segura del volante, la capacidad para disrumpir toda la industria parece enorme, porque en ese punto en que hablas de gente que