ABAP-ALV

February 28, 2019 | Author: Rafael Noriega | Category: Computer Engineering, Areas Of Computer Science, Computer Programming, Software, Technology
Share Embed Donate


Short Description

Download ABAP-ALV...

Description

ABAP-ALV El ALV Grid control (ABAP List Viewer) es una herramienta flexible para mostrar listas. SAP proporciona un conjunto de módulos de función (ALV VISOR ABAP LIST) que se pueden poner en uso para embellecer la salida de un informe. Este conjunto de funciones ALV se utiliza para mejorar la legibilidad y la funcionalidad de cualquier salida del informe. Se recomienda recomien da cuando la salida de un infor informe me contiene contiene columnas que que se extienden más de 255 caracteres de longitud. En tales casos, este conjunto conjunto de funciones ALV ALV ayuda a elegir las columnas y organizarlas y también guardar las diferentes variantes de presentación del informe. Esta es una herramienta muy eficiente para clasificar y organizar dinámicamente las columnas de una salida del informe.

ABAP-ALV

ABAP-ALV •





Las funciones AL ALV V más corrientemente utilizadas para este propósito son; 1. REUSE_ALV_VARIANT_DEFAULT_GET 2. REUSE_ALV_VARIANT_F4 3. REUSE_ALV_VARIANT_EXISTENCE 4. REUSE_ALV_EVENTS_GET 5. REUSE_ALV_COMMENTARY_WRITE 6. REUSE_ALV_FIELDCATALOG_MERGE 7. REUSE_ALV_LIST_DISPLA REUSE_ALV_LIST_DISPLAY Y 8. REUSE_ALV_GRID_DISPLAY ** 9. REUSE_ALV_POPUP_TO_SELECT La Finalidad de las funciones anteriores anteriores se diferencian, diferencian, no todas las funciones son necesarias en un reporte ALV.

ABAP-ALV Cuando se crea un reporte utilizando funciones ALV es necesario: Incluir en el programa el tipo SLIS que tiene definidas todas las estructuras de los parámetros de entrada y de salida de esta función. TYPE-POOLS: SLIS.

Definir correctamente correctamente el catálogo de campos. T_EVENTS

TYPE SLIS_T_EVEN SLIS_T_EVENT T,

"Eventos.

Definir en el programa todas las subrutinas que implementarán el comportamiento de éste ante la ejecución de determinados eventos o ante la inter interacción acción del usuario. Pasarle los datos que deben ser mostrados en el reporte a la función utilizando tablas internas.

ABAP-ALV Utilizando las funciones ALV, ninguna sentencia WRITE aparecerá en el programa. Se informa a la correspondiente función de los datos que van a ser mostrados, la definición y características de cada uno de éstos datos y de la apariencia y todo es implementado por la función. Como mínimo se tiene que proveer de los siguientes dos tipos de información para mostrar los datos. •



Una tabla interna con los datos a mostrar, llamada Output  table Una descripción 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.

ABAP-ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = LV_REPID I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' "llama al form I_BACKGROUND_ID = 'ALV_BACKGROUND' "imagen de fondo IT_FIELDCAT = LV_FIELDCAT[] IT_EVENTS = T_EVENTS[] is_layout = lv_layout i_save = 'A' is_variant = l_variant "anexado variante i_default = 'X' TABLES T_OUTTAB = TI_VUELOS EXCEPTIONS program_error =1 OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

ABAP-ALV - I_CALLBACK_PROGRAM : Contiene el nombre del programa ABAP que está llamando a dicha función. - IT_FIELDCAT: Catalogo de campos con descripción de los campos. Una tabla interna que contiene la definición de los campos que aparecerán en el listado - T_OUTTAB: Nombre de la tabla interna que contiene toda la información recogida por el programa y la cual debe ser impresa en el reporte. Los demás parámetros podrán ser informados según el uso que se le vaya a dar a la función dentro del programa.

ABAP-ALV I_CALLBACK_PROGRAM : Contiene el nombre del programa ABAP que está llamando a dicha función. LV_REPID = SY-REPID I_CALLBACK_PROGRAM = LV_REPID IT_FIELDCAT. El parámetro IT_FIELDCAT se usa para diseñar el contenido de un reporte ALV. Se definirá una tabla interna de tipo SLIS_FIELDCAT_ALV, el cual está definido en el type-pool SLIS incluido al inicio del programa. Se construirá la tabla interna en el código del programa. TYPE-POOLS: SLIS. DATA: LV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

