SELECT OPTIONS DINÁMICOS

19 04 2009

Con el siguiente código podremos crear pantallas de entrada de datos dinámicas. Donde según el radio button que se elija, aparecerán distintos filtros de selección.

image 

image

 

TABLES: KNA1, MARA.

************************************************************************
*** SELECTION-SCREEN / PARAMETERS / SELECT-OPTIONS                   ***
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-A01.
PARAMETERS:
            R_CLIE  RADIOBUTTON GROUP GRUP USER-COMMAND R DEFAULT ‘X’,
            R_MATE  RADIOBUTTON GROUP GRUP.
SELECTION-SCREEN END OF BLOCK B1.

*Datos Clientes
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-B02.
SELECT-OPTIONS: SO_CLIE  FOR KNA1-KUNNR MODIF ID CLI,
                SO_NAME  FOR KNA1-NAME1 MODIF ID CLI,
                SO_LAND  FOR KNA1-LAND1 MODIF ID CLI.
SELECTION-SCREEN END OF BLOCK B2.

*Datos Materiales
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-B03.
SELECT-OPTIONS: SO_MATE FOR MARA-MATNR NO INTERVALS NO-EXTENSION MODIF ID MAT.
SELECTION-SCREEN END OF BLOCK B3.

*———————————————————————–*
*AT SELECTION-SCREEN.
*———————————————————————–*

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.

    IF SCREEN-GROUP1 = ‘MAT’.
      CASE R_MATE.
        WHEN ‘X’.
          SCREEN-ACTIVE = 1.
        WHEN OTHERS.
          SCREEN-ACTIVE = 0.
      ENDCASE.
    ELSEIF SCREEN-GROUP1 = ‘CLI’.
      CASE R_MATE.
        WHEN ‘X’.
          SCREEN-ACTIVE = 0.
        WHEN OTHERS.
          SCREEN-ACTIVE = 1.
      ENDCASE.
    ENDIF.

    MODIFY SCREEN.

  ENDLOOP.


Technorati tags:


Acciones

Information

12 responses

21 12 2009
Josep

Hola he recogido este trozo de código y lo he publicado en mi blog haciendo referencia al tuyo.
Gracias.
http://consultorcabron.blogspot.com/2009/12/select-options-dinamicos.html

6 05 2010
jessica

Hola, gracias por el código. Una COnsulta..
Que pasa cuando uno de los Select-options es obligatorio?
No deja cambiar la pantalla de entrada de datos.
Que se puede hacer?

10 05 2010
Daniel Panaro

Que tal Jessica,
En HR vi que se pueden crear o modifcar el layout de de la pantalla de selección de la Base de datos Lóigica. Estimo que para otros módulos también se podrá hacer.

Esto se hace entrando en la SE38, eligiendo el programa y parándose sobre atributos y luego clickeando en el botón “Clase report”.

Espero que te sea útil .
Saludos,
Daniel.

26 05 2015
Anónimo

Bueno yo lo haría asi.

AT SELECTION-SCREEN.

IF sy-ucomm EQ ‘ONLI’. “si hace click en ejecutar
IF p_rdbt02 EQ ‘X’. “si esta marcado el radio button al queremos validar a la hora de ejecutar.
IF S_ORGVTA is INITIAL. “si el campo esta vacio
MESSAGE ‘Ingresar Organización de ventas’ TYPE ‘E’.
ENDIF.
ENDIF.
ENDIF.

ATTE.

Luis Farro C.

29 11 2011
Anónimo

¿como podrias hacer para que cuando seleccionas material, solo te salga la opcion de material y no tambien las opciones de cliente?

29 11 2011
Daniel Panaro

Una alternativa podría ser utilizando matchcodes con una tabla interna.
Ver el siguiente post:
https://danielpanaro.wordpress.com/2007/11/28/crear-matchcode-ayudas-con-una-tabla-interna/

Saludos,
Daniel.

2 12 2011
Anónimo

Muchas gracias daniel

17 04 2012
Anónimo

Daniel, una vez más me has ayudado muchísimo. Gracias por compartir estos conocimientos con la comunidad.
Saludos, éxitos y por sobre todo…BUEN VIVIR!

5 07 2013
Anónimo

Hola, esta muy bueno tu blog, quisiera saber en q parte del codigo le pones texto a los rangos, es decir los nombres de Clientes, Nombre, Pais donde los editas

Gracias, Slds.

5 07 2013
Daniel Panaro

Hola,
Eso lo haces desde la SE38 dentro de tu programa. A traves del menú “Go to –> Text elements”
Se abre una ventana con el listado de select-options y parameters para que le puedas poner la descripción que quieras.

Saludos,
Daniel.

26 05 2015
Anónimo

Bueno yo lo haría asi.

AT SELECTION-SCREEN.

IF sy-ucomm EQ ‘ONLI’. “si hace click en ejecutar
IF p_rdbt02 EQ ‘X’. “si esta marcado el radio button al queremos validar a la hora de ejecutar.
IF S_ORGVTA is INITIAL. “si el campo esta vacio
MESSAGE ‘Ingresar Organización de ventas’ TYPE ‘E’.
ENDIF.
ENDIF.
ENDIF.

ATTE.

Luis Farro C.

1 09 2016
Anónimo

Muy bueno. Muchas gracias!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: