Академический Документы
Профессиональный Документы
Культура Документы
TYPE-POOLS: slis.
END OF st_scarr.
START-OF-SELECTION.
PERFORM obtener_datos.
END-OF-SELECTION.
PERFORM mostrar_alv.
FORM obtener_datos.
FROM scarr
ENDFORM. "obtener_datos
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM armar_layout.
"Se arma el layout del ALV, osea como se veria nuestra salida.
ENDFORM. "armar_layout
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM armar_fieldcat.
REFRESH it_fieldcat.
wa_fieldcat-fieldname = 'CARRID'. "se pone el nombre que se declaro en la estructura
wa_fieldcat-seltext_m = 'ID Aerolinea'. "el texto que va a mostrar la cabecera del ALV
wa_fieldcat-tabname = 'IT_SCARR'. "El nombre de la tabla interna donde estan los datos a
mostrar
CLEAR wa_fieldcat.
*---> y asi se hace por cada columna que se quiera agregar, despues hay muchas opciones que se
pueden ver
*---> mas adelante, toda la info a mostrar en este tipo de ALV tiene que estar en la misma tabla
interna
wa_fieldcat-fieldname = 'CARRNAME'.
wa_fieldcat-tabname = 'IT_SCARR'.
wa_fieldcat-col_pos = 2.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CURRCODE'.
wa_fieldcat-seltext_m = 'Moneda'.
wa_fieldcat-tabname = 'IT_SCARR'.
wa_fieldcat-col_pos = 3.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'URL'.
wa_fieldcat-seltext_m = 'Url Aerolinea'.
wa_fieldcat-tabname = 'IT_SCARR'.
wa_fieldcat-col_pos = 4.
CLEAR wa_fieldcat.
ENDFORM. "armar_fieldcat
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM mostrar_alv.
PERFORM armar_layout.
PERFORM armar_fieldcat.
EXPORTING
* I_INTERFACE_CHECK =''
* I_BYPASSING_BUFFER =''
* I_BUFFER_ACTIVE =''
* I_CALLBACK_PROGRAM =''
* I_CALLBACK_PF_STATUS_SET =''
* I_CALLBACK_USER_COMMAND =''
* I_CALLBACK_TOP_OF_PAGE =''
* I_CALLBACK_HTML_TOP_OF_PAGE =''
* I_CALLBACK_HTML_END_OF_LIST =''
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID =''
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE =''
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN =0
* I_SCREEN_START_LINE =0
* I_SCREEN_END_COLUMN =0
* I_SCREEN_END_LINE =0
* I_HTML_HEIGHT_TOP =0
* I_HTML_HEIGHT_END =0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
* EXCEPTIONS
* PROGRAM_ERROR =1
* OTHERS =2
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "mostrar_alv
REPORT ZALV.
*DATA
TYPES: BEGIN OF ed,
check(1),
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
desc TYPE string,
END OF ed.
*PARAMETROS DE SELECCION
DATA: cli TYPE kna1-kunnr.
SELECT-OPTIONS: clientes FOR cli.
*Estructura de parmetros
DATA: LF_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,"Manejar grupos de campos
LF_LAYOUT TYPE SLIS_LAYOUT_ALV, "Manejar diseo de layout
IT_TOPHEADER TYPE SLIS_T_LISTHEADER, "Manejar cabecera del rep
WA_TOP LIKE LINE OF IT_TOPHEADER. "Lnea para cabecera
*Seleccion de datos
SELECT kunnr name1
INTO CORRESPONDING FIELDS OF TABLE itab
FROM kna1
WHERE kunnr IN clientes.
*Llamado al ALV
*ALV Report
PERFORM alv_report USING itab[].
*Cliente
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'KUNNR'.
alv_git_fieldcat-key = 'X'.
alv_git_fieldcat-seltext_m = 'Cliente'.
alv_git_fieldcat-seltext_l = 'Cliente'.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '10'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.
*Nombre
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'NAME1'.
alv_git_fieldcat-seltext_m = 'Nombre'.
alv_git_fieldcat-seltext_l = 'Nombre'.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '20'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.
*Descripcin
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'DESC'.
alv_git_fieldcat-seltext_m = 'Descripcin'.
alv_git_fieldcat-seltext_l = 'Descripcin'.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '20'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.
CLEAR alv_git_fieldcat.
alv_git_fieldcat-SP_GROUP = 'A'.
MODIFY alv_git_fieldcat FROM alv_git_fieldcat
TRANSPORTING SP_GROUP WHERE FIELDNAME = 'VBTYP'.
*EVENTOS
REFRESH it_topheader.
* Clientes
MOVE: 'S' TO wa_top-typ,
clientes-low TO wa_top-info,
'Clientes:' TO wa_top-key.
APPEND wa_top TO it_topheader.
ENDFORM. "top_of_page
* EL FORM PF_STATUS nos permite asignar el Status GUI que queremos para
el reporte.
rs_selfield-refresh = 'X'.
rs_selfield-col_stable = 'X'.
rs_selfield-row_stable = 'X'.
CASE R_UCOMM.
WHEN 'BEAN'.
WHEN '&NFO'.
ENDCASE.
ENDFORM.
Reportes ALV
Existen funcionalidades avanzadas para el desarrollo de reportes, mucho ms
sencillos de construir que los reportes WRITE, y mucho ms elegantes y prcticos
que estos, ya que permiten cierto dinamismo, como agrupar, totalizar columnas
numricas, aadir y quitar columnas, guardar los cambios realizados, exportar a
Excel y otros formatos, etc.
Incluir en el programa la librera SLIS, que tiene definidas todas las estructuras de
los parmetros de entrada y de salida de esta funcin.
Cada tipo de ALV cuenta con diferentes parmetros de entrada opcionales, pero
estos 3 son obligatorios en todos los casos.
1. ALV List: permite simular el trazado de un reporte WRITE, pero con las
funcionalidades y bondades de un ALV.
2. ALV Grid: Permite generar una tabla grfica, totalmente editable desde su
presentacin (aadir y quitar columnas, agrupar y ordenar, totalizar valores, entre
otras).
3. ALV Jerrquico: Es un tipo de reporte que consta de 2 cabeceras, y
permite enlazar la informacin de ambas partes de una manera grficamente
legible.
Cada uno de ellos tiene su propio mdulo de funciones con sus respectivas
estructuras, veremos como se construye cada uno de estos de una manera
sencilla.
ALV LIST:
EXPORTING
i_callback_program = g_repid
i_structure_name = gc_structure
it_fieldcat = gt_fieldcat_list
i_save = gc_save
is_layout = gs_layout
is_variant = gs_variant
is_print = gs_print
TABLES
t_outtab = gt_output_value
EXCEPTIONS
program_error = 1
OTHERS = 2.
La siguiente imagen es una muestra de los resultados que obtendremos para este
tipo de ALV.
ALV GRID:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_BACKGROUND_ID = 'ALV_BACKGROUND'
i_callback_top_of_page = l_form_cabecera
i_save = 'A'
it_fieldcat = gt_fieldcat
is_variant = variante
TABLES
t_outtab = p_output.
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = slis_ev_pf_status_set
i_callback_user_command = slis_ev_user_command
is_layout = gs_layout
it_fieldcat = gt_fieldcat
it_sort = gt_sortinfo
i_save = 'A'
is_variant = gs_variant
it_events = gt_event
i_tabname_header = 'IT_HEADER'
i_tabname_item = 'ITAB'
is_keyinfo = gs_keyinfo
is_print = gs_print
TABLES
t_outtab_header = IT_HEADER
t_outtab_item = ITAB
EXCEPTIONS
program_error = 1
OTHERS = 2.
IT_EVENTS: Se le indicar a la funcin cuales sern los eventos del sistema que
controlar.
IS_KEYINFO: Esta tabla contendr las conexiones de enlaces entre las dos
tablas, como se puede deducir, ambas tablas debern contener el mismo campo
con el mismo nombre, para poder servir de enlace entre ambas.
IS_PRINT: Esta tabla interna controla parametrizaciones de impresin, como no
mostrar la cabecera, asignar impresora, saltarse la ventana de dilogo que solicita
la impresora, entre otras.