martes, 19 de noviembre de 2013

Deshabilitar el INPUT a un campo de SELECTION-OPTIONS

En algunos casos, se exige que unos determinados usuarios no puedan utilizar unos campos específicos en la pantalla de selección. En este ejemplo se mostrará como deshabilitar el input de un campo LOW y HIGH de un SELECTION-OPTIONS.

Para empezar, tendremos los cuatro primeros campos del SELECTION-OPTIONS de la tabla SFLIGHT (carrid, connid, fldate y price).

Los cuatro SELECTION-OPTIONS para la tabla SFLIGHT.

A continuación, se recorre un LOOP AT SCREEN y almacenamos los datos en una tabla auxiliar para ver los datos iniciales:

  LOOP AT SCREEN.
    APPEND screen TO g_it_screen.
  ENDLOOP.

Valores de la tabla interna screen sin modificaciones.

Una vez conocido los datos de la tabla interna, cambiaremos las propiedades de los campos INPUT en el primer SELECTION-OPTIONS con un IF. 

El código es el siguiente:

REPORT  z_sflight.

* Cargar la tabla SFLIGHT de la base de datos
TABLES: sflight.

* Definición de variables
DATA: g_it_sflight TYPE TABLE OF sflight,
      g_st_sflight TYPE sflight.

DATA: g_it_screen TYPE TABLE OF screen.

* Pantalla de selección
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME.

SELECT-OPTIONS: p01 FOR sflight-carrid,
                p02 FOR sflight-connid,
                p03 FOR sflight-fldate.

SELECTION-SCREEN SKIP 1.

SELECT-OPTIONS: p04 FOR sflight-price.

SELECTION-SCREEN:  END OF BLOCK b01.

INITIALIZATION.
* Deshabilitar un campo
  LOOP AT SCREEN.
    IF screen-name = 'P01-LOW'.
      screen-input = 0.
    ELSEIF screen-name = 'P01-HIGH'.
      screen-input = 0.
    ENDIF.

    MODIFY SCREEN. 
    APPEND screen TO g_it_screen.
  ENDLOOP.

START-OF-SELECTION.
  BREAK-POINT.

Se observa que ahora los campos input del primer parámetro se han desactivado.

Campos input del SELECTION-OPTIONS desactivados.

0 comentarios :

Publicar un comentario