ABAP-ALV De todos los campos de esta tabla, las siguientes entradas son suficientes para cada registro: LV_FIELDCAT-FIELDNAME = 'PRICE'. LV_FIELDCAT-TABNAME = 'TI_VUELOS'. LV_FIELDCAT-reptext_ddic = 'Precio Del Vuelo'. APPEND LV_FIELDCAT. CLEAR LV_FIELDCAT. FIELDNAME: Nombre del campo en la tabla interna que contendrá los datos a mostrar. TABNAME: Nombre de la tabla interna que contiene los datos a mostrar en el listado.

ABAP-ALV Campos del field catalog Unidades de moneda y medida Campo Descripción CFIELDNAME Nombre del Campo de la moneda CURRENCY moneda QFIELDNAME Campo con el nombre de la unidad de medida de referencia. QUANTITY Unidad de medida Formato de la columna Campo COL_POS DO_SUM EMPHASIZE KEY NO_OUT NO_SUM OUTPUTLEN

Descripción Posición de una columna Cálculo del total Color de la columna Columna clave No se muestra la columna. No se permite un sumatorio. Anchura de la columna en caracteres

ABAP-ALV Texto

Campo

Descripción

COLDDICTXT COLTEXT

Definición del Data Dictionary. Etiqueta de la columna para las funciones. Texto de la cabecera correspondiente al Data Dictionary. Texto largo del elemento del Data Dictionary. Texto mediano del elemento del Data Dictionary. Texto corto del elemento del Data Dictionary. Texto definido en referencia al Data Dictionary. Etiqueta de la columna. Texto de referencia del Data Dictionary.

REPTEXT SCRTEXT_L SCRTEXT_M SCRTEXT_S SELDDICTXT SELTEXT TIPDDICTXT

ABAP-ALV Formato de la columna (Contenido) Campo

Descripción

DECIMALS_O DECMLFIELD

Número de decimales. Campo con especificación de decimales. Máscara para la salida de datos

EDIT_MASK NO_SIGN NO_ZERO ROUND SYMBOL ICON JUST

FIX_COLUMN

Mostrar sin signo Suprimir los ceros. Redondear valores Mostrar como un símbolo Mostrar como un icono Justificación del campo. R= justificado a la derecha, L= justificado a la izquierda, C= centrado Columna fija

ABAP-ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = LV_REPID I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' "llama al form I_BACKGROUND_ID = 'ALV_BACKGROUND' "imagen de fondo IT_FIELDCAT = LV_FIELDCAT[] IT_EVENTS = T_EVENTS[] is_layout = lv_layout i_save = 'A' is_variant = l_variant "anexado variante i_default = 'X' TABLES T_OUTTAB = TI_VUELOS EXCEPTIONS program_error =1 OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

ABAP-ALV IT_EVENTS. En esta tabla se especificarán ante qué eventos la respuesta será de nuestro programa y no implementado por la función. Para obtener los eventos que pueden ser codificados por el programa, es decir, aquellos para los cuales la función nos devuelve el control, basta con ejecutar la función REUSE_ALV_EVENTS_GET, importando una tabla interna en el parámetro ET_EVENTS, definida como SLIS_ALV_EVENT, estructura que viene definida en el type-pool SLIS incluido al inicio del programa. Cuando se llame a la función que va a mostrar el reporte se le pasará esta tabla interna con el nombre de los eventos y el nombre de la subrutina donde irán implementados dichos eventos.

ABAP-ALV *&---------------------------------------------------------------------* *& Form BUSCAR_EVENTOS *&---------------------------------------------------------------------* * text  *----------------------------------------------------------------------* FORM BUSCAR_EVENTOS . CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = T_EVENTS. ENDFORM. " BUSCAR_EVENTOS

ABAP-ALV *&--------------------------------------------------------------------* *& Form F_EVENTO *&--------------------------------------------------------------------* FORM F_EVENTO USING l_event LIKE wT_EVENTS-name l_form LIKE wT_EVENTS-form. **Selecciono el evento ‘TOP_OF_PAGE’  y le seteo el FORM a ejecutar, lleno el campo FORM DATA: ls_event TYPE slis_alv_event. READ TABLE t_events WITH KEY name = l_event INTO ls_event. IF sy-subrc = 0. MOVE l_form TO ls_event-form. MODIFY t_events FROM ls_event TRANSPORTING form WHERE name = l_event. ENDIF. ENDFORM.

