Lo primero que tenemos que hacer es crear el botón en nuestra dynpro del infotipo:
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, «Se obtiene la fecha para el ALV CASE fcode. WHEN ‘PBOTON’. IF sw = 0. ENDIF. IF p9003-endda EQ ‘99991231’. SELECT * ELSE. SELECT * ENDIF. CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’ it_fieldcat = ti_fieldcat[] EXCEPTIONS program_error = 1 IF sy-subrc NE 0. MESSAGE i398(00) WITH ‘fallo la funcion’. ENDIF. 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.
Y contiene los valores siguientes hasta ahora
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.