jueves, 21 de noviembre de 2013

Añadir un botón en un ALV Report

En la transacción SE80, visualizamos el programa SAPLKKBL.

Visualizamos el programa SAPLKKBL.

Navegamos en el árbol hasta la pestaña GUI Status>STANDARD. Pinchamos con el botón derecho y lo copiamos a nuestro programa.

Copiamos STANDARD en la pestaña Status GUI.

Añadimos el nombre de nuestro programa.

Volvemos a nuestro programa principal, y comprobamos que tenemos el STANDARD en la pestaña GUI Status.

Comprobamos que tenemos GUI Status>Standard en nuestro programa.
Pinchamos dos veces en STANDARD y veremos los botones disponibles. En esta nueva ventana añadimos un nuevo botón, asignándole un nombre, un icono y un atajo del teclado (No asignar el atajo F4, ya que el botón no funcionaría).

Añadimos un botón con el nombre &BT1.

Asignamos un icono.
Asignamos un atajo del teclado.


Ya tenemos el GUI Status listo para incorporar. Se va a mostrar un código en el que se muestran los cuatro primeros campos de la tabla SFLIGHT con un nuevo botón en el menú. Cuando se pulsa el botón, saldrá un mensaje de notificación.

El código es el siguiente:


REPORT  z_test.

* Cargar la tabla SFLIGHT de la base de datos
TABLES: sflight.

* Cargamos los datos tipo slis
TYPES: slis.

* Definición de variables
DATA: g_it_sflight TYPE TABLE OF sflight,
      g_st_sflight TYPE sflight.

DATA: g_it_fieldcat TYPE slis_t_fieldcat_alv,
      g_st_fieldcat TYPE slis_fieldcat_alv.

DATA: g_repid TYPE sy-repid.

* SQL para copiar la tabla sflight a la tabla interna
SELECT * FROM sflight INTO TABLE g_it_sflight.

* Variable con el nombre del programa
g_repid = sy-repid.

* Datos del fieldcat para el ALV
g_st_fieldcat-fieldname = 'CARRID'.
g_st_fieldcat-seltext_s = 'Comp.'.
APPEND g_st_fieldcat TO g_it_fieldcat.

g_st_fieldcat-fieldname = 'CONNID'.
g_st_fieldcat-seltext_s = 'Vuelo'.
APPEND g_st_fieldcat TO g_it_fieldcat.

g_st_fieldcat-fieldname = 'FLDATE'.
g_st_fieldcat-seltext_s = 'Fecha'.
APPEND g_st_fieldcat TO g_it_fieldcat.

g_st_fieldcat-fieldname = 'PRICE'.
g_st_fieldcat-seltext_s = 'Tarifa'.
APPEND g_st_fieldcat TO g_it_fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program       = g_repid
    i_callback_pf_status_set = 'MI_STANDARD'
    i_callback_user_command  = 'MI_USER_COMMAND'
    it_fieldcat              = g_it_fieldcat[]
  TABLES
    t_outtab                 = g_it_sflight[]
  EXCEPTIONS
    program_error            = 1
    OTHERS                   = 2.

*&---------------------------------------------------------------------*
*&      Form  mi_user_command
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM mi_user_command USING r_ucomm LIKE sy-ucomm
                                   rs_selfield TYPE slis_selfield.
  CASE r_ucomm. 
    WHEN '&BT1'. "Se ha hecho click en el botón
      MESSAGE 'Has pulsado el botón creado' TYPE 'I'.
  ENDCASE.
ENDFORM.                    "mi_user_command

*&---------------------------------------------------------------------*
*&      Form  mi_standard
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM mi_standard USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD'. "Nombre del Status GUI
ENDFORM.                    "mi_standard

Nuestro botón y el mensaje monstrado.

5 comentarios :

  1. Muchas gracias por el aporte. De gran ayuda para lo que queremos aprender abap.

    ResponderEliminar
  2. Hola ya realice el programa y me manda error de type "SLIS", has no structure and therefore no component called "T_FIELDCAT_ALV", muchas gracias, no he podido solucionar soy primeriza

    ResponderEliminar
    Respuestas
    1. Hola bro reviza tu t_fieldcat_ en tu alv alli esta el error

      Eliminar