COMMIT y ROLLBACK en BAPI

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • sebapap
    Junior Member
    • jul
    • 11

    #1

    COMMIT y ROLLBACK en BAPI

    Tengo el siguiente problema, necesito ejecutar 1 bapi 2 veces
    (HU_CREATE_GOODS_MOVEMENT)
    , si ejecuta bien la primera vez, sigo con la segunda vez, pero el problema que es necesaria ejecutar la primera, para que existan los datos para ejecutar la segunda.

    1 - HU_CREATE_GOODS_MOVEMENT hago un mov 305

    2 - HU_CREATE_GOODS_MOVEMENT hago un mov 344

    si no hago el commit en la 1 no puedo hacer el 344 porque el stock esta en transito.

    Gracias,
  • SAPING
    Senior Member
    • may
    • 199

    #2
    Originalmente publicado por sebapap
    Tengo el siguiente problema, necesito ejecutar 1 bapi 2 veces
    (HU_CREATE_GOODS_MOVEMENT)
    , si ejecuta bien la primera vez, sigo con la segunda vez, pero el problema que es necesaria ejecutar la primera, para que existan los datos para ejecutar la segunda.

    1 - HU_CREATE_GOODS_MOVEMENT hago un mov 305

    2 - HU_CREATE_GOODS_MOVEMENT hago un mov 344

    si no hago el commit en la 1 no puedo hacer el 344 porque el stock esta en transito.

    Gracias,
    Y cual seria el problema en cuestion??..
    el commit no llega a guardar los datos antes de la ejecucion del 344??..
    Si es ese tema prueba con un COMMIT WORK AND WAIT.

    Saludos.

    Comentario

    • sebapap
      Junior Member
      • jul
      • 11

      #3
      Este es el escenario.
      1- tengo una uma en transito.
      con el mov 305 (primera bapi que se ejecuta), deja el stock en L.U.,
      Si esta bapi se ejecuta bien sigo con la segunda que toma el stock L.U. y lo deja Bloq. (mov 344)
      Si esta falla debo ser capaz de deshacer los cambios de la primera bapi y segunda bapi.

      El problema es q si no hago un commit en la primera, la segunda me falla pq el stock no esta en L.U. y si hago el commit, con el rollback no logro deshacer los cambios de la primera bapi.

      Comentario

      • SAPING
        Senior Member
        • may
        • 199

        #4
        Originalmente publicado por sebapap
        Este es el escenario.
        1- tengo una uma en transito.
        con el mov 305 (primera bapi que se ejecuta), deja el stock en L.U.,
        Si esta bapi se ejecuta bien sigo con la segunda que toma el stock L.U. y lo deja Bloq. (mov 344)
        Si esta falla debo ser capaz de deshacer los cambios de la primera bapi y segunda bapi.

        El problema es q si no hago un commit en la primera, la segunda me falla pq el stock no esta en L.U. y si hago el commit, con el rollback no logro deshacer los cambios de la primera bapi.
        Me mataste pa..
        Si encontras la solucion publicala asi nos enteramos los que no la sabemos.

        Suerte !!! Y disculpa que no te pueda ayudar.
        Saludos.

        Comentario

        • mysmb2
          Senior Member
          • ene
          • 406

          #5
          hola, intentaste con el parametro IF_COMMIT = 'X' en vez de hacerlo por codigo?
          Otra cosa que podes intentar es usar la funcion BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK.

          espero te sirva.
          saludos
          Sebastián Chiavia
          http://www.programacionabap.com.ar

          Comentario

          • sebapap
            Junior Member
            • jul
            • 11

            #6
            Hola, si uso IF_COMMIT = 'X' no me funciona el ROLLBACK.

            Gracias

            Comentario

            • Garces
              Senior Member
              • ago
              • 321

              #7
              Prueba intentando con la bapi BAPI_GOODSMVT_CREATE en lugar de la que utilizas...
              Ésta te permitirá ingresar más de un item a tu documento de material...
              De repente funciona con una sola llamada a la BAPI haciendo los dos movimientos simutáneamente...
              Por el momento no se me ocurre nada más...
              Nos avisas
              Miguel Ángel Garcés Ramírez

              Comentario

              • DCErick
                Moderator
                • mar
                • 1090

                #8
                Y ya buscaste si existe un tipo de movimiento que te deje el stock de transito a bloqueado sin tener que pasar por libre
                -------------------
                ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                Comentario

                • ballan
                  Senior Member
                  • oct
                  • 671

                  #9
                  Llamadme loco pero...

                  Podrias crear el primer movimiento con commit y si el segundo falla anular el primero con la MBST o BAPI_GOODSMVT_CANCEL, no?

                  Comentario

                  • sebapap
                    Junior Member
                    • jul
                    • 11

                    #10
                    Busque mov para hacer el paso de bloq a transito pero no encuentro, podria hacer una copia del 303 y modificar el tipo de stock que verifica, pero no encontre donde modificar.

                    Se puede hacer la anulacion del nr de doc, pero no queda 100% transaccional, ya que si no funciona esta bapi, quedará con incongruencia los datos.

                    Comentario

                    • vrpascual
                      Junior Member
                      • nov
                      • 22

                      #11
                      Error "Movimiento mercancías imposible con clase movimiento 460"

                      Cuando llamo a la BAPI por medio de un programa me devuelve el error "Movimiento mercancías imposible con clase movimiento 460" y si corro la bapi por la SE37 con los mismos datos anda OK.
                      los datos que paso son:
                      DATA vl_code TYPE gm_code VALUE '04'.

                      *se completan los datos para crear el documento

                      wl_header-pstng_date = sy-datum.
                      wl_header-doc_date = sy-datum.

                      wl_code-gm_code = vl_code.

                      wl_item-material = '000000000000003963'. "Material
                      wl_item-plant = 'AG03'. " CENTRO ORIGEN
                      wl_item-stge_loc = 'ST01'. " Almacen
                      wl_item-batch = 'AG'. "Lote
                      wl_item-move_type = '459'. " Clase mov.
                      wl_item-entry_qnt = 10. " Cantidad
                      wl_item-entry_uom = 'ST'. "Unidad
                      wl_item-move_stloc = 'ST01'. " Almacen
                      wl_item-move_batch = 'AG'. "Lote
                      APPEND wl_item TO ti_item.

                      *se crea el documento
                      CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
                      EXPORTING
                      goodsmvt_header = wl_header
                      goodsmvt_code = wl_code
                      testrun = ''
                      IMPORTING
                      materialdocument = vl_mat_doc
                      matdocumentyear = vl_doc_year
                      TABLES
                      goodsmvt_item = ti_item
                      return = ti_return.

                      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                      EXPORTING
                      wait = 'X'.

                      Alguien me podria indicar a que se debe el error? o si me falta algun dato?
                      Saludos.

                      Comentario

                      • DCErick
                        Moderator
                        • mar
                        • 1090

                        #12
                        wl_item-move_type = '459'. " Clase mov.
                        Es 460 o 459?

                        En la tabla T158B tienes las clase de movimiento por transaccion y en la T158G los tipo de movimiento para cada transaccion por medio de BAPI.

                        Hechale un ojo y ve que todo cuadre.
                        -------------------
                        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                        Comentario

                        • vrpascual
                          Junior Member
                          • nov
                          • 22

                          #13
                          Originalmente publicado por DCErick
                          Es 460 o 459?

                          En la tabla T158B tienes las clase de movimiento por transaccion y en la T158G los tipo de movimiento para cada transaccion por medio de BAPI.

                          Hechale un ojo y ve que todo cuadre.
                          Hola DCErick, perdon los datos que puse es cuando lo vuelvo a bloquear> Primero lo desbloqueo y uso:
                          wl_item-material = '000000000000003963'. "Material
                          wl_item-plant = 'AG05'. " CENTRO ORIGEN
                          wl_item-stge_loc = 'SN01'. " Almacen
                          wl_item-batch = 'AG'. "Lote
                          wl_item-move_type = '460'. " Clase mov.
                          wl_item-entry_qnt = 10. " Cantidad
                          wl_item-entry_uom = 'ST'. "Unidad
                          wl_item-move_stloc = 'SN01'. " Almacen
                          wl_item-move_batch = 'AG'. "Lote
                          APPEND wl_item TO ti_item.

                          Comentario

                          • DCErick
                            Moderator
                            • mar
                            • 1090

                            #14
                            Hace mucho que no toco esa BAPI, tengo la duda de si no te falta indicar el centro destino?
                            -------------------
                            ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                            Comentario

                            • vrpascual
                              Junior Member
                              • nov
                              • 22

                              #15
                              Originalmente publicado por DCErick
                              Hace mucho que no toco esa BAPI, tengo la duda de si no te falta indicar el centro destino?
                              Es lo mismo ponerlo porque como es desbloqueo es en el mismo centro-almacen-lote, e igual probe con pasarlos los 3 datos y sigue emitiendo el mismo error "Movimiento mercancías imposible con clase movimiento 460". Y la cantidad que paso a desbloquear es 10 y en la tabla tiene bloqueada 550.

                              Comentario

                              Trabajando...