Problema al nombrar los botones screen as windows

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.

Hola @Cristianffe19 te invito a leer las normas para las capturas de pantalla

El foro tiene un boton para pegar códigos.

3 Me gusta

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

Te dejo un 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.
2 Me gusta

muchas gracias amigo, me sirvió bastante, saludos.

1 me gusta

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

podrias darme un partallazo de como lo estas llamando

*…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 !!!

Lo que dice @Cristianffe19 es muy cierto aunque ya dejaría de ser un reporte y seria mucho mas fácil programar un module pool

@Adolfo_Magana no entiendo !!

Igual…tratemos de no responder mas por aca porque ya @Cristianffe19 abrio un tema con esta duda

@SidV cuando puedas por favor pasa esto a este tema

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

es lo que yo entiendo !!!

1 me gusta

necesito ver un poco de tu código no entiendo porque lo llamas desde un perform y porque no podrías usar el evento, lo quiero replicar.

Se mezclaron ambos temas, dejando el más antiguo visible.

Por favor @Cristianffe19, trata de mantener una organización por el bien de la comunidad. :slight_smile:

@Cristianffe19, este tema está solucionado?