pikaste
14/04/10, 11:03:05
Hola, mi problema es el siguiente: tengo un programa que muestra dos listados ALV de la siguiente manera. Tengo un status con un botón para imprimir y que cuando le de al botón ejecute una subrutina programada. El caso es que no consigo que capture el pulsamiento del botón (siempre va al estándar, al programa SAPLKKBL).
A ver si algún entendido puede ayudarme.
Muchas gracias.
Les dejo el código a continuación:
PERFORM fotr_xx_init_events.
PERFORM fotr_layout_alv.
PERFORM fotr_xx_init_fieldcat_cajet.
PERFORM fotr_xx_alv_bloques TABLES tg_alv_cajet
tg_alv_cajetf
USING 'TG_ALV_CAJET'
'TG_ALV_CAJETF'.
Donde,
FORM fotr_xx_init_events.
* VISTA ACTUAL
CLEAR sg_events.
sg_events-name = slis_ev_top_of_list.
sg_events-form = 'FOTR_XX_TOP_OF_LIST'.
APPEND sg_events TO tg_events.
* VISTA FUTURA
CLEAR sg_events.
sg_events-name = slis_ev_top_of_list.
sg_events-form = 'FOTR_XX_TOP_OF_LIST1'.
APPEND sg_events TO tg_events1.
ENDFORM.
FORM fotr_layout_alv .
* Seteo de la Visualización
* VISTA ACTUAL
* sg_layout-zebra = 'X'. " Rayado de lineas
sg_layout-no_min_linesize = 060. " Tamaño líneas en la página.
sg_layout-min_linesize = sy-linsz. " Mínima long de la linea.
sg_layout-max_linesize = sy-linsz. " Máxima long de la linea.
sg_layout-window_titlebar = sy-title. " Titulo Ventana Principal.
* VISTA FUTURA
sg_layout1-no_min_linesize = 060. " Tamaño líneas en la página
sg_layout1-min_linesize = sy-linsz. " Mínima long de la linea.
sg_layout1-max_linesize = sy-linsz. " Máxima long de la linea.
sg_layout1-window_titlebar = sy-title. " Titulo Ventana Principal.
sg_layout1-info_fieldname = 'COLOR'. " Color
ENDFORM. " fotr_layout_alv
FORM fotr_xx_alv_bloques TABLES t_actual
t_futura
USING pe_actual TYPE any
pe_futura TYPE any.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = vg_repid
i_callback_pf_status_set = 'STATUS_LISTADO'
i_callback_user_command = 'USER_COMMAND'.
* IMPRESION VISTA ACTUAL
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
it_fieldcat = tg_fieldcat[]
is_layout = sg_layout
i_tabname = pe_actual
it_events = tg_events[]
TABLES
t_outtab = t_actual.
* IMPRESION VISTA FUTURA
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
it_fieldcat = tg_fieldcat[]
is_layout = sg_layout1
i_tabname = pe_futura
it_events = tg_events1[]
TABLES
t_outtab = t_futura.
sg_print-reserve_lines = 2.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
is_print = sg_print.
ENDFORM. "fotr_xx_alv_bloques
*&---------------------------------------------------------------------*
*& Form FOTR_XX_START_ALV
*&---------------------------------------------------------------------*
FORM status_listado USING pf_tab TYPE slis_t_extab.
SET PF-STATUS 'STATUS_LISTADO'.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
* Evaluamos el botón pulsado
CASE p_ucomm.
WHEN 'PRINT'.
ENDCASE.
ENDFORM. "user_command
A ver si algún entendido puede ayudarme.
Muchas gracias.
Les dejo el código a continuación:
PERFORM fotr_xx_init_events.
PERFORM fotr_layout_alv.
PERFORM fotr_xx_init_fieldcat_cajet.
PERFORM fotr_xx_alv_bloques TABLES tg_alv_cajet
tg_alv_cajetf
USING 'TG_ALV_CAJET'
'TG_ALV_CAJETF'.
Donde,
FORM fotr_xx_init_events.
* VISTA ACTUAL
CLEAR sg_events.
sg_events-name = slis_ev_top_of_list.
sg_events-form = 'FOTR_XX_TOP_OF_LIST'.
APPEND sg_events TO tg_events.
* VISTA FUTURA
CLEAR sg_events.
sg_events-name = slis_ev_top_of_list.
sg_events-form = 'FOTR_XX_TOP_OF_LIST1'.
APPEND sg_events TO tg_events1.
ENDFORM.
FORM fotr_layout_alv .
* Seteo de la Visualización
* VISTA ACTUAL
* sg_layout-zebra = 'X'. " Rayado de lineas
sg_layout-no_min_linesize = 060. " Tamaño líneas en la página.
sg_layout-min_linesize = sy-linsz. " Mínima long de la linea.
sg_layout-max_linesize = sy-linsz. " Máxima long de la linea.
sg_layout-window_titlebar = sy-title. " Titulo Ventana Principal.
* VISTA FUTURA
sg_layout1-no_min_linesize = 060. " Tamaño líneas en la página
sg_layout1-min_linesize = sy-linsz. " Mínima long de la linea.
sg_layout1-max_linesize = sy-linsz. " Máxima long de la linea.
sg_layout1-window_titlebar = sy-title. " Titulo Ventana Principal.
sg_layout1-info_fieldname = 'COLOR'. " Color
ENDFORM. " fotr_layout_alv
FORM fotr_xx_alv_bloques TABLES t_actual
t_futura
USING pe_actual TYPE any
pe_futura TYPE any.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = vg_repid
i_callback_pf_status_set = 'STATUS_LISTADO'
i_callback_user_command = 'USER_COMMAND'.
* IMPRESION VISTA ACTUAL
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
it_fieldcat = tg_fieldcat[]
is_layout = sg_layout
i_tabname = pe_actual
it_events = tg_events[]
TABLES
t_outtab = t_actual.
* IMPRESION VISTA FUTURA
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
it_fieldcat = tg_fieldcat[]
is_layout = sg_layout1
i_tabname = pe_futura
it_events = tg_events1[]
TABLES
t_outtab = t_futura.
sg_print-reserve_lines = 2.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
is_print = sg_print.
ENDFORM. "fotr_xx_alv_bloques
*&---------------------------------------------------------------------*
*& Form FOTR_XX_START_ALV
*&---------------------------------------------------------------------*
FORM status_listado USING pf_tab TYPE slis_t_extab.
SET PF-STATUS 'STATUS_LISTADO'.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
* Evaluamos el botón pulsado
CASE p_ucomm.
WHEN 'PRINT'.
ENDCASE.
ENDFORM. "user_command