Avalados por :
Hola Expertos,
¿Cómo puedo mejorar esta consulta select? He consultado la Nota OSS 185530 y he descubierto que podemos utilizar la tabla VRPMA para obtener un mejor rendimiento, pero mi preocupación es que no hay un campo werks en VRPMA. Por lo tanto, no podré consultar en VBRP utilizando los campos matnr y werks. Sé que para all entries es mejor que join. Pero aquí tengo que conformarme con ello ya que i_mara ya ha pasado por muchas modificaciones antes de llegar a esta declaración select.
SELECT vbrp~matnr
vbrp~werks
vbrp~ntgew
vbrp~gewei
vbrk~fkdat
vbrk~vbtyp
vbrk~vbeln
vbrk~fktyp
INTO CORRESPONDING FIELDS OF TABLE i_vbrp
FROM ( vbrk INNER JOIN vbrp
ON vbrk~vbeln = vbrp~vbeln ) FOR ALL ENTRIES IN I_MARA
WHERE vbrk~fkdat GE w_pfrom_date
AND vbrk~fkdat LE w_cto_date
AND vbrk~vkorg IN s_vkorg
AND vbrk~rfbsk = 'C' "Se ha creado el documento de contabilización
AND vbrk~fkart NE 'IV' "Facturación intercompañía
AND vbrk~fkart NE 'IG' "Nota de crédito interna
AND vbrp~matnr = i_mara-matnr
AND vbrp~werks = i_mara-werks.
Por favor, aconséjame sobre cómo afinar esta declaración select.
Saludos,
Disculpa, quise decir ' Sé que para todas las entradas no es mejor que unirse '.
Sé que para todos los registros es mejor que unirse
¿Error tipográfico?
Supongo que ya has leído 185530 - Rendimiento: Desarrollos de clientes en SD .
Para acceder a los elementos de factura VBRP con material MATNR, utiliza la tabla VRPMA incluso si no hay campo WERKS, puedes mantener el filtro en VBRP.
SELECCIONAR vbrp~matnr
vbrp~werks
vbrp~ntgew
vbrp~gewei
vbrk~fkdat
vbrk~vbtyp
vbrk~vbeln
vbrk~fktyp
EN CORRESPONDENCIA CON CAMPOS DE TABLA i_vbrp
DESDE vrpma
UNIR vbrp
EN vbrp~vbeln = vrpma~vbeln
Y vbrp~posnr = vrpma~posnr
UNIR vbrk
EN vbrk~vbeln = vbrp~vbeln
PARA TODOS los registros EN i_mara
DONDE vrpma~vkorg EN s_vkorg
Y vrpma~matnr = i_mara-matnr
Y vbrk~fkdat GE w_pfrom_date
Y vbrk~fkdat LE w_cto_date
Y vbrk~rfbsk = 'C' "Se ha creado el documento de contabilización
Y vbrk~fkart NE 'IV' "Facturación intercompañía
Y vbrk~fkart NE 'IG' "Nota de crédito interna
Y vbrp~werks = i_mara-werks.
I know that for all entries is better than join
typo ?
I suppose you already read 185530 - Performance: Customer developments in SD .
To access invoice items VBRP with material MATNR, use table VRPMA even if no WERKS field, you can keep the filter on VBRP.
SELECT vbrp~matnr
vbrp~werks
vbrp~ntgew
vbrp~gewei
vbrk~fkdat
vbrk~vbtyp
vbrk~vbeln
vbrk~fktyp
INTO CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vrpma
JOIN vbrp
ON vbrp~vbeln = vrpma~vbeln
AND vbrp~posnr = vrpma~posnr
JOIN vbrk
ON vbrk~vbeln = vbrp~vbeln
FOR ALL entries IN i_mara
WHERE vrpma~vkorg IN s_vkorg
AND vrpma~matnr = i_mara-matnr
AND vbrk~fkdat GE w_pfrom_date
AND vbrk~fkdat LE w_cto_date
AND vbrk~rfbsk = 'C' "Posting document has been created
AND vbrk~fkart NE 'IV' "Intercompany Billing
AND vbrk~fkart NE 'IG' "Internal credit memo
AND vbrp~werks = i_mara-werks.
For further optimization there are sales organization fields as VKORG that carry a link to WERKS fields (table TVKO) so you may convert the i_mara table to add VKORG (one record per VKORG that izs linked to WERK in original i_mara ?) - but maintenability of report...
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute