Autor Tema: AT-LINE-SELECTION  (Leído 5084 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado lynaiz

  • Novato
  • *
  • Mensajes: 2
    • Ver Perfil
AT-LINE-SELECTION
« en: 09 de Diciembre de 2013, 02:08:37 pm »
El caso es que quiero lanzar una selecion screen justo cuando se pulsa UNA linea, es decir, dentro del evento AT-LINE-SELECTION.
Al crear los parameters le pongo en no-display para que no se muestre al principio.
¿Alguien sabe como podria hacer visible el parameter al pulsar la linea?

SELECTION-SCREEN BEGIN OF BLOCK bloque1.
PARAMETERS titulo TYPE C NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK bloque1.

AT-LINE-SELECTION.
?????

Desconectado molaci

  • Usuario Sr.
  • ****
  • Mensajes: 113
    • Ver Perfil
Re:AT-LINE-SELECTION
« Respuesta #1 en: 09 de Diciembre de 2013, 04:41:03 pm »
Hola,

En el ejemplo que te adjunto se está utilizando la sentencia AT SELECTION-SCREEN OUTPUT para ir ocultando parámetros.

También puedes ocultar los parámetros desde el INITIALIZATION en lugar del NO-DISPLAY y luego los muestras como en el ejemplo.


*&---------------------------------------------------------------------*
*& Report  ZPRUEBA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zprueba.

TABLES: trdir.


SELECTION-SCREEN BEGIN OF BLOCK uno WITH FRAME TITLE text-001.
PARAMETERS: r_opt01 RADIOBUTTON GROUP rad1,
            r_opt02 RADIOBUTTON GROUP rad1,
            r_opt03 RADIOBUTTON GROUP rad1,
            r_opt04 RADIOBUTTON GROUP rad1.

SELECTION-SCREEN SKIP.
* Con el USER-COMMAND no hace falta apretar el [INTRO] para realizar
* el cambio.

PARAMETERS: p_opt01 RADIOBUTTON GROUP rad2 USER-COMMAND aaa,
            p_opt02 RADIOBUTTON GROUP rad2,
            p_opt03 RADIOBUTTON GROUP rad2,
            p_opt04 RADIOBUTTON GROUP rad2.
SELECTION-SCREEN END OF BLOCK uno.

SELECTION-SCREEN BEGIN OF BLOCK dos WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_opt1 FOR trdir-cnam,
                s_opt22 FOR trdir-cnam,
                s_opt333 FOR trdir-cnam,
                s_opt444 FOR trdir-cnam.
SELECTION-SCREEN END OF BLOCK dos.




AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
*---- Opción 1
    IF r_opt01 = 'X'.
      IF screen-name CS 'S_OPT1'.
        screen-invisible = '0'.
        screen-input = '1'.
      ELSEIF screen-name CS 'S_OPT22' OR
             screen-name CS 'S_OPT333' OR
             screen-name CS 'S_OPT444' .
        screen-invisible = '1'.
        screen-input = '0'.
      ENDIF.

*---- Opción 2
    ELSEIF p_opt02 = 'X'.
      IF screen-name CS 'S_OPT22'.
        screen-invisible = '0'.
        screen-input = '1'.
      ELSEIF screen-name CS 'S_OPT1' OR
             screen-name CS 'S_OPT333' OR
             screen-name CS 'S_OPT444' .
        screen-invisible = '1'.
        screen-input = '0'.
      ENDIF.

*---- Opción 3
    ELSEIF p_opt03 = 'X'.
      IF screen-name CS 'S_OPT333'.
        screen-invisible = '0'.
        screen-input = '1'.
      ELSEIF screen-name CS 'S_OPT1' OR
             screen-name CS 'S_OPT22' OR
             screen-name CS 'S_OPT444' .
        screen-invisible = '1'.
        screen-input = '0'.
      ENDIF.

*---- Opción 4
    ELSEIF p_opt04 = 'X'.
      IF screen-name CS 'S_OPT444'.
        screen-invisible = '0'.
        screen-input = '1'.
      ELSEIF screen-name CS 'S_OPT1' OR
             screen-name CS 'S_OPT22' OR
             screen-name CS 'S_OPT333' .
        screen-invisible = '1'.
        screen-input = '0'.
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

Desconectado lynaiz

  • Novato
  • *
  • Mensajes: 2
    • Ver Perfil
Re:AT-LINE-SELECTION
« Respuesta #2 en: 09 de Diciembre de 2013, 05:34:54 pm »
Gracias por responder tan rapido

Eso seria lo logico y lo mas practico, pero es un ejercicio de clase y lo que nos piden es :
 1- Mostrar en un listado una tabla
 2- Al pulsar una linea de la tabla, mostrar una selection screen para realizar cambios en la tabla y que automaticamente se muestre la tabla con los cambios realizados...

Esto con screens seria sencillo pero no podemos usarlas..