Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sap 06 PDF
Sap 06 PDF
Leccin 1
Introduccin
El ALV Grid control (ABAP List Viewer) es una herramienta flexible para mostrar
listas. La herramienta tiene operaciones comunes de las listas como funciones
genricas y pueden ser redefinidas. Esto permite que el uso de la ALV sirva para
una gran variedad de programas.
1.1 Implementacin
Como todos los controles wrap, la ALV ofrece mtodos globales de clase que
pueden ser usados desde los programas.
Los controles son componentes software que pueden ser instanciados localmente.
Para poder comunicarse con ese componente todos los controles wrap usan
mtodos control Framework. En este contexto, las ALV son un caso especial.
La ALV usa controles del men de SAP para integrarlas en sus funciones estndar.
Ese men puede ser customizado para los requerimientos individuales de cada
programa.
1.3 Rasgos
1.4 Limitaciones
La ALV Grid control no puede mostrar bloques o listas jerrquicas. Las listas han
de ser mostradas en lneas individuales. Permite poder ordenarlas al gusto del
usuario e imprimirlas con ese formato.
2.1 Definicin
Se puede llamar a mtodos de esa instancia para redefinir propiedades del control.
2.3 Integracin
Bsicos
El siguiente grfico muestra los pasos requeridos para mostrar una lista en una
ALV:
Como mnimo se tiene que proveer de los siguientes dos tipos de informacin para
mostrar los datos.
Una tabla interna con los datos a mostrar, llamada Output table
Una descripcin de la estructura de esos datos que han sido declarados en
la ALV, bien con el field catalog o bien con la correspondiente estructura del
diccionario de datos.
Generalmente, la tabla de salida contiene datos que previamente se han
seleccionado de la base de datos.
La referencia de la Output table que se le pasa a la ALV tiene que ser vlida
mientras la ALV est operativa. sta puede ser local en el programa o referenciarse
a una estructura global.
El field catalog es una tabla que contiene informacin referente a los campos que
se van a mostrar en la ALV. Por ejemplo, la ALV usa la tabla para identificar el tipo
La ALV Grid control usa los controles grid para mostrar la Output table. Por ello,
podemos decir que la ALV Grid control es un wrap que usa los controles bsicos de
wrap. La ALV Grid control difiere de los controles bsicos en los siguientes
aspectos:
Todos los eventos son registrados en el sistema cuando el control es
instanciado. Si se quiere registrar todos los eventos como eventos de la
aplicacin se debe usar el parmetro I_APPL_EVENTS y el mtodo
disptacher CL_GUI_CFW=>DISPATCH en el mdulo PAI.
Primeros pasos
Esta seccin describe los fciles pasos que se deben seguir para mostrar una lista
usando una ALV Grid control.
1. Crear una instancia para la ALV Grid control e integrarla en la pantalla
2. Seleccionar los datos que se van a mostrar y pasarlo con la descripcin de
los campos que se han usado.
Los siguientes rasgos de la ALV Grid la hacen muy potente y apta para muchas
aplicaciones.
Las variantes permiten a los usuarios adaptar la salida a sus requerimientos.
Se puede programar que opciones se les muestran y que variante se
muestra al iniciarse.
Con la ayuda de las variantes los usuarios pueden customizar la lista de salida para
satisfacer sus requerimientos. Los parmetros que se usan dentro del mtodo
set_table_for_first_display son: I_SAVE, IS_VARIANT y I_DEFAULT
Objetivo
La funcin estndar cambia las variantes que pueden ser accesibles para los
usuarios pinchando en los botones de la toolbar. Esos iconos permiten al usuario
ajustar el formato de la ALV a sus requerimientos durante la vida del programa.
El desarrollador determina si los usuarios pueden guardar las variantes y definir si
las opciones estn disponibles.
Pasos a seguir
1. Declarar la variable para determinar las opciones de grabar que estn
disponibles para el usuario y una estructura para identificar la variante.
DATA: X_SAVE TYPE c, " Parmetro I_SAVE
GV_VARIANT TYPE DISVARIANT. " Parmetro
IS_VARIANT
Resultado
La toolbar ahora incluye en el men la opcin de que los usuarios lean y graben
variantes. Dependiendo del valor del parmetro I_SAVE se puede:
Opciones para el parmetro I_SAVE
I_SAVE = SPACE Las variantes no pueden ser grabadas.
I_SAVE = 'U' Slo se pueden acceder a las variantes del usuario.
I_SAVE = 'X' Slo se pueden grabar variables globales.
I_SAVE = 'A' Tanto las variantes globales como las de usuario pueden ser
grabadas.
La ALV Grid tiene funciones estndar para la edicin de listas. Los usuarios pueden
acceder a esas funciones con la toolbar o el men. Para integrar funciones propias
se puede:
Reemplazar las funciones existentes por funciones redefinidas.
Aadir nuevas funciones a la toolbar o el men.
Se puede tambin ocultar o deshabilitar funciones que no se necesiten.
Objetivo
Las excepciones son grficos que indica que, un valor ha pasado de un rango en
lnea de la lista. Por ejemplo, si usamos el modelo de un aeropuerto, se puede usar
un semforo en rojo para indicar que un vuelo est lleno. Los colores diferentes
ayudan al usuario a comprender rpidamente el estatus de la capacidad. Se puede
utilizar tres estatus diferentes:
3 Baja ocupacin
Pasos a seguir
1. Definir el layout del tipo LVC_S_LAYO:
DATA gs_layout TYPE LVC_S_LAYO.
2. Aadir una variable de tipo c a la Output table como se muestra en el
ejemplo.
DATA: BEGIN OF GT_OUTTAB OCCURS 0.
INCLUDE ESTRUCTURA <DDIC-Struktur>.
DATA: light TYPE C. "Muestra exceptions
DATA: END OF GT_OUTTAB.
3. Asignar al campo EXCP_FNAME el nombre de la excepcin.
4. Si se desea mostrar la excepcin como un led debe asignar el campo
EXCP_LED al layout.
5. Haga un loop y compruebe el valor de la excepcin, dependiendo de l
asigne los valores 1, 2, 3 para mostrar los semforos.
6. Pasar el layout y la Output table usando el mtodo
set_table_for_first_display.
Para actualizar los datos en caso de que hayan cambiado, usar el mtodo
refresh_table_display.
Objetivos
Se usan los conversin exist para definir un salto a una rutina de conversin de una
columna de la Output table. La conversin es implementada usando WRITE con
USING EDIT MASK
Requisitos previos
Para que la ALV Grid pueda hacer una conversin, ella debe saber la longitud
interna y externa del campo, o lo que es lo mismo, la longitud antes y despus de
la conversin como se ve en el ejemplo.
DATA TIME TYPE T VALUE '154633'.
WRITE (8) TIME USING EDIT MASK '__:__:__'. "Output: 15:46:33
En este ejemplo la longitud interna es de seis caracteres pero la salida es de ocho.
Pasos a seguir
Mtodo Aplicacin
CONSTRUCTOR Genera una instancia de la ALV Grid.
set_table_for_first_display Muestra una Output table en el container.
refresh_table_display Refresca los datos de la ALV.
Mtodo Aplicacin
get_current_cell Coge el ndice y propiedades de una celda.
set_current_cell_via_id Posiciona el cursor en una celda especfica.
get_scroll_info_via_id Coge la posicin del scrool.
set_scroll_info_via_id Posiciona el scroll en una posicin.
get_selected_cells Coge la posicin y la informacin de una celda
que haya sido seleccionada.
get_selected_columns Coge el nombre de las columnas seleccionadas.
get_selected_rows Coge el ndice de las filas seleccionadas.
set_selected_rows Selecciona filas.
Mtodo Aplicacin
get_frontend_field_catalog Coge el actual field catalog de la pantalla.
set_frontend_field_catalog Pone un field catalog en la pantalla.
get_frontend_layout Coge el layout de la pantalla.
set_frontend_layout Pone un layout en la pantalla.
Set_3d_border Habilita (o no) el borde en 3D de la ALV Grid
Mtodo Aplicacin
4.05 CONSTRUCTOR
Parmetro Significado
I_appl_events Si este parmetro est activo, la ALV Grid registra los eventos
como eventos de aplicacin, si no est activo, todos los
eventos se registran en el sistema.
4.06 GET_CURRENT_CELL
Se utiliza este mtodo para coger el valor y las propiedades de la celda en la que el
cursor est posado. Si es una columna es seleccionada y no una celda, la ALV
indica que la fila es 0 y devuelve slo la informacin especfica de la columna.
La ALV Grid devuelve dos filas y columnas ndices: una que referencia en la Output
table y otra referente a la posicin que muestra la ALV.
Parmetro Significado
E_ROW Fila ndice de la celda seleccionada en la ALV
E_VALUE Valor de la celda seleccionada
E_COL ndice de la columna seleccionada en la ALV
ES_ROW_ID Estructura con la informacin de la fila ndice seleccionada de
la Output table en la ALV
ES_COL_ID Estructura con la informacin de la columna ndice
seleccionada de la Output table en la ALV
Coge el field catalog actual. Este mtodo se usa si se desea modificar el field
catalog para, por ejemplo ocultar o mostrar alguna de las columnas.
Definicin del mtodo
CALL MTODO
<ref.var.CL_GUI_ALV_GRID>->get_frontend_field catalog
IMPORTING
ET_field catalog = <tabla interna de tipo LVC_T_FCAT>.
Parmetro Significado
ET_field catalog Estructura con la descripcin de la Output table
4.08 GET_FRONTEND_LAYOUT
Parmetro Significado
ES_layout Contiene campos para hacer totales, excepciones, colores, Drag &
Drop e interactuar con otros elementos.
4.09 GET_SELECTED_CELLS
Requisitos previos
Se debe activar el modo cell selection para permitir al usuario seleccionar celdas
sueltas (y celdas mltiples usando la tecla Ctrl). Para conseguir esto, en la llamada
al mtodo set_table_for_first_display se le debe pasar la layout.
4.10 GET_SELECTED_ROWS
4.11 GET_VARIANT
Requisitos previos
La variante actual ha debido ser grabada antes de llamar al mtodo. Para ello, en la
llamada al mtodo set_table_for_first_display los parmetros I_SAVE y
IS_VARIANT deben contener los valores correctos.
4.12 REFRESH_TABLE_DISPLAY
El siguiente mtodo se usa para refrescar los datos de la ALV y poder mostrar los
cambios efectuados.
Parmetro Significado
IS_STABLE Si se indica los valores de la fila y columna el scrool se
posiciona sobre ellos.
I_SOFT_REFRESH Este parmetro se usa en casos excepcionales. Si se activa
este parmetro la ordenacin, filtros y dems cambios hechos
por el usuario desaparecern.
IT_FILTER Tabla con las caractersticas del filtro
Asigna un field catalog a la ALV. Despus de usar este mtodo se debe refrescar de
la ALV usando, por ejemplo el mtodo refresh_table_display.
Requisitos previos
Se debe rellenar el field catalog con el mtodo get_fronted_field catalog o de forma
semi-automtica antes de llamarla.
Parmetro Significado
IT_field catalog Descripcin de los atributos de las columnas de la
Output table
Restricciones
En este mtodo la ALV Grid no tiene acceso al Data Dictionary, por ello no es
posible crear referencias del diccionario, por ejemplo para copiar literales de
campos guardados en el diccionario como texto de columnas.
Fija un layout para el ALV actual. Despus de usarse, se debe usar el mtodo
refresh_table_display para que los cambios se reflejen.
En la layout se determinan las propiedades de la ALV. Usando en el mtodo
set_table_for_first_display el parmetro IS_LAYOUT se obtiene idnticos
resultados.
4.15 SET_SELECTED_CELLS
Marca como seleccionas celdas de la ALV. Cualquier otra seleccin que se hubiera
hecho con anterioridad desaparece al ser llamado este mtodo.
4.16 SET_SELECTED_COLUMNS
Parmetro Significado
IT_COL_TABLE Tabla con el nombre de las columnas que son seleccionadas.
4.17 SET_SELECTED_ROWS
Marca como seleccionadas filas de la ALV. La primera fila es la fila 1. Cualquier otra
seleccin que se hubiera hecho con anterioridad desaparece al ser llamado este
mtodo.
Parmetro Significado
IT_INDEX_ROWS Tabla con ndices de las filas seleccionadas
4.18 SET_SORT_CRITERIA
Fija el criterio de ordenacin por columnas. Para que surta efecto se ha de llamar
despus al mtodo refresh_table_display.
Definicin del mtodo
CALL MTODO <ref.var.CL_GUI_ALV_GRID>->set_sort_criteria
EXPORTING
IT_SORT = <tabla interna de tipo LVC_T_SORT>.
Parmetro Significado
IT_SORT Se define una columna por registro.
4.19 SET_TABLE_FOR_FIRST_DISPLAY
Requisitos previos
La Output table debe estar definida globalmente o ser un atributo pblico de la
clase.
Parmetro Significado
I_ESTRUCTURA_NAME Nombre del Data Dictionary para la Output table. Si se
especifica este parmetro la field catalog se genera
automticamente.
La seccin trabajando con la ALV Grid control describe puntos especiales que se
deben considerar para trabajar con los eventos de la clase.
Evento Aplicacin
print_end_of_list Define el texto que aparecer al final de la lista.
print_top_of_list Define el texto que imprimir en la cabecera.
print_end_of_page Define el texto que se imprimir en el pie de cada pgina.
print_top_of_page Define el texto que aparecer en la cabecera de cada pgina
subtotal_text Define un texto para los subtotales.
Evento Aplicacin
double_click Pinchar dos veces en una celda
hotspot_click Pinchar una vez en una celda declarada hots_pot.
5.03 DOUBLE_CLICK
5.04 HOTSPOT_CLICK
Se activa cuando en una celda hotspot (aparece una mano en el puntero del ratn
al pasar sobre ella) se hace click.
Parmetro Significado
E_ROW_ID TYPE REF TO LVC_S_ROW Estructura con ndice de fila
E_COLUMN_ID TYPE REF TO LVC_S_COL Estructura con el nombre de la
columna
5.05 PRINT_END_OF_LIST
5.06 PRINT_END_OF_PAGE
Requisitos previos
Para que exista pie de pgina se ha de reservar lneas de la pgina para ello usando
el campo reservelns de la estructura lvc_s_prnt que se le pasa al mtodo
set_table_for_first_display.
5.07 PRINT_TOP_OF_LIST
Evento que imprime un texto en la cabecera. Evento que se ejecuta slo una vez y
es antes del print_top_of_page. El campo usado es el gris_title del layout.
5.08 PRINT_TOP_OF_PAGE
5.09 SUBTOTAL_TEXT
Parmetro Significado
ES_SUBTOTTXT_INFO
Type LVC_S_STXT Estructura con informacin del criterio para hacer el
subtotal.
EP_SUBTOT_LINE
Type Ref To DATA Variable de referencia para insertar un subtotal en la
grid. Las columnas para las que la suma no fue
calculada se quedan con el valor inicial.
E_EVENT_DATA
Type Ref To
CL_ALV_EVENT_DATA El atributo M_DATA de este objeto hace referencia al
texto del subtotal.
Ejemplo
Mostrar una tabla con la estructura SFLIGHT en una ALV, y que aparezcan los
subtotales.
1. Definir e implementar un evento handler para el evento subtotal_text.
Registrar el evento con SET HANDLER
2. Llamar a la subrutina con este mtodo y pasar los parmetros
3. Los parmetros ep_subtot_line y e_event_data contienen referencia a
variables tipo DATA, por eso se deben usar field symbols.
FORM Mtodo_subtotal_text
USING es_subtottxt_info TYPE lvc_s_stxt
ep_subtot_line TYPE REF TO data
e_event_data TYPE REF TO cl_alv_event_data.
5.10 TOOLBAR
Evento que la ALV provoca cada vez que el control toolbar tiene que ser
regenerado.
Para aadir funciones propias, se debe instanciar el mtodo set_toolbar_interactive
y escribir un mtodo handler.
Se puede ocultar la toolbar en su totalidad rellenado el campo no_toolbar del
layout.
Parmetro Significado
E_OBJECT Type Ref To
CL_ALV_EVENT_T
OOLBAR_SET El objeto contiene slo un atributo con la tabla de
funciones de la toolbar.
E_INTERACTIVE
Type CHAR01 Si la bandera est activa, se provoca el mtodo
usando set_toolbar_interactive. Sino, el evento es
provocado por ALV Grid.
6.01 Definicin
El Field Catalog es una tabla del tipo LVC_T_FCAT que contiene informacin de los
campos que van a ser mostrados. La ALV usa la tabla para, por ejemplo, saber el
tipo de campo a mostrar.
Se usan los campos del field catalog para determinar el formato y las propiedades
de las columnas de la lista que se va a mostrar en la ALV.
En casos excepcionales, no es necesario pasar el field catalog (en la generacin del
field catalog automtica).
6.02 Estructura
6.03 Integracin
Generalmente, se recomienda rellenar los campos del field catalog antes de mostrar
la ALV por primera vez y utilizar despus el mtodo set_table_for_first_display.
Para ajustar el field catalog generado por el ALV para un requerimiento especial
antes de mostrarlo se usa el mdulo de funciones VC_field catalog_MERGE.
Bsicamente se necesita un field catalog por cada listado que se muestra usando un
ALV Grid. Se puede generar de las siguientes formas:
Automticamente usando una estructura del Data Dictionary.
Manualmente en un programa ABAP.
Semi-automticamente combinando las dos opciones anteriores.
Objetivos
Si la estructura del Output table corresponde a una estructura almacenada en el
Data Dictionary (DDic) la ALV Grid puede usar esta informacin y generar
automticamente el field catalog. En este caso todos los campos de esa estructura
del Data Dictionary son mostrados en la ALV.
Pasos a seguir
Pasar la estructura al ALV Grid.
1. Referenciar la estructura con LIKE o INCLUDE STRUCTURE .
Si se usa INCLUDE STRUCTURE se puede generar parte automticamente y
otra manual aadiendo el resto de campos.
2. Pasar la estructura al mtodo set_table_for_first_display con el parmetro
I_STRUCTURE_NAME.
Si no se desea aadir ms campo a la estructura o si se desea ocultar campos
especficos, no se necesitar pasar el field catalog.
Objetivos
Se puede dar el caso de que los datos a mostrar no aparecen ni parcialmente en las
estructuras del Data Dictionary. Entonces se deben rellenar los campos del field
catalog.
Pasos a seguir
El field catalog est definido en el Data Dictionary como una tabla del tipo
LVC_T_FCAT. Cada fila del field catalog corresponde a un campo del Output table.
Dependiendo de cuantos campos estn en el Data Dictionary se deben rellenar por
lo menos los siguientes campos:
Objetivos
Cuando se genera el field catalog semi-automticamente, se combina la
informacin del Data Dictionary con informacin propia. Se puede:
Modificar o
Aadir descripciones de nuevos campos por ejemplo, el mtodo es bueno
para, por ejemplo los siguientes casos:
o Mostrar una tabla del Data Dictionary pero sin sacar todos los
campos (usando el campo NO_OUT).
o Mostrar filas adicionales que contienen iconos u otra informacin.
Pasos a seguir
Para generar el field catalog de forma semi-automticamente:
1. Declarar una tabla interna de tipo LVC_T_FCAT.
2. Llamar al mdulo de funciones LVC_field catalog_MERGE y pasarle la
estructura del Data Dictionary de la estructura del Output table y tabla
interna que hace de field catalog. La funcin genera el field catalog.
3. Leer las filas que se deseen cambiar y adaptarlas a los requerimientos
especficos. Si la Output table contiene ms campos que estn en el Data
Dictionary se pueden aadir usando una fila nueva por cada campo en el
field catalog.
Formato de la columna
Campo Descripcin
COL_POS Posicin de una columna
DO_SUM Clculo del total
EMPHASIZE Color de la columna
HOTSPOT Aparece una mano y hace que reaccione con un solo clic
KEY Columna clave
NO_OUT No se muestra la columna.
NO_SUM No se permite un sumatorio.
OUTPUTLEN Anchura de la columna en caracteres.
Texto
Campo Descripcin
COLDDICTXT Definicin del Data Dictionary.
COLTEXT Etiqueta de la columna para las funciones.
REPTEXT Texto de la cabecera correspondiente al Data Dictionary.
SCRTEXT_L Texto largo del elemento del Data Dictionary.
SCRTEXT_M Texto mediano del elemento del Data Dictionary.
SCRTEXT_S Texto corto del elemento del Data Dictionary.
SELDDICTXT Texto definido en referencia al Data Dictionary.
SELTEXT Etiqueta de la columna.
TIPDDICTXT Texto de referencia del Data Dictionary.
Otros campos
Campo Descripcin
REPREP Valores para el criterio de seleccin.
SP_GROUP Grupo de teclas.
TXT_FIELD Nombre de la tabla interna.
El field catalog adems dispone del campo TECH que, evita que las unidades se
vean como una columna y con esto se evita que los usuarios interactuaran con ella.
Para los casos en los que usan la misma unidad de cantidad o moneda para toda la
columna, el field catalog contiene campos CURRENCY y QUANTITY. Se puede
usar esos campos para determinar la unidad de los campos valor rellenndolos con
valores como KM o USD.
Requisitos Previos
Para el campo valor se debe considerar los siguientes puntos:
El campo es de tipo P.
Es un campo de la Output table que tiene una unidad asociada.
6.16 Textos
Se utilizan estos campos para determinar los textos que se usan en la ALV Grid:
Como cabecera de columnas
Como tool tip (texto informativo que aparece remarcado cuando se
posiciona el ratn sobre un objeto)
Como columna de seleccin.
7.1 Definicin
7.2 Estructura
Colores
Campo Breve descripcin
ZEBRA Genera el ALV con un aspecto cebrado (lneas de distintos
colores alternados).
Interaccin
Campo Breve descripcin
DETAILINIT Muestra valores iniciales en la pantalla de detalle.
DETAILTITL Title bar de la pantalla de detalle
SGL_CLK_HD Un solo clic en la columna cabecera
Opciones de totales
Campo Breve descripcin
NUMC_TOTAL Permite hacer totales para los campos NUMC
NO_TOTLINE No muestra la lnea de totales
TOTALS_BEF Mostrar totales antes de un registro.
Integracin
Generalmente, se rellenan los campos antes de la llamada al mtodo
set_table_for_first_display. Los mtodos get_frontend_layout y set_frontend_layout
permiten modificar los resultados en el layout despus de haberse lanzado el
mtodo set_table_for_first_display.
Customizing
Campo Descripcin del rango
GRID_TITLE El ttulo que est entre el gris y la toolbar debe tener una
longitud de 70 caracteres como mucho.
NO_HEADERS Si se marca este campo, las columnas de la cabecera no se
muestran. Valores: SPACE, 'X'
NO_HGRIDLN Si se marca este campo, las columnas son mostradas sin
lneas horizontales. Valores: SPACE, 'X'
Excepciones
Campo Descripcin
EXCP_CONDS Si se marca este campo, muestra una excepcin en la fila de
(sub)totales. Los colores de las excepciones son, dependiendo
de las mismas '1': rojo, '2': amarillo, '3' verde. Valores:
SPACE, 'X'.
EXCP_FNAME Campo de la Output table para mostrar la excepcin.
EXCP_LED La excepcin no es mostrada como un semforo sino como un
LED. Valores: SPACE, 'X'
Colores
Campo Descripcin
ZEBRA Si se marca este campo, el listado muestra, jugando con dos
colores una lnea de cada color. Valores: SPACE, 'X'
Opciones de totales
Campo Descripcin
NO_TOTLINE Si se marca este campo, se pueden hacer subtotales pero no
totales. Valores: SPACE, 'X'
NUMC_TOTAL Si se marca este campo, los campos de tipo NUMC pueden
usarse para hacer totales. Valores: SPACE, 'X'
TOTALS_BEF Si se marca este campo, la ALV muestra los totales en la
primera fila y los subtotales antes de cada nuevo valor.
Valores: SPACE, 'X'
Estructura de impresin
Contiene campos para la configuracin de la impresin
Estructura
Campo Descripcin
RESERVELNS Nmero de lneas reservadas para el evento
print_end_of_page
Si no se indica nmero, el texto especificado como pie de
pgina es sobrescrito por la lista.
GRPCHGEDIT Habilita las opciones del usuario. Si se marca este campo el
usuario en la preview puede modificar cosas como las
ordenaciones, salto de pginas... de forma grfica. Valores:
SPACE, 'X'.
PRNTLSTINF Si se marca este campo, la informacin de la ordenacin
subtotales y filtros definidos como elementos estadsticos son
impresos. Valores: SPACE, 'X'
Integracin
La lista que se muestra en la ALV Grid es impresa en la ABAP List Viewer. El modo
de print preview deja que el usuario interactu y dichos cambios slo afectan a la
impresin. Se puede deshabilitar con el campo PRINT).