" F_EVENTO

ABAP-ALV

ABAP-ALV Eventos. De todos los eventos que podemos implementar en nuestro programa, los más utilizados o los más comunes son dos: ‘Top-of-page’ y ‘At user command’. - ‘ Top-of-page’: Este evento se ejecutará cada vez que se vaya a imprimir una nueva página en el listado. En el caso de utilizar una función GRID display, la cabecera sólo aparecerá en la primera página, puesto que en un GRID hay una sola página. La forma de implementar el Top-of-page utilizando la función es sencilla. Definiremos una subrutina cuyo nombre se le pasará a la función en el contenido de la tabla interna I_EVENTS en el parámetro IT_EVENT.

ABAP-ALV En esta subrutina codificaremos el contenido de la cabecera del reporte. Existe una diferencia a la hora de implementar el top-of-page según la función que se esté utilizando: Si se trata de una función REUSE_ALV_GRID_DISPLAY se tendrá que utilizar una función específica para codificar el top-of-page. La función en particular es REUSE_ALV_COMMENTARY_WRITE. A dicha función se le pasará una tabla interna de tipo SLIS_LISTHEADER en el parámetro IT_LIST_COMMENTARY con toda la información que queremos que aparezca en la cabecera del listado. -

*&——————————————————————– * *& Form top_of_page *&——————————————————————– * FORM TOP_OF_PAGE . * Pasa a la cabecera el logo CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING I_LOGO = 'ENJOYSAP_LOGO' "Logo IT_LIST_COMMENTARY = GT_HEADER. ENDFORM. " TOP_OF_PAGE 

ABAP-ALV FORM f_cabecera. DATA: WA_HEADER TYPE SLIS_LISTHEADER. * Cargo el Título WA_HEADER-TYP = 'H'. WA_HEADER-INFO = 'Título en Mayúsculas'. APPEND WA_HEADER TO GT_HEADER. * Cargo el Subtítulo CLEAR WA_HEADER. WA_HEADER-TYP = 'A'. WA_HEADER-INFO = 'Texto para un subtítulo.'. APPEND WA_HEADER TO GT_HEADER. ENDFORM.

ABAP-ALV

ABAP-ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = LV_REPID I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' "llama al form I_BACKGROUND_ID = 'ALV_BACKGROUND' "imagen de fondo IT_FIELDCAT = LV_FIELDCAT[] IT_EVENTS = T_EVENTS[] is_layout = lv_layout i_save = 'A' is_variant = l_variant i_default = 'X' TABLES T_OUTTAB = TI_VUELOS EXCEPTIONS program_error =1 OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

ABAP-ALV Mostrar variantes. Con la ayuda de las variantes los usuarios pueden customizar la lista de salida para satisfacer sus requerimientos. Los parámetros que se usan dentro del método set_table_for_first_display son: I_SAVE, IS_VARIANT y I_DEFAULT Grabar variantes. La función estándar 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 están disponibles. Si se pasa sólo el actual parámetro IS_VARIANT, los usuarios sólo pueden leer variantes pero no grabar nuevas. Si se usa el parámetro I_SAVE se necesita pasar una variante con la estructura IS_VARIANT. La toolbar ahora incluye en el menú la opción de que los usuarios lean y graben variantes

ABAP-ALV I_SAVE.

En muchas ocasiones, cuando se nos pide implementar un reporte utilizando funciones ALV, se nos pide mostrar en la pantalla de selección un parámetro que sea el Layout del Report. Esto es una utilidad de estas funciones. Una vez el listado esté en pantalla, el usuario puede definir su propio layout del reporte, mostrando y ocultando campos (columnas), calculando subtotales e incluso cambiando las columnas de sitio. Una vez adaptado el layout a sus necesidades, puede grabarlo, quedando así disponible para otras ejecuciones del programa.

ABAP-ALV El parámetro de la pantalla de selección nos servirá para elegir distintos layouts grabados en anteriores ejecuciones del programa, nos mostrará cuáles hay definidos y verificará la existencia de éstos. Para llevar a cabo estas funcionalidades, utilizaremos las siguientes funciones: - REUSE_ALV_VARIANT_EXISTENCE pasándole en el parámetro CS_VARIANT el valor introducido por el usuario en la pantalla de selección. Nos dirá si el nombre del layout introducido por el usuario para ese reporte existe o no.

