PDA

Ver la Versión Completa : Duda con Select-Option


gaos
04/04/14, 15:28:27
Buen día a tod@s.

Me piden hacer un reporte con una selección de materiales por rango para ser excluida, es decir, un select-option, mi duda es ¿Se puede restringir el rango de selección a solo exclusión? Lo que busco es que solo aparezcan las pestañas de exclusión que son las 2 últimas ¿Es posible hacer esto?

Agradezco la ayuda brindada.

vanesamacri
04/04/14, 16:53:46
Buenas tardes.

En algún momento, he visto que es posible suprimir las pestañas de exclusión en un SELECT-OPTION. No te sabría precisar si es posible solamente mantener esas.

Si al rango lo vas a utilizar como condición para filtrar en un SELECT, ¿por qué no usar lo siguiente?: WHERE campo NOT IN rango

También podrías recuperar la totalidad de los registros (sin filtrar por este campo en particular) y luego borrar la tabla interna resultado de la forma: DELETE itab WHERE campo NOT IN rango.

Un saludo.

gaos
04/04/14, 18:17:37
Gracias por la respuesta.

Lo que me mencionas ya lo tengo en el código, lo que se busca son 2 cosas que solo sean visibles las pestañas de exclusión o inclusión y que sea mas fácil para el usuario.

Actualmente lo tengo con NOT IN pero al usuario le causa confusión porque ve las 4 pestañas.

vanesamacri
04/04/14, 19:17:12
En ese caso (respetando el NOT IN), probate la siguiente lógica:

REPORT YPRUEBA.


TABLES: pernr.

DATA: t_ass_tab TYPE sscr_ass, "Select-options a restringir
t_opt_list TYPE sscr_opt_list, "Cada una de las opciones a controlar
restrict TYPE sscr_restrict. "Estructura conteniendo las tablas anteriores



* Pantalla de selección
SELECT-OPTIONS: s_cocd FOR pernr-pernr.



INITIALIZATION.
* Crear una entrada en t_opt_list especificando las características de S_CoCd

CLEAR t_opt_list.
t_opt_list-name = 'S_COCD'. "Debe coincidir con ass_tab-op_main
t_opt_list-options-bt = 'X'. "No permitir el BETWEEN
t_opt_list-options-cp = space. "No permitir el MATCHES-PATTERN
t_opt_list-options-eq = 'X'. "Si permitir el EQUALS
t_opt_list-options-ge = space. "No permitir el GREATER-OR-EQUAL
t_opt_list-options-gt = space. "No permitir el GREATER-THAN
t_opt_list-options-le = space. "No permitir el LESS-OR-EQUAL
t_opt_list-options-lt = space. "No permitir el LESS-THAN
t_opt_list-options-nb = space. "No permitir el NOT-BETWEEN
t_opt_list-options-ne = 'X'. "Si permitir el NOT-EQUAL
t_opt_list-options-np = space. "No permitir el NO-PATTERN-MATCH
APPEND t_opt_list TO restrict-opt_list_tab.


* Crear una entrada t_ass_tab para habilitar la restricción en el select-option
* S_CoCd.

CLEAR t_ass_tab.
t_ass_tab-kind = 'S'. "Aplicar solo a los Select-Options nombrados
t_ass_tab-name = 'S_COCD'. "Nombre del SELECT-OPTION a restringir
t_ass_tab-sg_main = 'I'. "I = SOLO inclusiones; * = Ambas
t_ass_tab-sg_addy = space.
t_ass_tab-op_main = 'S_COCD'. "Debe coincidir con: opt_list-name
APPEND t_ass_tab TO restrict-ass_tab.

* Llamar a la función para restringir las características del Select-Option.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict
EXCEPTIONS
too_late = 1
repeated = 2
selopt_without_options = 3
selopt_without_signs = 4
invalid_sign = 5
empty_option_list = 6
invalid_kind = 7
repeated_kind_a = 8
OTHERS = 9.

IF sy-subrc NE 0.
* Mensaje de error.
ENDIF.

En la pantalla de salida, lo vas a ver así:

http://s29.postimg.org/uakkfttfr/ejemplo.png

gaos
04/04/14, 21:33:01
Gracias Funcionó muy bien.

Solo falto un detalle, agregar el type-pool sscr. Y ya con eso funciona de maravilla :D :D :D :D :D, la deje con una sola opción, se puede jugar con las pestañas.