MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   EXEC SQL con condicion IN (foro/showthread.php?t=80723)

J e f f 28/03/19 18:42:16

EXEC SQL con condicion IN
 
Buenas gente!
Una consulta netamente técnica de la que no puedo encontrarle la vuelta.
Tengo que hacer una consulta sobre una tabla externa a SAP. A partir de N materiales y N centros, tengo que recuperar el stock de los mismos. Lo quiero hacer en un solo acceso/lectura (por un tema de performance).

COMO hago?

Estuve probando usar el IN, pero me da un error con el parámetro.


Alguna idea??
Dejo el código debajo:


Donde los parametros contienen:

p_matnr = ('528', '960', '1014', '1045', '1046')
p_werks = ('N002', 'N003', 'N004', 'N005', 'N006', 'N007')

Ideas? Me estoy rompiendo la cabeza!
Gracias!!!

vanesamacri 29/03/19 03:23:58

Hola.

¿El contenido de los parámetros utilizados para filtrar en los IN están definidos como cadena literal? ¿O son rangos convencionales definidos en ABAP (ejemplo: tabla interna de SELECT-OPTION)?

Un saludo.
Iván

J e f f 29/03/19 10:32:03


Buenas Vanesa! Los parámetros están definidos como literal, pasa que al ser "dinámicos" no se si eso estoy usando bien la condición IN.

Yo hago

WHERE material IN :p_matnr
AND centro IN :p_werks

donde en p_matnr concateno una cadena literal -> ('528', '960', '1014', '1045', '1046') y p_werks igual. No se si me falta algún espacio después del paréntesis, o que. No he trabajado mucho con SQL nativo en ABAP, por eso las dudas de como pasarle parámetros, y como recuperar la info de la query!

Básicamente estoy queriendo recuperar muchos datos, para muchos parámetros de entrada.

Alguna otra idea de como hacer esto?? Cualquier cosa ayudaría, siempre que sea UNA sola consulta, por la performance.

GRACIAS!

J e f f 01/04/19 19:44:53

Buenas,

Finalmente pude resolver la consulta. Estaba haciendo mal la misma, ya que estaba pasando todos mis datos en un solo parametro, y lo correcto es hacerlo en parametros separados. No se si le servira a alguien esto, pero lo que hice, fue crear varios parametros, y asignarle valor si los necesito, en caso que haga la consulta con los parametros vacios, solo me devolvera aquelos que si estan completos.

El codigo final me quedo asi para el caso que YO estaba necesitando:


De esta manera, puedo pasarle hasta 15 materiales y 15 centros, y la consulta funciona correctamente. Mi error inicial tenia que ver con el tipo de parametro que le estaba pasando a la consulta.

Gracias y Saludos!


Husos Horarios son GMT. La hora en este momento es 08:55:30.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web