Muy buenos días amigo, le cuento mi problema es al tratar de nombrar los botones que conforman mi screen as windows, normalmente se nombran con la sentencia INITIALIZATION.
el problema es al llamar el screen.
La sentencia INITIALIZATION. me resulta inalcanzable para este caso, de que otro modo puedo nombrar los botones, de antemano muchas gracias.
yo no entiendo mucho…que quieres, darle valor a los textos ??
Si yo no me equivoco el evento initialization, solo se ejecuta una vez y es al principio del programa…quizas si la variable que asignaste en un primer momento cambia de valor y quieres que vuelva a tomar los valores que le asignaste en el initializacion…no te va a funcionar !!
si los nombres de los botones estan en los text, los puedes acceder desde cualquier parte del codigo
"Declaración de Variables
TABLES SSCRFIELDS. "Tabla
DATA: LV_FLAG TYPE CHAR1. "Variables
"Declaración de Pantalla de Selección
SELECTION-SCREEN:
BEGIN OF SCREEN 2000 AS WINDOW TITLE TIT,
BEGIN OF LINE,
PUSHBUTTON 3(17) BUT1 USER-COMMAND CLI1,
COMMENT 25(15) COM1,
END OF LINE,
BEGIN OF LINE,
PUSHBUTTON 3(17) BUT2 USER-COMMAND CLI2,
COMMENT 25(15) COM2,
END OF LINE,
BEGIN OF LINE,
PUSHBUTTON 3(17) BUT3 USER-COMMAND CLI3,
COMMENT 25(15) COM3,
END OF LINE,
BEGIN OF LINE,
PUSHBUTTON 3(17) BUT4 USER-COMMAND CLI4,
COMMENT 25(15) COM4,
END OF LINE,
END OF SCREEN 2000.
"Procesos al Seleccionar
AT SELECTION-SCREEN.
CASE SSCRFIELDS.
WHEN 'CLI1'.
LV_FLAG = '1'.
WHEN 'CLI2'.
LV_FLAG = '2'.
WHEN 'CLI3'.
LV_FLAG = '3'.
WHEN 'CLI4'.
LV_FLAG = '4'.
ENDCASE.
START-OF-SELECTION.
"Declaración de Textos de Pantalla
TIT = 'Pantalla emergente con botones'.
BUT1 = 'Botón 1'.
BUT2 = 'Botón 2'.
BUT3 = 'Botón 3'.
BUT4 = 'Botón 4'.
COM1 = 'Comentario 1'.
COM2 = 'Comentario 2'.
COM3 = 'Comentario 3'.
COM4 = 'Comentario 4'.
"Llamado a Pantalla de Selección
CALL SELECTION-SCREEN 2000 STARTING AT 4 2.
"Validamos acción en pantallas de selección
CASE LV_FLAG.
WHEN '1'.
WRITE / 'Botón 1 Presionado'.
WHEN '2'.
WRITE / 'Botón 2 Presionado'.
WHEN '3'.
WRITE / 'Botón 3 Presionado'.
WHEN '4'.
WRITE / 'Botón 4 Presionado'.
WHEN OTHERS.
WRITE / 'Ningún botón ha sido presionado'.
ENDCASE.
Amigo te molesto de nuevo, como detecto que botón se presiona al llamar el screen 200, la pregunta es porque solo es posible detectarlo a partir del AT SELECTION y estoy llamando el screen dentro de una subrutina. muchas gracias Saludos
*…Se invoca la dynpro que contiene los botones.
CALL SELECTION-SCREEN 200 STARTING AT 50 12
ENDING AT 120 18.
AT SELECTION-SCREEN.
CASE sscrfields.
el screen me lo muestra sin problema, el caso es que no me detecta el evento sobre los botones, dado que las sentencia at selection.screen no puedo estar dentro subrutinas, case, module
@Cristianffe19, abriste un nuevo tema para esto y en este tema creo que ya se te habia dado una respusta, marca por favor una solucion para el tema aqui debatido y el nuevo, espera las respuesta !!!
En cuanto a este ultimo, eso debe ir en los eventos pbo o pai de tu screen 200 !!!
Buenas tardes amigo, he tenido problema al intentar detectar el botón que se pulsa al llamar el screen as windows dado que el llamado se realiza dentro de un perform y es imposible usar la setencia AT SELECTION-SCREEN que me permite acceder a sentencia sscrfields, existe alguna solución . saludos
Vamos a ver que dicen los demas abap, pero tengo entendido que para capturar ese tipo de eventos…son con eventos, son en el pai o en el pbo y esos tiene su momentos de ejecucion, no sirven los puedes tomar…quizas si te interesa es el valor, pues tendras que guardarlo en una variable y tenerlo por ahi