Bapi_goodsmvt_create

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • AJAAVE

    #1

    Bapi_goodsmvt_create

    Buenas Tardes.

    Estoy realizando a través de la bapi BAPI_GOODSMVT_CREATE una entrada de mercancias con referencia a un documento de Entrega con el movimiento 101, esto me funciona perfecto, mas sin embargo, si trato de anular el documento creado por la MIGO, me lanza el siguiente error: No se ha podido actualizar el flujo de documentos para la entrega, de hecho la entrada de mercancia la puedo realizar varias veces, parareciera que me falta algo al momento de pasarle a la bapi, he probado pasando varias cosas y nada, aca les dejo el codigo haber que ven.

    Código:
    METHOD LOAD_BAPI_GOODSMVT_CREATE.
      FIELD-SYMBOLS: <WA_DET2> TYPE TY_DET1,
                     <WA_ITEM_CREATE> TYPE BAPI2017_GM_ITEM_CREATE,
                     <WA_CAB>  TYPE ZMM_TXTCAB_T,
                     <WA_RETURN> TYPE BAPIRET2,
                     <WA_LOG> TYPE ZSTR_MES_LOG.
    
      DATA: L_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
            L_GOODSMVT_CODE   TYPE BAPI2017_GM_CODE,
            IT_GOODSMVT_ITEM  TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
            L_GM_HEAD_RET     TYPE BAPI2017_GM_HEAD_RET,
            IT_RETURN         TYPE TABLE OF  BAPIRET2.
    
      READ TABLE IT_CAB ASSIGNING <WA_CAB> INDEX 1.
    
      LOOP AT IT_DET2 ASSIGNING <WA_DET2>.
    
        AT NEW VBELN.
    * Datos de Cabecera
          CLEAR IT_GOODSMVT_ITEM.
          CLEAR IT_RETURN.
          L_GOODSMVT_HEADER-PSTNG_DATE = <WA_CAB>-FEC_CON.
          L_GOODSMVT_HEADER-DOC_DATE   = <WA_CAB>-FEC_DOC.
          IF <WA_CAB>-TIP_PRO = '1'.
            L_GOODSMVT_HEADER-HEADER_TXT = <WA_CAB>-NOM_TXT.
          ENDIF.
          L_GOODSMVT_HEADER-REF_DOC_NO = <WA_DET2>-VBELN.
    *      L_GOODSMVT_HEADER-REF_DOC_NO_LONG = <WA_DET2>-VBELN.
    * Tipo de movimiento
          L_GOODSMVT_CODE-GM_CODE = '01'.
        ENDAT.
    * Posiciones
        APPEND INITIAL LINE TO IT_GOODSMVT_ITEM ASSIGNING <WA_ITEM_CREATE>.
        <WA_ITEM_CREATE>-MATERIAL  = <WA_DET2>-MATNR.
        <WA_ITEM_CREATE>-STGE_LOC  = '2001'.
        <WA_ITEM_CREATE>-MOVE_TYPE = '101'.
        <WA_ITEM_CREATE>-ENTRY_QNT = <WA_DET2>-CANTIDAD.
        <WA_ITEM_CREATE>-NO_MORE_GR = 'X'.
        <WA_ITEM_CREATE>-MVT_IND = 'B'.
    *    <WA_ITEM_CREATE>-DELIV_NUMB = <WA_DET2>-VBELN.
    *    ME->READ_LIPS( EXPORTING I_VBELN = <WA_DET2>-VBELN
    *                             I_MATNR = <WA_DET2>-MATNR
    *                   CHANGING  C_POS   = <WA_ITEM_CREATE>-DELIV_ITEM ).
    
        <WA_ITEM_CREATE>-DELIV_NUMB_TO_SEARCH = <WA_DET2>-VBELN.
        ME->READ_LIPS( EXPORTING I_VBELN = <WA_DET2>-VBELN
          I_MATNR = <WA_DET2>-MATNR
        CHANGING  C_POS   = <WA_ITEM_CREATE>-DELIV_ITEM_TO_SEARCH ).
    
    
        AT END OF VBELN.
          CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
            EXPORTING
              GOODSMVT_HEADER  = L_GOODSMVT_HEADER
              GOODSMVT_CODE    = L_GOODSMVT_CODE
            IMPORTING
              GOODSMVT_HEADRET = L_GM_HEAD_RET
            TABLES
              GOODSMVT_ITEM    = IT_GOODSMVT_ITEM
              RETURN           = IT_RETURN.
    
          IF SY-SUBRC = 0.
            IF IT_RETURN IS INITIAL.
              ME->LOAD_ZMM_TRAENT( EXPORTING I_ORI = '1'
                                             I_VBELN = <WA_DET2>-VBELN
                                             I_MBLNR = L_GM_HEAD_RET-MAT_DOC ).
              COMMIT WORK AND WAIT.
              APPEND INITIAL LINE TO IT_LOG ASSIGNING <WA_LOG>.
              <WA_LOG>-ICON = ICON_GREEN_LIGHT.
              CONCATENATE L_GM_HEAD_RET-MAT_DOC TEXT-015 INTO <WA_LOG>-MESSAGE SEPARATED BY SPACE.
            ELSE.
              LOOP AT IT_RETURN ASSIGNING <WA_RETURN>.
                APPEND INITIAL LINE TO IT_LOG ASSIGNING <WA_LOG>.
                MOVE-CORRESPONDING <WA_RETURN> TO <WA_LOG>.
                <WA_LOG>-ICON = ICON_RED_LIGHT.
                CONCATENATE <WA_DET2>-VBELN ':' <WA_LOG>-MESSAGE INTO <WA_LOG>-MESSAGE SEPARATED BY SPACE.
              ENDLOOP.
            ENDIF.
          ENDIF.
        ENDAT.
      ENDLOOP.
      UNASSIGN <WA_CAB>.
      UNASSIGN <WA_DET2>.
      UNASSIGN <WA_ITEM_CREATE>.
      UNASSIGN <WA_RETURN>.
      UNASSIGN <WA_LOG>.
    gracias de antemano por la ayuda prestada
  • AJAAVE

    #2
    Listo solucionado, no se porque tanto aqui:

    Código:
         
    <WA_ITEM_CREATE>-DELIV_NUMB = <WA_DET2>-VBELN.
     ME->READ_LIPS( EXPORTING I_VBELN = <WA_DET2>-VBELN
                                            I_MATNR = <WA_DET2>-MATNR
                            CHANGING  C_POS   = <WA_ITEM_CREATE>-DELIV_ITEM ).
    Como aqui hay que pasarle la entrega:

    <WA_ITEM_CREATE>-DELIV_NUMB_TO_SEARCH = WA_ITEM_CREATE>-DELIV_NUMB.
    <WA_ITEM_CREATE>-DELIV_ITEM_TO_SEARCH = <WA_ITEM_CREATE>-DELIV_ITEM.

    Comentario

    Trabajando...