Foro de programación ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: lynaiz 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.
?????
-
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.
-
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..