
CATALOGO DE CAMPOS DE ALV GRID CONTROL: Tabla interna donse se almacenan los campos que se visualizan en la salida de un reporte ALV. Especificado por el programador. Tabla del tipo LVC_T_FCAT (cada línea del tipo LVC_S_FCAT).
Propiedades:
-> TABNAME: nombre de la tabla interna de salida del ALV.
-> FIELDNAME: nombre del campo de la tabla in terna del ALV.
-> REF_TABLE: tabla de referencia del diccionario de datos ABAP.
-> REF_FIELD: campo de la tabla de referencia del diccionario de datos ABAP.
-> CHECKBOX: checkbox.
-> COL_POS: posición de la columna. Relevante si las posiciones relativas de las columnas no son idénticas a la secuencia de los campos.
-> DO_SUM: totales para la columna (Si o No).
-> HOTSPOT: columna sensible al hotspot (Si o No).
-> OUTPUTLEN: ancho de la columna. Especificar en caso de que el campo del ALV no tiene referencia al diccionario de datos.
-> ENPHASIZE: si es 'X', destaca el contenido de una columna.
-> KEY: columna clave (Si o No).
-> LOWERCASE: Mayuscula (Si o No).
-> NO_OUT: No se muestra la columna (Si o No).
-> SCRTEXT_S: descripción corta.
-> SCRTEXT_M: descripción mediana.
-> SCRTEXT_L: descripción larga.
-> JUST: alineación. (R, L o C).
-> NO_ZERO: no muestra el valor '0' (Si o No).
-> NO_SIGN: muestra signo (Si o No).
MANEJAR LAS PROPIEDADES DE COLUMNAS DEL CATALOGO: Se define la tabla interna y la estructura:
TYPE-POOLS: slis, icon. .................. * Tabla y estructura del catálogo DATA: ti_catalogo TYPE lvc_t_fcat, st_catalogo LIKE LINE OF ti_catalogo, ok_code ..... ...............
Siendo el campo que se va a agregar un icono, se ha de agregar el TYPE_POOLS icon. Y creamos la subrutina ARMAR_CATALOGO para definir las propiedades las propiedades de cada una de ellas.
MODULE crear_objetos_0100 OUTPUT. IF o_contenedor IS INITIAL. CREATE OBJECT o_contenedor EXPORTING container_name = 'CONTENEDOR'. CREATE OBJECT o_grilla EXPORTING i_parent = o_contenedor. PERFORM armar_catalogo. CALL METHOD o_grilla->set_table_for_first_display CHANGING it_outtab = ti_usuarios it_fieldcatalog = ti_catalogo[ ] EXCEPCIONS OTHERS = 4. ELSE. CALL METHOD o_grilla->refresh_table_display EXPORTING i_soft_refresh = 'X' EXCEPTIONS finished = 1 OTHERS = 2. ENDIF. ENDMODULE.
Dentro de ARMAR CATALOGO, as propiedades de cada columna del listado:
CLEAR ti_catalogo. REFRESH ti_catalogo. CLEAR st_catalogo. st_catalogo-fieldname = 'DNI'. st_catalogo-tabname = 'TI_USUARIOS'. st_catalogo-col_pos = 1. st_catalogo-outputlen = 10. st_catalogo-scrtext_s = 'DNI'. st_catalogo-scrtext_m = 'DNI'. st_catalogo-scrtext_l = 'DNI'. APPEND st_catalogo TO ti_catalogo. CLEAR st_catalogo. st_catalogo-fieldname = 'NOMBRE _APE'. st_catalogo-tabname = 'TI USUARIOS'. st_catalogo-col_pos = 2. st_catalogo-scrtext_s = 'Nombre y Apellido'. st_catalogo-scrtext_m = 'Nombre y Apellido'. st_catalogo-scrtext_l = 'Nombre y Apellido'. st_catalogo-outputlen = 25. st_catalogo-just = 'L'. APPEND st_catalogo TO ti_catalogo. CLEAR st_catalogo. st_catalogo-fieldname = 'ESTADO_USU'. st_catalogo-tabname = 'TI_USUARIOS'. st_catalogo-col_pos = 3. st_catalogo-scrtext_s = 'Estado usuario'. st_catalogo-scrtext_m = 'Estado usuario'. st_catalogo-scrtext_l = 'Estado usuario'. st_catalogo-outputlen = 12. st_catalogo-just = 'L'.
Agregamos una columna que muestra un icono versde si usuario activo o rojo si usuario inactivo.
CLEAR st_catalogo. st_catalogo-fieldname = 'ICIONO_ESTADO_USU'. st_catalogo-tabname = 'TI_USUARIOS'. st_catalogo-col_pos = 4. st_catalogo-icon = 'X'. st_catalogo-coltext = 'Estado'. APPEND st_catalogo TO ti_catalogo.
Se han de cambiar los parámetros que se pasan al método SET_TABLE_FOR_FIRST_DISPLAY:
CALL METHOD o_grilla->set_table_for_first_display CHANGING it_outtab = ti_usuarios it_fieldcatalog = ti_catalog[ ] &