• Sábado 7 de Diciembre de 2024, 18:09

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - gemaSolocodigo

Páginas: [1]
1
ABAP / Loop anidado consume mucho tiempo
« en: Lunes 15 de Febrero de 2010, 21:48 »
Loop anidado ( Es demasiado lento )

De la tabla interna tab_ped3a debo insertar los registros a la tabla interna tab_ped3

Para esto :

1) Hago un read table con tab_ped4 y hago el insert en tab_ped3 (Aqui inserto los pedidos con sus respectivos materiales y respectivo No de factura por material)

2) Hago un loop para que inserte los otros registros (Aqui inserto los pedidos que tuvieron por un material mas de un factura, osea para un material se pidio 20 unidades y 10 se facturaron con la fact A y los otros 10 con las factura B )

 
Citar

   SORT tab_ped3a by vbeln matnr posnr paobjnr.
   SORT tab_ped4  by aubel matnr aupos paobjnr.
   CLEAR : tab_ped3a , tab_ped3, tab_ped4.

   Expresion1 = ''.

   LOOP AT tab_ped3a.

      CONCATENATE tab_ped3a-vbeln   tab_ped3a-posnr tab_ped3a-matnr
                  tab_ped3a-paobjnr tab_ped3a-doc_cial INTO Expresion1.

      IF Expresion1 <> Expresion2.

*      Punto 1)
        READ TABLE tab_ped4 WITH KEY aubel   = tab_ped3a-vbeln
                                     aupos   = tab_ped3a-posnr
                                     matnr   = tab_ped3a-matnr
                                     paobjnr = tab_ped3a-paobjnr.

        IF sy-subrc EQ 0.

           CONCATENATE tab_ped4-aubel   tab_ped4-aupos tab_ped4-matnr
                       tab_ped4-paobjnr tab_ped4-vbeln INTO Expresion2.

              tab_ped3-vbeln    = tab_ped3a-vbeln.
              tab_ped3-posnr    = tab_ped3a-posnr.
              tab_ped3-matnr    = tab_ped3a-matnr.
              tab_ped3-paobjnr  = tab_ped3a-paobjnr.
              tab_ped3-doc_cial = tab_ped4-vbeln.
             INSERT TABLE tab_ped3.
        ENDIF.
      ENDIF.

      CONCATENATE tab_ped3-vbeln   tab_ped3-posnr tab_ped3-matnr
                  tab_ped3-paobjnr tab_ped3-doc_cial INTO Expresion3.

*    Punto 2)
      LOOP AT tab_ped4 WHERE aubel   = tab_ped3-vbeln and
                             aupos   = tab_ped3-posnr and
                             matnr   = tab_ped3-matnr and
                             paobjnr = tab_ped3-paobjnr.

           CONCATENATE tab_ped4-aubel   tab_ped4-aupos tab_ped4-matnr
                       tab_ped4-paobjnr tab_ped4-vbeln INTO Expresion4.

           IF Expresion4 <> Expresion3.
              tab_ped3-vbeln     = tab_ped3a-vbeln.
              tab_ped3-posnr     = tab_ped3a-posnr.
              tab_ped3-matnr    = tab_ped3a-matnr.
              tab_ped3-paobjnr  = tab_ped3a-paobjnr.
              tab_ped3-doc_cial  = tab_ped4-vbeln.
              INSERT TABLE tab_ped3.
           ENDIF.

      ENDLOOP.

   ENDLOOP.



Gracias por la atencion

Gema
COLOMBIA

Páginas: [1]