PDA

Ver la Versión Completa : Dudas sobre Select options.


Oscar Lugo
06/09/12, 17:25:03
Hola, que tal soy nuevo en el foro y tampoco tengo mucha experiencia programando.

Les quisiera pedir ayuda para lo siguiente:

Creé un ALV con dynpro y en el llenado de los parametros para que me salga el cliente forzosamente tengo que poner los 10 digitos, aunque mis clientes solo utilizan 6 digitos ! alguien me puede ayudar a resolver esto para evadir los 4 "ceros" anteriores.

Y tambien quisiera saber si se puede en la dynpro seleccionar que los campos de entrada y salida sean obligatorios !

Mil gracias de antemano, espero sus respuestas.

Oscar Lugo.

calanis
08/09/12, 05:20:03
Hola Oscar!

Mi recomendación es que apliques un código similar al siguiente

TABLES:KNA1."-->Maestro de Clientes
SELECT-OPTIONS S_KUNNR FOR KNA1-KUNNR OBLIGATORY.
*El agregado OBLIGATORY hace que el campo sea obligatorio

Veras que el tipo definido del campo KNA1-KUNNR es un NUMC de 10 de largo que hace que sea visible un valor como 1045, pero internamente observaras 0000001045.

Para ver más detalles de opciones adicionales, mira la siguiente dirección:
Ayuda de SAP online
O bien selecciona la sentencia y presiona F1 y te traera la ayuda del sistema.

Espero te sirva

Saludos

Oscar Lugo
11/09/12, 15:54:27
Hola Carlos ! Gracias por la ayuda ! mira la sentencia *Obligatory* si la ubico , lo que pasa es que aqui no estoy declarando select-options, sino que la estoy mandando directo a la dynpro. Y ahi es donde no le puedo meter el "Obligatory" porque lo estoy metiendo en un "where".

En cuanto a lo del KUNNR, lo que sucede es que si le pongo 0000550000 me trae todos los datos perfectamente ! Lo que quiero es solo tener que ponerle despues del 550000. Pero no busca esa seleccion !

Gracias de antemano!

calanis
11/09/12, 21:39:38
Buenas tardes Oscar!

Creo que igualemente puedes aplicar la sentecia SELECT-OPTIONS, dado que puedes incorporarlo como una SUBSCREEN a tú Dynpro.
Mira los siguientes Links para guiarte
Link 1
Link 2

Ahora eso de que no puedes asociar un campo a Where, no lo entiendo bien.
Eso depende como definas el parametro que envias a tú consulta.
Si es un parametro Simple o Si es un rango.

En cuanto al parametro que se te pone mal, te reitero es por que tienes mal definido el campo con el que llegas a la consulta.
Puedes tomar 2 caminos:
1-Redefinir el Parametro para que se ingresen los valores correctamente
EJ: Si buscas clientes defines la variable como:
DATA:
LV_KUNNR TYPE KNA1-KUNNR, "-->SI
LV_KUNN1(10), "-->NO
LV_KUNN2 TYPE CHAR10.-->NO

2-Ajustar el valor para que llegue bien a la consulta.
Para ello utilizar las funciones
CONVERSION_EXIT_ALPHA_INPUT Conversion exit ALPHA, external->internal
CONVERSION_EXIT_ALPHA_OUTPUT Conversion exit ALPHA, internal->external
Por ejemplo:

DATA:LV_KUNN1(10)."Mal definido
LV_KUNN1 = '550000'.
write:/0 LV_KUNN1.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = lv_kunn1
importing
output = lv_kunn1.
write:/0 LV_KUNN1." te deberia Mostrar 0000550000 osea le coloca los '0'


Para llamar a tú Select

DATA:
lt_kna1 type standart table of kna1,
ls_kna1 type kna1.
*Si es parametro ==> p_kunnr
Select *
INTO table lt_kna1
where kunnr = p_kunnr.
IF sy-subrc is initial.
endif.

*Si es rango ==>s_kunnr
Select *
INTO table lt_kna1
where kunnr in s_kunnr.
IF sy-subrc is initial.
endif.


Saludos espero te sirva

Oscar Lugo
13/09/12, 18:46:26
Carlos, Gracias ! =D

Tus ejemplos ya los vi y son bastante funcionales !

Sin embargo ya me acerque con mi jefe el día de ayer y me ayudo a resolver mis dudas, de igual manera te agradezco mucho, espero contar con tu ayuda para las siguientes dudas que se me vayan presentando!

Saludos y gracias.