Añadir código antes de un método estandar ALV OO

Buenas,

tengo un problema con un ALV OO y no se como solucionarlo, a ver si me podéis ayudar…

Quiero mostrar un mensaje en popup advirtiendo de que el listado tiene una cantidad muy alta de registros.
Mi problema no es el mostrar el popup, si no que este mensaje tiene que salir al darle al botón imprimir o al botón de bajar a excel. Estos botones son estándar.

Entiendo que para el botón de descargar a excel, podría hacerme un botón a medida, mostrar el mensaje en el popup y después crear el fichero excel.
Mi mayor problema es con el botón imprimir, que no se como hacer un botón imprimir a medida o meter el código del popup antes de la llamada al botón estándar,

Gracias por la ayuda de antemano.

Buenas,
el botón estándar de imprimir de la propia ALV lo puedes quitar y entonces la opción de imprimir sería desde la barra de menús. Es decir, creas un status gui con una barra por ejemplo STANDARD_FULLSCREEN con lo cual aparecerá la palabra “Lista” en el menú arriba a la izquierda y cuando el usuario pulse “Imprimir” lo puedes controlar en el user_command (PAI) de la dynpro correspondiente.

Toca que crees tu propio botón, y con uno eventos se maneja ese tipo de mensajes, cuando le das click a cualquier botón creado, hace la funcionalidad que quieras, algo como lo habla Saco te puedo servir, pero ten en cuenta que toca crear el botón desde 0 para aplicarle lo que deseas.

Ya lo he solucionado, lo explico lo mejor que puedo por si le vale a alguien en un futuro.

He tenido que crear botones a medida en la barra del ALV (como habíais dicho)

Para el botón de impresión, que era mi mayor problema, he creado una variable del tipo de clase cl_salv_print. Después he llamado a la función ‘GET_PRINT_PARAMETERS’ y por último se introducen las variables obtenidas de la función en los parámetros de la clase. Al final hay que volver a mostrar el ALV.

Pongo el código que he utilizado…

DATA: gw_valid       TYPE c,
          lw_print_ctrl  TYPE alv_s_pctl ,
          lo_print         TYPE REF TO cl_salv_print,
          gw_pparams TYPE t_pripar.

    lo_print = po_table->get_print( ).
    " get print parameters
    CALL FUNCTION 'GET_PRINT_PARAMETERS'
      EXPORTING
        no_dialog                  = 'X'
      IMPORTING
        valid                         = gw_valid
        out_parameters         = gw_pparams
      EXCEPTIONS
        archive_info_not_found = 1
        invalid_print_params   = 2
        invalid_archive_params = 3
        OTHERS                 = 4.

    CONCATENATE 'test' sy-datum sy-uzeit INTO gw_pparams-prtxt SEPARATED BY space.

    lw_print_ctrl = lo_print->get_print_control( ).
    lw_print_ctrl-pri_params = gw_pparams.
    lo_print->set_print_control( lw_print_ctrl ).
    lo_print->set_print_only( if_salv_c_bool_sap=>true ).

Este código imprime con salida inmediata (si el usuario tiene definido ese parámetro por defecto) y además crea una orden de SPOOL,

4 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.