Voy a explicar los pasos a seguir para incorporar un encabezado/header en un reporte ALV. Es decir, tener una imágen de fondo, un logo y texto.
Hay dos imágenes en mi ejemplo:
1_ logo (ENJOYSAP_LOGO)
2_ background (ALV_BACKGROUND)
Cada uno puede elegir las imágenes que quiera, pero siempre y cuando estén subidas en la transacción OAER
* Variables y estructuras para ALV
TYPE-POOLS: SLIS.
DATA:
LV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
LV_REPID TYPE SY-REPID,
T_EVENTS TYPE SLIS_T_EVENT, » Eventos.
GT_HEADER TYPE SLIS_T_LISTHEADER, » Tabla con el Título y el Logo
WA_HEADER TYPE SLIS_LISTHEADER. » Work Area con el Título
DATA: BEGIN OF IT_TABLE OCCURS 0,
VALOR TYPE STRING,
END OF IT_TABLE.
* Agregar el programa para el callback
LV_REPID = SY-REPID.
*&———————————————————————*
*& Acá en el medio llenamos la tabla interna IT_TABLE
*& para mostrar en el AVL
*&———————————————————————*
*Llamo al ALV
PERFORM FILL_EVENT USING T_EVENTS.
PERFORM CARGAR_FIELDCAT TABLES LV_FIELDCAT.
PERFORM INIT_HEADER.
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
TABLES
T_OUTTAB = IT_TABLE.
*&———————————————————————*
*& Form cargar_fieldcat
*&———————————————————————*
FORM CARGAR_FIELDCAT TABLES LV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LV_POSICION TYPE I.
CLEAR LV_FIELDCAT.
REFRESH LV_FIELDCAT.
ADD 1 TO LV_POSICION.
LV_FIELDCAT-COL_POS = LV_POSICION.
LV_FIELDCAT-FIELDNAME = ‘VALOR’.
LV_FIELDCAT-JUST = ‘C’.
LV_FIELDCAT-DDICTXT = ‘L’.
LV_FIELDCAT-TABNAME = ‘IT_TABLE’.
LV_FIELDCAT-SELTEXT_M = ‘Valor’.
LV_FIELDCAT-SELTEXT_L = ‘Valor’.
APPEND LV_FIELDCAT.
CLEAR LV_FIELDCAT.
ENDFORM. «CATALOG
*&——————————————————————–*
*& Form fill_event
*&——————————————————————–*
FORM FILL_EVENT USING P_T_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
* Toma los eventos
CALL FUNCTION ‘REUSE_ALV_EVENTS_GET’
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_T_EVENTS.
* Selecciono el evento ‘TOP_OF_PAGE’ y le seteo el FORM a ejecutar
CLEAR LS_EVENT.
READ TABLE P_T_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE ‘TOP_OF_PAGE’ TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_T_EVENTS.
ENDIF.
ENDFORM. » FILL_EVENT
*———————————————————————-*
* Carga el título y subtítulo del reporte
*———————————————————————-*
FORM INIT_HEADER.
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. «init_header
*&——————————————————————–*
*& 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
Comentarios Recientes: