¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo mejorar una consulta SELECT en ABAP para obtener un mejor rendimiento

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

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,

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hopefully, you corrected before Matthew could react .


Regards,

Raymond

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Disculpa, quise decir ' Sé que para todas las entradas no es mejor que unirse '.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

         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.
        
0
Cargando...

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...

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?