Delay en ABAP

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

    #1

    Delay en ABAP

    Hola, aqui estoy de nuevo con una duda.

    Existe en ABAP alguna instruccion para hacer que la ejecucion de un programa haga una pausa.

    Lo que pasa es que aplico muchos pedidos de traslado en un ciclo.
    Pero como que el tiempo de refresh despues de grabar el primero no es muy rapido y cuando entro a generar el que sigue me marca que algun artículo esta tratandose por otro usuario y pues soy yo mismo jeje..

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

    #2
    Creo que haciendo un COMMIT WORK AND WAIT puedes solucionarlo....

    Salu2.

    Comentario

    • DCErick
      Moderator
      • mar
      • 1090

      #3
      Mira esto es el resultado.
      Folio Traslado Fecha Traslado Folio Movimiento
      4300002574 01.06.2006 4900200236
      4300002575
      El documento no contiene posiciones
      Los datos batch input para el dynpro SAPMM07M 0421 no existen.

      Uso este LOOP. para
      Código:
      LOOP AT t_zekko_.
        CLEAR v_ftraslado.
        CLEAR v_fmovimiento.
        REFRESH t_messtab.
        REFRESH t_return.
        CLEAR t_messtab.
        CLEAR t_return.
        v_ftraslado = t_zekko_-torigen.
        PERFORM aplicamovimiento.
        COMMIT WORK AND WAIT.
        IF v_fmovimiento <> ''.
          WRITE : / ' ' , v_ftraslado , '       ', t_zekko_-aedat, '           ' , v_fmovimiento.
        ELSE.
          WRITE : / ' ' , v_ftraslado.
          LOOP AT t_messtab.
            IF t_messtab-msgid <> '' AND t_messtab-msgid <>' '.
      
              MESSAGE ID t_messtab-msgid
              TYPE t_messtab-msgtyp
              NUMBER t_messtab-msgnr
              WITH t_messtab-msgv1 t_messtab-msgv2 t_messtab-msgv3
              t_messtab-msgv4
              INTO mensaje.
      
              WRITE / mensaje.
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDLOOP.
      Aqui mando llamar la BAPI.
      Código:
      FORM aplicamovimiento.
      
        CALL FUNCTION 'ZBAPI_TRASLADO_MB1B'
          EXPORTING
            i_centro       = p_centro
            i_ntraslado    = v_ftraslado
            i_mode         = p_mode
            i_clmovimiento = v_clmovbapi
          IMPORTING
            e_folio        = v_fmovimiento
          TABLES
            return         = t_return
            messtab        = t_messtab.
      
        IF sy-subrc EQ 0.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
        ELSE.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.
      
      ENDFORM.                    " aplicamovimiento
      Lo curioso es que si le doy al "Atras" y ejecutar de nuevo, me guarda el siguiente movimiento, que anteriormente marcó error.
      Alguna idea.?
      -------------------
      ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

      Comentario

      • DCErick
        Moderator
        • mar
        • 1090

        #4
        Ya lo solucioné el problema es que el BCDATA no se limpia y me manda llamar el mismo pedido siempre.

        REFRESH bdcdata.
        CLEAR bdcdata.

        Le puse eso al inicio de la BAPI y listo.

        Gracias...

        Solo me queda la duda de como limpiar ese BCDDATA desde el programa Z.
        Sin tener que modificar la BAPI??
        -------------------
        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

        Comentario

        Trabajando...