Añadir un botón al infotipo y activarlo cuando esté en modo “Visualizar”

Facebooktwitterlinkedinmail

Lo primero que tenemos que hacer es crear el botón en nuestra dynpro del infotipo:

A&AMV_1

Una vez creado veremos el menú de la derecha, en caso de que no nos aparezca, dar doble click en el botón y nos saldrá el menú.

Hay varias cosas importantes:

  • Nombre => Indica el nombre del botón dentro de la dynpro
  • Grupos => Indica el grupo de elementos del botón, cada columna si es necesario se puede usar para ciertas funciones, en nuestro caso usaremos el grupo 3 para activar el botón en caso de visualización.
  • Cód.Func. => Indica que código se ejecuta al hacer clic en el botón.

Una vez configurado, pasamos a crear la función de nuestro botón. En este botón voy a crear un ALV que muestre cierta información.

Para detectar que el botón ha sido cliqueado, tenemos que poner el siguiente código en el MODULE CHECK_FCODE.

MODULE check_fcode INPUT.

DATA: ti_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
«zthr_0005 like ZTHR_0005 occurs 0 with header line,
ti_tabla TYPE TABLE OF zthr_0005,
fecha TYPE date,
fecha_p TYPE sy-datum,
date1(10),
date_a1(4),
date_m1(2),
date_d1(2).

«Se obtiene la fecha para el ALV
date1 = P9003-BEGDA.«sy-datum.
date_a1 = date1(4).
date_m1 = ’12’.
date_d1 = ’31’.
CONCATENATE date_a1 date_m1 date_d1 INTO date.
«En caso de que se pulse el botón llamamos a la función

CASE fcode.

WHEN ‘PBOTON’.

IF sw = 0.
      PERFORM crearalv.
sw = ‘1’.

ENDIF.

IF p9003-endda EQ ‘99991231’.

SELECT *
FROM zthr_0005
INTO TABLE ti_tabla
WHERE zendda = date.

ELSE.

SELECT *
FROM zthr_0005
INTO TABLE ti_tabla
WHERE zendda = p9003-endda.

ENDIF.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING

it_fieldcat              = ti_fieldcat[]
TABLES
t_outtab                 = ti_tabla

EXCEPTIONS

program_error            = 1
OTHERS                   = 2.

IF sy-subrc NE 0.

MESSAGE i398(00) WITH ‘fallo la funcion’.

ENDIF.
ENDCASE.

ENDMODULE.                    «CHECK_FCODE INPUT

 Vemos que en caso de que se pulse el botón cuyo código de función es PBOTON (por eso asignamos ese valor en la parte del código de función), llamará a una subrutina “crearalv”. Esta contendrá el siguiente código:

FORM crearalv.
«Se monta el ALV
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZBEGDA’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Fecha de Inicio’.
APPEND ti_fieldcat.
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZENDDA’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Fecha Final’.
APPEND ti_fieldcat.
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZRANGO’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Rango’.
APPEND ti_fieldcat.
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZFRACBA’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Fracción Básica’.
APPEND ti_fieldcat.
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZEXCHAS’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Exceso Hasta’.
APPEND ti_fieldcat.
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZIMFRBA’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Impuesto Fracción Básica’.
APPEND ti_fieldcat.
CLEAR ti_fieldcat.
ti_fieldcat-fieldname = ‘ZIMFREX’.
ti_fieldcat-tabname = ‘TI_TABLA’.
ti_fieldcat-seltext_l = ‘Porcentaje’.
APPEND ti_fieldcat.
«Finaliza el montaje del ALV
ENDFORM.

Hay que tener en cuenta que se tendrá que haber creado la tabla de los valores, que en nuestro caso se llama ZTHR_0005 y tiene esta estructura.

A&AMV_2

Y contiene los valores siguientes hasta ahora

A&AMV_3

Básicamente es los rangos del impuesto a la renta.

Ahora bien, si no hacemos nada más el botón funcionará correctamente, pero en Modo VISUALIZAR no podremos acceder a la información del botón, esto es porque en modo visualizar este desactiva la información de todos los grupos que aparece en el Dynpro. Por tanto para activar este botón es necesario poner el siguiente código en MODULE P9003.

LOOP AT SCREEN.
IF SCREEN-GROUP3 = ‘009’.
SCREEN-INPUT = ‘1’.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

Por tanto como vimos antes, la columna tercera del grupo del botón se refiere a “SCREEN-GROUP3”, por tanto si es igual al 009 (que es nuestro botón) activamos el botón con la sentencia “SCREEN-INPUT”. Una vez modificado, actualizamos la screen con la sentencia “MODIFY SCREEN”.

Recuerda:

Si quieres esta página siga en pié pudiendote ayudar en el día a día, dona, cualquier donativo hará que pueda ayudarte más.

 








Deja una respuesta

Tu dirección de correo electrónico no será publicada.

uno × uno =