Rendimiento...

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • DCErick
    Moderator
    • mar
    • 1090

    #1

    Rendimiento...

    Holas hice la siguiente BAPI y me gustaria saber si se puede hacer que corra mas rapido... haber si alguien me ayuda a tener un codigo mas eficiente ....


    FUNCTION zbapi_traslado_selall.
    *"----------------------------------------------------------------------
    *"*"Interfase local
    *" TABLES
    *" T_ZEKKO STRUCTURE ZSEKKO OPTIONAL
    *" T_ZEKPO STRUCTURE ZSEKPO OPTIONAL
    *" T_ZEKET STRUCTURE ZSEKET OPTIONAL
    *"----------------------------------------------------------------------


    *CABECERA.
    SELECT ebeln aedat reswk ekgrp bedat
    FROM ekko INTO CORRESPONDING FIELDS OF TABLE t_zekko
    WHERE aedat < sy-datum AND bsakz EQ 'T' AND bstyp EQ 'F' AND statu EQ '9' AND ebeln BETWEEN 430000000 AND 4399999999.

    **Articulos.
    LOOP AT t_zekko.
    SELECT ebeln ebelp matnr menge
    APPENDING CORRESPONDING FIELDS OF TABLE t_zekpo
    FROM ekpo
    WHERE loekz NE 'L' AND ebeln = t_zekko-ebeln.
    ENDLOOP.

    ***Tallas
    LOOP AT t_zekpo.
    SELECT ebeln ebelp j_3asize menge
    FROM eket APPENDING CORRESPONDING FIELDS OF TABLE t_zeket
    WHERE ebeln = t_zekpo-ebeln AND ebelp EQ t_zekpo-ebelp.
    ENDLOOP.




    ENDFUNCTION.
    -------------------
    ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?
  • sap2006
    Senior Member
    • mar
    • 134

    #2
    Un par de consejos: Utiliza operadores del tipo <,=.... ganaras algo de rendimiento....

    Este fragmento:

    LOOP AT t_zekko.
    SELECT ebeln ebelp matnr menge
    APPENDING CORRESPONDING FIELDS OF TABLE t_zekpo
    FROM ekpo
    WHERE loekz NE 'L' AND ebeln = t_zekko-ebeln.
    ENDLOOP.

    Mejor substituyelo por este otro:

    *Copio el contenido t_ekpo en su auxial
    t_zekko_aux[] = t_zekko.
    Select ebeln ebelp matnr menge FROM ekpo into table t_zekpo
    FOR ALL ENTRIES IN t_zekko_aux
    WHERE loekz NE 'L' AND ebeln = t_zekko-ebeln.

    De esta manera solo accedes una vez a la BBDD, con esta sentencia obtendras un buen rendimiento. Salu2.
    Editado por última vez por sap2006; 18/04/2006, 15:47:02.

    Comentario

    • DCErick
      Moderator
      • mar
      • 1090

      #3
      Que bien... Me tome el tiempo de anotar los tiempos jeje..

      Mi Codigo.
      Tiempo ejec.: 2,464,757 Microsegundos <----En Frio.
      Tiempo ejec.: 2,003,064 Microsegundos <----Despues de 5 llamados consecutivos.

      Con tu observacion.
      Tiempo ejec.: 1,917,061 Microsegundos <----En Frio.
      Tiempo ejec.: 1,753,163 Microsegundos<----Despues de 5 llamados consecutivos.


      Acomodando los dos Select.....

      Tiempo ejec.: 504,501 Microsegundos <----en Frio...
      Tiempo ejec.: 453,952 Microsegundos <----Despues de 5 llamados consecutivos.

      Gracias por tu ayuda..... Me dejaste libre casi dos segundos a SAP para otra tarea ..... Eso es oro para nosotros jeej...
      -------------------
      ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

      Comentario

      Trabajando...