MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Se puede cambiar el modo de consultar a la base de datos? (foro/showthread.php?t=74535)

rafa_fonseca 03/09/15 20:09:16

Se puede cambiar el modo de consultar a la base de datos?
 
Buenas tardes, tengo un programa con problemas de desempeño, originalmente estaba en un sistema de Europa versión sap 4.0b y se migró a un sistema sap 3.1i. En 4.0b funciona rápido.

Revisando en 3.1i, usando la ST05, el programa arma el select que se envía a la base de datos con OR, haciendo la lectura a la base de datos de manera secuencial y por ende muy lento, haciendo que no se complete el programa. Las 2 versiones en 3.1i y 4.0b tienen el mismo código, el índice que se creó para ello, esta activo y funcionando.

en un foro encontré una info que recomendaba para evitar los OR, se recomendaba hacer un rango dentro del select:

por ejemplo:

AND MATNR
>= '010-7424-7411 ' AND MATNR <= '010-7424-7411 '

un rango hacia si mismo (Esta info es visualizada desde la ST05)



Mi pregunta comienza acá:

en 3.i1 en el ambiente de DESAROLLO, cuando ejecuto la ST05, me muestra lo siguiente:

MANDT = '020' AND VGABE = '1' AND BEWTP = 'E' AND BWART = '101' AND BUDAT >= '20140901' AND BUDAT <= '20150831' AND
MATNR >= '010-2704-1200 ' AND MATNR <= '010-2704-1200 ' AND WERKS = 'RRM '
UNION ALL SELECT EBELN , EBELP , ZEKKN , VGABE , GJAHR , BELNR , BUZEI , BUDAT , MATNR , WERKS FROM EKBE WHERE
MANDT = '020' AND VGABE = '1' AND BEWTP = 'E' AND BWART = '101' AND BUDAT >= '20140901' AND BUDAT <= '20150831' AND MATNR
>= '010-7424-7411 ' AND MATNR <= '010-7424-7411 ' AND WERKS = 'RRM

En este extracto como pueden ver hace un UNION ALL, el OR queda eliminado por lo cual está bien.



Pero cuando lo muevo al sistema de pruebas pasa lo siguiente:

MANDT = '010' AND VGABE = '1' AND BEWTP = 'E' AND BWART = '101' AND BUDAT >= '20140901' AND BUDAT <= '20150831' AND MATNR >= '02130505 ' AND MATNR <= '02130505
' AND WERKS = 'LLP ' )
OR ( MANDT = '010' AND VGABE = '1' AND BEWTP = 'E' AND BWART = '101' AND BUDAT >= '20140901' AND BUDAT <= '20150831' AND MATNR >= '02311393 ' AND MATNR
<= '02311393 ' AND WERKS = 'LLP ' )
OR ( MANDT = '010' AND VGABE = '1' AND BEWTP = 'E' AND BWART = '101' AND BUDAT >= '20140901' AND BUDAT <= '20150831' AND MATNR >= '02311408
' AND MATNR <= '02311408 ' AND WERKS = 'LLP ' )


En este extracto, se muestra que envía la consulta con OR. Jajajaja no entiendo como pasa algo tan diferente de un sistema de desarrollo a uno de pruebas con la misma base de datos.


Si alguien puede contestar esto se lo agradecería: Hay alguna forma en la configuración que se eliga el UNION ALL o el OR? Suena raro lo sé o por ejemplo la configuración de sap que si se envía en bloques la consultam por ejemplo bloques menos de 10 utilice el OR, más de 10 utilice el UNION ALL. No puedo explicar mucho este caso por que no se mucho del tema y tampoco vamos a actualizar las versiones de sap en el trabajo por que no hay dinero y y tampoco soporte de SAP, estas son mis limitante.


Muchas gracias por la ayuda.

rafa_fonseca 04/09/15 14:11:06

Parametrización de SELECT en SAP
 
Buenos días, no se si lo que he posteado siempre es medio jalado del pelo o enredado jeje, por que nunca he recibido respuesta alguna y al final me termino contestando las preguntas lo cual es bueno.

Para cultura general lo que buscaba es Parametization of SELECT, se meten al SAP MARKETPLACE , usando este enlace:



y lo pueden bajar en .pdf, en este foro solo se permiten archivos de 19kb máximo parece.


Con esta info, pueden configurar a SAP para cuando realice la consulta a la base de datos, utilice predeterminado ya sea el UNION ALL o otros valores.


Eso si que lo haga alguien de su equipo de BASIS, nosotros como abaperos no deberíamos configurar eso.

Saludos :D


Husos Horarios son GMT. La hora en este momento es 06:17:02.

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