ABAP-ALV - REUSE_ALV_VARIANT_F4 hará las funciones del matchcode para ese campo. Hay que informar los siguientes parámetros: - IS_VARIANT: Se le pasará una estructura definida de tipo DISVARIANT. Esta estructura deberá llevar informado el nombre del reporte que ejecuta la función. Se almacenará el valor devuelto por la función en el parámetro ES_VARIANT. - I_SAVE: Este parámetro podrá tomar 3 valores distintos: ‘X’, seleccionará aquellos layouts grabados como ‘U’, estándares, seleccionará aquellos layouts específicos de usuario, y ‘A’, seleccionará todo tipo de layouts definidos para el programa, tanto estándares como específicos de usuario.

ABAP-ALV Cuando se utiliza esta utilidad de la función, hay que tener en cuenta que cuando se llame a la función para imprimir el reporte, hay que informar el parámetro I_SAVE con uno de los valores anteriormente definidos, ya que por defecto este parámetro toma como valor SPACE, que significa que no puede grabarse ningún layout en el reporte.

ABAP-ALV

ABAP-ALV

ABAP-ALV

ABAP-ALV

ABAP-ALV

ABAP-ALV IS_VARIANT Determina la variante para mostrar la Output table. Si se usa este parámetro se debe rellenar por lo menos el campo REPORTE. I_SAVE Determina las opciones disponibles para que el usuario guarde variantes. ‘X’: sólo globales ‘U’: sólo específico del usuario ‘A’: opciones ‘X’ ‘U’ a la vez. ‘ ‘: no se puede grabar. I_DEFAULT Determina si un usuario puede determinar variantes por defecto. ‘X’ : Está permitido. ‘ ‘ : No está permitido. Si las variantes por defecto están permitidas y si existe alguna definida, si no se indica lo contrario en el parámetro IS_VARIANT se muestra la variante por defecto de forma automática. IS_LAYOUT Determina las propiedades de la ALV.

ABAP-ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = LV_REPID I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' "llama al form I_BACKGROUND_ID = 'ALV_BACKGROUND' "imagen de fondo IT_FIELDCAT = LV_FIELDCAT[] IT_EVENTS = T_EVENTS[] is_layout = lv_layout i_save = 'A' is_variant = l_variant "anexado variante i_default = 'X' TABLES T_OUTTAB = TI_VUELOS EXCEPTIONS program_error =1 OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

ABAP-ALV IS_LAYOUT.

En este parámetro podemos pasarle una tabla interna informando de la apariencia del reporte. Esta apariencia podrá luego ser modificada desde el propio reporte. La tabla interna tendrá que ser declarada del tipo SLIS_LAYOUT_ALV. Entre otros, se puede definir si mostrar líneas verticales y horizontales , los colores de los campos, etc. Entre ellos, uno de los más importantes o que más se suele pedir es mostrar el reporte sin mostrar los valores repetidos para cierto campo en distintos registros. Esto se hará marcando con ‘X’ el campo CELL_MERGE de esta tabla interna. Para que esto funcione, el listado debe estar ordenado por este campo. Aquí hay una breve descripción de algunos valores de esta tabla: NO_COLHEAD : No habrá títulos en las columnas. ZEBRA : Alterna el color de la linea. NO_VLINE : Oculta las líneas verticales. CELL_MERGE : Suprime los campos repetidos.

ABAP-ALV

ABAP-ALV

ABAP-ALV IT_SORT. Define los criterios de ordenación con el que se mostrarán los datos en el listado, así como aquellos campos por los cuales debe calcularse totales y subtotales. Se da el nombre del campo por el cual se va a ordenar, el criterio de ordenación, si ascendente o descendente, la posición de la columna que ocupa, si se van a calcular subtotales por ese campo o no, si queremos que los subtotales aparezcan comprimidos o expandidos, etc. Por ejemplo, data: it_sort TYPE slis_t_sortinfo_alv, •

• •



*&--------------------------------------------------------------------* *& Form ALV_SORT  *&--------------------------------------------------------------------* FORM ALV_SORT . CLEAR wa_sort. wa_sort-spos ='1'. wa_sort-fieldname = 'CARRID'. wa_sort-up = 'X'. wa_sort-tabname = 'TI_VUELOS'. APPEND wa_sort TO it_sort. ENDFORM.

" ALV_SORT 

ABAP-ALV

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF