PARAMETROS DE SELECCION.
========================
Son para introducir algunas delimitaciones a nuestro programa de modo que nuestro reporte solo se ejecute para ciertos datos que el usuario debera introducir en la pantalla.
PANTALLA DE SELECCION: Es un area dentro de los reportes en donde se especifican los parametros de seleccion por los cuales se va a ejecutar el programa. Se usan para restringir el procesamiento y la salida de los datos.Dentro de una pantalla de seleccion se pueden declarar dos tipos de objetos:
-PARAMETERS : Los cuales el usuario puede ingresar de manera individual.
Ejemplo:
PARAMETERS: fecha LIKE sy-datum OBLIGATORY DEFAULT sy-datum,
nombre(20) TYPE c OBLIGATORY.
ACLARACION: La long. maxima que puede tener el nombre de un PARAMETER es de 8 posiciones.
PARAMETERS: lista AS CHECKBOX. "Emitir Listado
PARAMETER: arg RADIOBUTTON GROUP btn1, "Argentino
col RADIOBUTTON GROUP btn1, "Colombiano
esp RADIOBUTTON GROUP btn1, "Español
otr RADIOBUTTON GROUP btn1, "Otra Nacionalidad
-SELECT-OPTIONS : En donde el usuario podra ingresar rango de valores, aparte de valores individuales.
Ejemplo:
DATA: v_clavep TYPE land1_gp.
SELECT-OPTION s_clavep FOR v_clavep. "Clave de Pais
INFO ADICIONAL.
==============
-Tabla KNA1 : Es una tabla base de datos estandar que corresponde al maestro de clientes. Guarda informacion tal como el numero de cliente, pais, nombe, cod. postal, etc.
CUADRO.
======
Se puede encuadrar los parametros de la pantalla de seleccion haciendo:
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN END OF BLOCK b1.
donde:
b1: nombre del marco.
text-001: Es el titulo de la pantalla de seleccion creada.
CLASES DE MENSAJES.
===================
El evento AT-SELECTION-SCREEN sirve para analizar y validar los valores ingresados en la pantalla de seleccion.
Para hacer esto se debe ingresar a la transaccion se91 y crear una clase de mensajes.
Ejemplo:
Ingresamos a la transaccion se91 y creamos la clase de mensajes llamada ZABAP_PANTALLA1. Alli escribo el texto del mensaje para cada codigo de mensaje por ejemplo e000. Con el codigo de mensaje y la clase de mensaje voy a mi programa y cuando quiero llamar al mensaje por algun motivo lo llamo de la siguiente forma:
AT SELECTION-SCREEN.
IF fecha_ingresada < sy-datum.
MESSAGE e000(ZABAP_PANTALLA1). "La fecha ingresada debe ser mayo a la fecha actual
ENDIF.
TIPOS DE MENSAJES.
=================
TIPO SIGNIFICADO COMPORTAMIENTO EL MENSAJE APARECE EN
S Status El programa continua sin interrupcion La linea de status.
I informacion El programa continua despues de la Una ventana de dialogo
interrupcion.
W Warning Depende del contexto del mensaje. Barra de status
E Error Depende del contexto del mensaje(puede Barra de status
causar la cancelacion del prog.)
A Terminacion El prog. termina despues Una ventana de dialogo
de un cuadro de dialogo
X Dump Error en tiempo de ejecucion tipo X Un Dump
EJERCICO.
ZABAP_PANTALLA_ESTMO99K_1
*&---------------------------------------------------------------------*
*& Report ZABAP_PANTALLA_ESTMO99K_1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZABAP_PANTALLA_ESTMO99K_1.
SELECTION-SCREEN BEGIN OF BLOCK pantalla1 WITH FRAME TITLE Prueba1.
PARAMETERS: fecha LIKE sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK pantalla1.
AT SELECTION-SCREEN.
IF fecha < sy-datum.
MESSAGE e000(ZABAP_PANTALLA1). "La fecha ...
ENDIF.
INITIALIZATION.
START-OF-SELECTION.
ULINE.
WRITE: /'Dentro del programa'.
TOP-OF-PAGE.
WRITE:/'La fecha ingresada es : ',fecha.
END-OF-SELECTION.
EJERCICIO PROPUESTO.
===================
*&---------------------------------------------------------------------*
*& Report ZABAP_VUELOS_ESTMO99K
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZABAP_VUELOS_ESTMO99K.
DATA: V_CARRID(3) TYPE c,
V_CONNID(4) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE Prueba2.
PARAMETERS: P_CARRID LIKE V_CARRID. "Compañia aerea
SELECT-OPTIONS: S_CONNID FOR V_CONNID. "Codigo de vuelo
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
AT SELECTION-SCREEN.
IF P_CARRID IS INITIAL OR S_CONNID IS INITIAL.
MESSAGE e001(ZABAP_PANTALLA1) WITH 'Debe completar los parammetros'.
ENDIF.
START-OF-SELECTION.
WRITE : /'Compañia aerea : ',P_CARRID.
WRITE : /'Codigo de vuelo : ',S_CONNID-LOW.
TOP-OF-PAGE.
WRITE : /'Codigos de los vuelos de las compañias'.
END-OF-SELECTION.