PDA

Ver la Versión Completa : Como pasar un select options a una función


yerotos
14/12/07, 06:56:14
Buenas de nuevo.
Tengo en mi código un select options:

select-options:
si_nie for T7EHS00_SERVICE-pernr.

y quisiera pasar el valor que contenga este select options a una función, lo he hecho de la siguiente forma:

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = so_nie
IMPORTING
output = it_lineatabla-nie.

y me da todo el rato error.

Como pongo en el input el select options?

Gracias otra vez.

Salu2

JAC
14/12/07, 07:55:26
Leete esto a ver si te sirve de algo.
http://blog.sap4.com/2007/05/24/como-pasarle-un-rango-a-una-funcion/

orlava
14/12/07, 08:00:57
El select options es una especie de tabla interna. La función en cuestión no admite tablas internas, solo parámetros. Por ello debes hacer lo siguiente:

Debes hacer un loop at si_nie
Dentro llamas a la funcion pasándole como parametro si_nie-low, que representa cada valor del select-options.
con lo que te devuelva la función rellenas la cabecera de tu tabla interna it_lineatabla y le haces un append.

ibecerra
14/12/07, 12:13:16
hola no te preocupes es entras a la se37
muy facil y sencillo a tu funcion en la pestaña de tables
creas un parametro ejemplo

parametro tipificaci tipo_ref
T_MATERIAL LIKE BAPI_RANGESMATNR --> "en este caso he conseguido una estructura estandar de rangos" si no sabes cual es ubicala en se11 opcion "tipo de datos" o creas una.
luego en el codigo de la funcion se lo pasas como un range ejemplo
select * into table xxxxx from mara where matnr in t_material. --> viste q se comporta como un range, porque un range es una tabla interna o estructra de datos
saludos

ibecerra
14/12/07, 12:16:28
ahh me olvidaba
en tu programa principal tienes lo siguiente

select-option s_matnr for mara-matnr..

start-of-selection
CALL FUNCTION 'ZRFC_TUFUNCION'
TABLES
T_MATERIAL = S_MATNR

yerotos
14/12/07, 12:32:25
El select options es una especie de tabla interna. La función en cuestión no admite tablas internas, solo parámetros. Por ello debes hacer lo siguiente:

Debes hacer un loop at si_nie
Dentro llamas a la funcion pasándole como parametro si_nie-low, que representa cada valor del select-options.
con lo que te devuelva la función rellenas la cabecera de tu tabla interna it_lineatabla y le haces un append.

Gracias, por tu ayuda. Esto que me indicas, me funciona a medias. Si le meto un rango de valores, por ejemplo del 1 al 20, si_nie_low siempre sera 1.

Como puedo solucionar esto?

robert_milan
14/12/07, 12:35:26
tendrias que crear una funcion que sea inteligente y lea los valores de la tabla interna.

y poder crear el rango de 1 a 20 o de 0 a n

o ver si solo es un parametro.

saludos

yerotos
14/12/07, 13:07:06
tendrias que crear una funcion que sea inteligente y lea los valores de la tabla interna.

y poder crear el rango de 1 a 20 o de 0 a n

o ver si solo es un parametro.

saludos
Si pero cual es el campo del select-option que contiene el valor?
Me refiero a si el valor es si_nie o si_nie-algun campo...

Perdonan mi ignorancia

robert_milan
17/12/07, 07:56:25
por ejemplo si declaras un s_matnr como select los valores los tienes en s_matnr-low y s_matnr-high.

y en s_matnr-option tienes si es bt = entre, EQ = igual, etc. ahi tendrias que meter tu logica.

yerotos
18/12/07, 07:21:02
por ejemplo si declaras un s_matnr como select los valores los tienes en s_matnr-low y s_matnr-high.

y en s_matnr-option tienes si es bt = entre, EQ = igual, etc. ahi tendrias que meter tu logica.

Entonces, por ejemplo para los intervalos, lo que tendría que hacer es recorrer desde s_matnr-low y hasta el s_matnr-high y coger lo que contenga s_matnr-low, no?
Lo único, tendría q ir aumentandole en una unidad cada pasada no?

Estoy muy verde, lo siento. :oops:

yerotos
18/12/07, 09:49:29
Por fin!! Ya he conseguido hacer lo que quería. Al final era mas sencillo que lo q yo pretendía :o :o , me complique la vida demasio. He hecho un select pasandole el select-options con el in y he metido el resultado en una tabla interna.

Muchas gracias por vuestra ayuda, si no es por vds. no salgo a la orilla.

Siento haber dado tanto el coñazo. :o

Un saludo

Enksillado
28/05/10, 16:20:13
Buenas, estoy con un tema dando vueltas, y no puedo encontrarlo...
Alguien sabe como podría pasar un select-option a una rutina?.
Acutalmente tengo lo paso como parametro tipo CHANGING a una rutina que lo recibe del una estructura del tipo SELOPT.
Pero me da error diciento que los parametros son incompatibles.

Lo envio como:
PERFORM xxxx CHANGING SO_MATNR

y lo recibo

FORM xxxx CHANGING P_RANGO type SELOPT.

tambien he intentado hacerlo mediante Tables, me genera el mismo error ademas tenia entendido que es una sentencia obsoleta.

Muchas Gracias!.

Mauricio Hidalgo
28/05/10, 19:39:25
Y SO_MATNR como lo tienes definido?