Anda di halaman 1dari 5

* EN INCLUDE_TOP:

* 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.

* ALV ATENCIÓN NOMBRES DE CAMPOS EN EL


CATÁLOGO EN MAYUSC
* EN INCLUDE ALV
*&---------------------------------------------------------------------*
*& Form Inicializar_campos_alv
*&---------------------------------------------------------------------*
* Define la cabecera de los campos que se van a mostrar
* en el ALV ATENCIÓN NOMBRES DE CAMPOS EN EL CATÁLOGO EN MAYUSC
*----------------------------------------------------------------------*
FORM inicializar_campos_alv .
PERFORM nuevo_campo USING text-002 'FECHA' 'D'. " fecha
PERFORM nuevo_campo USING text-003 'MATNR' '==MATN1'. " material
PERFORM nuevo_campo USING text-004 'AUFNR' 'I'. " NPO, número de OF
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

* l_titulo = 'Listado previsiones de compras'.

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

* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = wa_prog
is_layout = g_alv_layout
it_fieldcat = g_alv_fieldcat
i_save = 'A'
is_variant = g_stru_disvar
i_grid_title = TEXT-010
i_callback_user_command = 'ALV_TRATAR_USER_COMMAND'
* i_callback_pf_status_set = 'ALV_CAMBIAR_STATUS_GUI'
* i_callback_top_of_page = 'TOP_OF_PAGE'
TABLES
t_outtab = t_listado
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " Mostrar_alv

*&---------------------------------------------------------------------*
*& 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.

ENDFORM. " Nuevo_Campo

*&---------------------------------------------------------------------*
*& 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.

* Actualiza ALV con los valores modificados.


rs_selfield-refresh = 'X'.

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.

Para añadir una imagen:


the gif must be loaded into transaction OAOR with
* classname 'PICTURES' AND TYPE 'OT' to work with ALV GRID Functions.
* I Loaded NOVALOGO2 into system.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
* I_LOGO = 'NOVALOGO2'

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

slis_ev_item_data_expand type slis_formname value 'ITEM_DATA_EXPAND',


slis_ev_reprep_sel_modify type slis_formname value 'REPREP_SEL_MODIFY',
slis_ev_caller_exit_at_start type slis_formname value 'CALLER_EXIT',
slis_ev_user_command type slis_formname value 'USER_COMMAND',
slis_ev_top_of_page type slis_formname value 'TOP_OF_PAGE',
slis_ev_data_changed type slis_formname value 'DATA_CHANGED',
slis_ev_top_of_coverpage type slis_formname value 'TOP_OF_COVERPAGE',
slis_ev_end_of_coverpage type slis_formname value 'END_OF_COVERPAGE',
slis_ev_foreign_top_of_page type slis_formname
value 'FOREIGN_TOP_OF_PAGE',
slis_ev_foreign_end_of_page type slis_formname
value 'FOREIGN_END_OF_PAGE',
slis_ev_pf_status_set type slis_formname value 'PF_STATUS_SET',
slis_ev_list_modify type slis_formname value 'LIST_MODIFY',
slis_ev_top_of_list type slis_formname value 'TOP_OF_LIST',
slis_ev_end_of_page type slis_formname value 'END_OF_PAGE',
slis_ev_end_of_list type slis_formname value 'END_OF_LIST',
slis_ev_after_line_output type slis_formname value 'AFTER_LINE_OUTPUT',
slis_ev_before_line_output type slis_formname value
'BEFORE_LINE_OUTPUT',
slis_ev_subtotal_text type slis_formname value
'SUBTOTAL_TEXT',
slis_ev_context_menu type slis_formname value 'CONTEXT_MENU'.

Test:
Mof Func: Reuse_alv_events_get
Parameters:
I_list_type type(slis_list_type)
Et_event type slis_t_event

Anda mungkin juga menyukai