* ALV-GRID declaracion
TYPE-POOLS: slis.
DATA: g_stru_disvar TYPE disvariant.
DATA: g_alv_fieldcat TYPE slis_t_fieldcat_alv,
g_alv_layout TYPE slis_layout_alv,
gt_list_top_of_page TYPE slis_t_listheader. “ para cebecera
* EN programa:
FORM mostrar_listado USING p_t_listado TYPE tp_itab_listado.
PERFORM inicializar_campos_alv.
* rellenar la cabecera
DATA: ls_line TYPE slis_listheader.
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = p_matnr.
APPEND ls_line TO gt_list_top_of_page.
* mostrar
PERFORM mostrar_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Mostrar_alv
*&---------------------------------------------------------------------*
* Muestra ALV por pantalla
*----------------------------------------------------------------------*
FORM mostrar_alv.
DATA wa_prog LIKE sy-repid.
* DATA l_titulo TYPE LVC_TITLE.
DATA l_coltab_fieldname type slis_fieldname. " colors
wa_prog = sy-repid.
g_alv_layout-colwidth_optimize = 'X'.
g_alv_layout-zebra = 'X'.
* g_alv_layout-coltab_fieldname = 'COLOR1'. " nom tabla con colores
*&---------------------------------------------------------------------*
*& Form Nuevo_Campo
*&---------------------------------------------------------------------*
* Añade un nuevo campo al catalogo del ALV p_fieldcat.
* El campo hace referencia a la tabla interna IT_NOTIFICAIONES
* Si p_unidad esta informado tambien se añade el campo
* unidad.
*----------------------------------------------------------------------*
* -->p_fieldcat Catalogo
* -->p_cabecera Descripcion para la cabecera del campo
* -->p_campo Nombre del campo a añadir
* -->p_unidad Unidad del campo p_campo (OPCIONAL)
*----------------------------------------------------------------------*
FORM nuevo_campo USING p_cabecera TYPE char30
p_campo TYPE char10
p_unidad TYPE char10.
DATA: l_fieldcat TYPE slis_fieldcat_alv.
CASE p_unidad.
WHEN space.
* Campo simple
CLEAR l_fieldcat.
l_fieldcat-fieldname = p_campo.
l_fieldcat-tabname = 't_listado'.
l_fieldcat-seltext_l = p_cabecera.
l_fieldcat-ddictxt = 'L'.
APPEND l_fieldcat TO g_alv_fieldcat.
WHEN 'D'.
* Fecha
CLEAR l_fieldcat.
l_fieldcat-fieldname = p_campo.
l_fieldcat-tabname = 't_listado'.
l_fieldcat-datatype = 'DATS'.
l_fieldcat-seltext_l = p_cabecera.
l_fieldcat-ddictxt = 'L'.
APPEND l_fieldcat TO g_alv_fieldcat.
WHEN '==MATN1'.
* Conversión de material
CLEAR l_fieldcat.
l_fieldcat-fieldname = p_campo.
l_fieldcat-tabname = 't_listado'.
l_fieldcat-edit_mask = '==MATN1'. " p_unidad
l_fieldcat-seltext_l = p_cabecera.
l_fieldcat-ddictxt = 'L'.
APPEND l_fieldcat TO g_alv_fieldcat. .
WHEN 'I'.
* Conversión de material
CLEAR l_fieldcat.
l_fieldcat-fieldname = p_campo.
l_fieldcat-tabname = 't_listado'.
l_fieldcat-inttype = 'I'.
l_fieldcat-decimals_out = '0'.
l_fieldcat-seltext_l = p_cabecera.
l_fieldcat-ddictxt = 'L'.
APPEND l_fieldcat TO g_alv_fieldcat. .
ENDCASE.
*&---------------------------------------------------------------------*
*& Form ALV_TRATAR_USER_COMMAND
*&---------------------------------------------------------------------*
* Controla los comandos no standard del ALV:
* Calcular Fecha Agotamiento --> FAGO
* Cambiar Status Centro --> STAT
*----------------------------------------------------------------------*
FORM alv_tratar_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: l_fieldname(30),
l_aufnr TYPE AUFNR,
l_matnr TYPE MATNR.
CASE r_ucomm.
WHEN '&IC1'. " Doble click
l_fieldname = rs_selfield-sel_tab_field+10. "t_listado-
CASE l_fieldname.
WHEN 'MATNR'.
* Mostrar material
l_matnr = rs_selfield-value.
PERFORM pasar_a_MM03 USING l_matnr.
WHEN OTHERS.
* Mostrar pantalla detalle
IF l_fieldname = 'AUFNR'.
l_aufnr = rs_selfield-value.
ELSE.
CLEAR wa_listado.
READ TABLE t_listado
INDEX rs_selfield-tabindex
INTO wa_listado.
l_aufnr = wa_listado-aufnr.
ENDIF.
PERFORM mostrar_detalle USING t_listado
l_aufnr.
ENDCASE.
ENDCASE.
ENDFORM. "alv_tratar_user_command
*&---------------------------------------------------------------------*
*& Form ALV_CAMBIAR_STATUS_GUI
*&---------------------------------------------------------------------*
* Cambia el Status-GUI standard del ALV por ZPPx que
*----------------------------------------------------------------------*
FORM alv_cambiar_status_gui USING rt_extab TYPE slis_t_extab.
* SET PF-STATUS 'ZPPx'. COPIAR STATUS DEL status STANDARD de Fuc Group SALV
* OKCODE comienza por &!!!
ENDFORM. "Alv_Cambiar_Status_Gui
*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM.
Además de los parámetros directos para el top of page etc en alv_grid_display existen los siguientes eventos
que podemos incluir en el parámetro it_events ( tipo slis_t_event) de REUSE_ALV_GRID_DISPLAY
Test:
Mof Func: Reuse_alv_events_get
Parameters:
I_list_type type(slis_list_type)
Et_event type slis_t_event