Bapi_goodsmvt_create

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • luisalejan1308
    Junior Member
    • feb
    • 12

    #1

    Bapi_goodsmvt_create

    Buen día MUNDOSAP!

    Estoy realizando un desarrollo en el cual necesito realizar una descarga masiva de reservas haciendo el mismo procedimiento que hace la transacción MIGO. Para lo anterior estoy probando con el módulo de funciones 'BAPI_GOODSMVT_CREATE'.

    La carga de reservas se realiza por la Tx MB21. Cuando instroduzo los datos requeridos para la Bapi me sale el error de 'Introduzca Pedido'; no lo tengo porque cuando se realizan las cargas de reservas estas no se asocian a un pedido.

    No estoy seguro, pero al parecer el campo pedido es obligatorio para la ejecución de la Bapi.

    Este es el código del cual me estoy guiando para las pruebas:

    Código HTML:
    * Declación de variables
      DATA: l_goodsmvt_header LIKE  bapi2017_gm_head_01,
            l_goodsmvt_code LIKE  bapi2017_gm_code,
            l_goodsmvt_headret LIKE  bapi2017_gm_head_ret,
            l_mblnr LIKE mkpf-mblnr,
            l_mjahr LIKE mkpf-mjahr.
     
      DATA: i_goodsmvt_item LIKE  bapi2017_gm_item_create OCCURS 10
                                     WITH HEADER LINE,
            i_return LIKE bapiret2 OCCURS 1 WITH HEADER LINE.
    * DATOS CABECERA
          CLEAR l_goodsmvt_header.
          l_goodsmvt_header-pstng_date = I_listado-budat. "F.Contable
          l_goodsmvt_header-doc_date   = I_listado-bldat. "F.Documento
          l_goodsmvt_header-pr_uname   = sy-uname.
          l_goodsmvt_header-header_txt = 'Texto cabecera'.
     
    * Tipo de movimiento
          SELECT SINGLE gmcode FROM t158g
            INTO l_goodsmvt_code
           WHERE tcode = 'MB01'. "<-Transaccion de entradas (este código no existe para la Tx MB21)
    * Posiciones
         REFRESH i_goodsmvt_item.
          CLEAR i_goodsmvt_item.
          i_goodsmvt_item-move_type  = i_listado-bwart. "Clase mov.
          i_goodsmvt_item-material   = i_listado-matnr. "Material
          i_goodsmvt_item-plant      = i_listado-werks. "Centro
          i_goodsmvt_item-stge_loc   = i_listado-lgort. "Almacen
          i_goodsmvt_item-entry_qnt  = i_listado-menge. "Cantidad
          i_goodsmvt_item-entry_uom  = i_listado-meins. "Unidad
          i_goodsmvt_item-quantity  = i_listado-menge.  "Cantidad
          i_goodsmvt_item-BASE_UOM  = i_listado-meins.  "Unidad
     
          i_goodsmvt_item-mvt_ind   = 'B'.   "Indicador de movimiento
          i_goodsmvt_item-po_number = i_listado-ebeln.  "Ref.a pedido (Para mi caso no lo tengo)
          i_goodsmvt_item-po_item   = i_listado-ebelp.  
     
          APPEND i_goodsmvt_item.
     
          REFRESH: i_return. CLEAR i_return.
          CLEAR l_mblnr.
          CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
            EXPORTING
              goodsmvt_header  = l_goodsmvt_header
              goodsmvt_code    = l_goodsmvt_code
              testrun          = ' '
            IMPORTING
              goodsmvt_headret = l_goodsmvt_headret
              materialdocument = l_mblnr
              matdocumentyear  = l_mjahr
            TABLES
              goodsmvt_item    = i_goodsmvt_item
              return           = i_return.
     
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
          COMMIT WORK AND WAIT.
    Por la ayuda suministrada muchas gracias.
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    Hola!, creo que le tenes que pasar el documento material en vez del pedido, fijate en la mseg.

    Espero te sirva,
    Saludos.
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    • luisalejan1308
      Junior Member
      • feb
      • 12

      #3
      Gracias mysmb2!

      Ahora me sale el error: 'Moviemiento de mercancías imposible para clase de movimiento Z01'. :S

      Gracias.

      Comentario

      • mysmb2
        Senior Member
        • ene
        • 406

        #4
        hola luis, estuve revisando la bapi y podes ingresar la reserva en el campo GOODSMVT_ITEM-RESERV_NO en vez de po_number.

        Saludos.
        Sebastián Chiavia
        http://www.programacionabap.com.ar

        Comentario

        • luisalejan1308
          Junior Member
          • feb
          • 12

          #5
          Hola mysmb2!

          He estado revisando bastantes foros con respecto a la BAPI pero no he logrado hacerla funcionar.

          De éste foro me he guiado:
          Código HTML:
          http://wiki.sdn.sap.com/wiki/display/ERPSCM/How+To+Goods+Movements+with+BAPI
          en el Item
          Código PHP:
          Goods issue with reference to a reservation 
          para usarla con respecto a la reserva.

          Al ejecutar la BAPI la tabla i_return me sale vacía. Estoy usando el siguiente código:

          Código HTML:
          * Declación de variables
            DATA: l_goodsmvt_header LIKE  bapi2017_gm_head_01,
                  l_goodsmvt_code LIKE  bapi2017_gm_code,
                  l_goodsmvt_headret LIKE  bapi2017_gm_head_ret,
                  l_mblnr LIKE mkpf-mblnr,
                  l_mjahr LIKE mkpf-mjahr.
          
            DATA: i_goodsmvt_item LIKE  bapi2017_gm_item_create OCCURS 10
                                           WITH HEADER LINE,
                  i_return LIKE bapiret2 OCCURS 1 WITH HEADER LINE.
          * DATOS CABECERA
                CLEAR l_goodsmvt_header.
                l_goodsmvt_header-pstng_date = '20120102'. "F.Contable
                l_goodsmvt_header-doc_date   = '20120103'. "F.Documento
                l_goodsmvt_header-pr_uname   = sy-uname.
                l_goodsmvt_header-header_txt = 'Texto cabecera'.
          
          * Tipo de movimiento
                SELECT SINGLE gmcode FROM t158g
                  INTO l_goodsmvt_code
                 WHERE tcode = 'MB1A'. "<-Transaccion de entradas
          * Posiciones
               REFRESH i_goodsmvt_item.
                CLEAR i_goodsmvt_item.
                "i_goodsmvt_item-move_type  = 'Z01'. "Clase mov.
                "i_goodsmvt_item-material   = i_listado-matnr. "Material
                "i_goodsmvt_item-plant      = '1000'. "Centro
                "i_goodsmvt_item-stge_loc   = '0001'. "Almacen
                i_goodsmvt_item-entry_qnt  = '1'. "Cantidad
                i_goodsmvt_item-entry_uom  = 'ST'. "Unidad
                i_goodsmvt_item-RESERV_NO  = '2033348'. "Número de Reserva
                i_goodsmvt_item-RES_ITEM   = '0001'. "Número de posición de reserva/necesidades secundarias
                i_goodsmvt_item-RES_TYPE   = ' '. "Clase de registro
                i_goodsmvt_item-MVT_IND    = ' '.  "Indicador de movimiento
                "i_goodsmvt_item-NO_MORE_GR = 'X'.  "Indicador de entrega final
                "i_goodsmvt_item-WITHDRAWN  = 'X'.  "Salida final de la reserva
                "i_goodsmvt_item-quantity  = i_listado-menge.  "Cantidad
                "i_goodsmvt_item-BASE_UOM  = i_listado-meins.  "Unidad
                "i_goodsmvt_item-mvt_ind   = 'B'.   "Indicador de movimiento
                "i_goodsmvt_item-po_number = i_listado-ebeln.  "Ref.a pedido
                "i_goodsmvt_item-po_item   = i_listado-ebelp.
          
                APPEND i_goodsmvt_item.
          
                REFRESH: i_return. CLEAR i_return.
                CLEAR l_mblnr.
                CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
                  EXPORTING
                    goodsmvt_header  = l_goodsmvt_header
                    goodsmvt_code    = l_goodsmvt_code
                    testrun          = ' '
                  IMPORTING
                    goodsmvt_headret = l_goodsmvt_headret
                    "materialdocument = l_mblnr
                    "matdocumentyear  = l_mjahr
                  TABLES
                    goodsmvt_item    = i_goodsmvt_item
                    return           = i_return.
          
              IF sy-subrc = 0.                                    "TABLA DE SALIDA BAPI
                COMMIT WORK.
                LOOP AT i_return.
                  NEW-LINE.
                  WRITE: i_return-message.
                  NEW-LINE.
                ENDLOOP.
              ENDIF.
          Gracias.

          Comentario

          • mysmb2
            Senior Member
            • ene
            • 406

            #6
            si la tabla de retorno viene vacía es que realizo el movimiento,
            descomenta las lineas
            Código:
                      "materialdocument = l_mblnr
                      "matdocumentyear  = l_mjahr
            asi te trae el doc, generado.
            Sebastián Chiavia
            http://www.programacionabap.com.ar

            Comentario

            • luisalejan1308
              Junior Member
              • feb
              • 12

              #7
              Si ya noté eso mysmb2!!! Crea el documento material perfectamente!!

              Mil gracias mysmb2!!

              Comentario

              Trabajando...