user command en ALB BLOCK

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • pikaste
    Junior Member
    • dic
    • 15

    #1

    user command en ALB BLOCK

    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:

    Código:
    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,

    Código:
    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
  • ppchico
    Senior Member
    • oct
    • 144

    #2
    No he usado nunca esos módulos de funciones para mostrar ALV... en principio, entiendo que el STATUS, lo estás mostrando, y asignando los posibles eventos del mismo al form de USER_COMMAND... aun así, es una opción probar a asignar el evento del USER COMMAND al ALV... de manera que:
    Código:
    tg_events[]-NAME = slis_ev_user_command.[FONT=monospace]
    [/FONT]tg_events[]-NAME = 'USER_COMMAND'.[FONT=monospace]
    [/FONT]append tg_events.[FONT=monospace]
    [/FONT]


    Eso en el FORM fotr_xx_init_events que tienes declarado para inicializar los eventos.

    Espero que te sirva... sino ya nos contarás como lo solucionaste.

    Un Saludo,
    Javier.

    Comentario

    Trabajando...