Cuando termina.?

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

    #1

    Cuando termina.?

    Hola estoy usando esta BAPI "/AFS/BAPI_PO_CREATE" para crer pedidos de traslados el caos es que necesito saber cuando termina exactamente la afectacion de todas las tablas para poder pasar a crear el siguiente traslado.

    *Ya puse eso pero tengo el problema de que aun así sigue en proceso de update y por lo tanto algunos materiales están bloqueados y esto afecta al momento de crear el siguiente traslado.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    wait = 'X'
    IMPORTING
    return = s_ret2.

    *Adicionalmente le puse las siguientes lineas decódigo.
    COMMIT WORK AND WAIT.
    WAIT UP TO 60 SECONDS. <- Esta es la que quiero quitar porque no puedo esperar 1 hora para quenerar 60 traslados y menos cuando unos tienen pocos materiales. Pero no lo hago porque con esto hace que ya casi no me marqué productos bloqueados.


    Este programa lo corro en un job por la noche y se crean diariamente minimo 70 traslados, pero no solo los creo entre otroas cosas hay que alicarles el 351(MB1B) proceso que tambien bloquea producto que tambien bloquea producto, entre otras cosas que tambien toman su tiempo.

    ¿Alguna idea de que puedo hacer en este caso?
    -------------------
    ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?
  • ibecerra

    #2
    hola si no me equivoco cuando sap bloquea registro utiliza la funcion ENQUEUE*(SEGUN OBJETO).. puede ser q utilizes la funcion que desbloquea el objeto y continuas con el siguiente registro.
    saludos

    Comentario

    • DCErick
      Moderator
      • mar
      • 1090

      #3
      Originalmente publicado por ibecerra
      hola si no me equivoco cuando sap bloquea registro utiliza la funcion ENQUEUE*(SEGUN OBJETO).. puede ser q utilizes la funcion que desbloquea el objeto y continuas con el siguiente registro.
      saludos
      No pues lo ideal seria que el objeto se desbloquee solo, que siga el flujo normal, lo que necesito es saber cuando termino completamente la BAPI se crear y actualizar todo.

      Gracias de antemano.
      -------------------
      ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

      Comentario

      • ibecerra

        #4
        hola y porque no haces una validacion , cuando generes el pedido por la bapi verifca que el nro de pedido que genere exsista en la ekko(creo q esta bapi genera los documento en esta tabla).
        y no pases al siguiente hasta que este no este insertado solo asi sabras cuando exactamente termino.
        Saludos

        Comentario

        • DCErick
          Moderator
          • mar
          • 1090

          #5
          Originalmente publicado por ibecerra
          hola y porque no haces una validacion , cuando generes el pedido por la bapi verifca que el nro de pedido que genere exsista en la ekko(creo q esta bapi genera los documento en esta tabla).
          y no pases al siguiente hasta que este no este insertado solo asi sabras cuando exactamente termino.
          Saludos
          Eso tambien ya lo tengo y aun asi tengo el mismo problema.
          :S
          -------------------
          ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

          Comentario

          • ballan
            Senior Member
            • oct
            • 671

            #6
            Pues dudo mucho que puedas inferir el momento exacto en el que se dejan de actualizar tablas puesto que eso depende de muchos factores como la carga de trabajo del servidor, la planificacion del gestor de BBDD...

            Para mi la mejor solucion seria hacer un bucle de este estilo

            DO n TIMES "Aqui pondrias el numero de reprocesos

            perform comprobar_pedido "Aqui miraria en la EKKO si se ha creado

            if sy-subrc = 0.
            exit.
            endif.

            wait up to n seconds "Aqui el retardo pero nunca 60 segundos porque es una barbaridad

            ENDDO

            Comentario

            • DCErick
              Moderator
              • mar
              • 1090

              #7
              Bueno lo deje con lo siguiente:

              Código:
                    
              
                     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                        EXPORTING
                          wait = 'X'.
              
              **Verificamos que ya no esté bloqueado el traslado.
                      l_number = 1.
                      WHILE l_number > 0.
              
                        l_garg = ''.
                        CONCATENATE sy-mandt t_zekko-ebeln INTO l_garg.
              
                        CALL FUNCTION 'ENQUEUE_READ'
                          EXPORTING
                            gclient               = sy-mandt
                            gname                 = 'EKKO'
                            garg                  = l_garg
                          IMPORTING
                            number                = l_number
                          TABLES
                            enq                   = ti_seqg3
                          EXCEPTIONS
                            communication_failure = 1
                            system_failure        = 2
                            OTHERS                = 3.
                      ENDWHILE.
              Ya con eso el proceso duró menos de 40 minutos para 54 traslados.

              Gracias por su ayuda.
              -------------------
              ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

              Comentario

              • ibecerra

                #8
                entonces quedo bien!!

                Comentario

                Trabajando...