Subcontratación con función BAPI_GOODSMVT_CREATE

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Member
    • ago
    • 35

    #1

    Subcontratación con función BAPI_GOODSMVT_CREATE

    Hola.

    Comparto esto que estuve buscando durante mucho tiempo y nunca encontré algo publicado.

    Cómo utilizar la función BAPI_GOODSMVT_CREATE para el registro de los movimientos de subcontratación?

    Un proceso de subcontratación es aquel en que enviamos materiales a un proveedor que les realiza una transformación y nos lo devuelve (como otro producto). El material que se envía lo denominamos componente, surge de la Lista de Materiales del Producto que compramos al Proveedor y es el que se va a consumir al realizar el alta en stock del producto que nos entrega el Proveedor.
    En la transformación realizada por el Proveedor también se pueden obtener desperdicios o subproductos que queremos registrar en stock.


    En general en un proceso de subcontratación tenemos tres tipos de movimientos de materiales.

    - Movimiento 101 para el material recibido (producido por el proveedor).
    - Movimiento 543 para el material consumido. Este es el componente que enviamos al proveedor y que el mismo utiliza para la producción del material que luego entrega.
    - Movimiento 545 para la generación del subproducto que se puede generar por el proceso productivo por parte del proveedor.


    En esta BAPI se completan las siguientes tres Tablas.


    GOODSMVT_HEADER

    PSTNG_DATE Fecha de Contabilización
    DOC_DATE Fecha de Documento
    REF_DOC_NO Nota de Entrega
    HEADER_TXT Texto de Cabecera


    GOODSMVT_CODE
    se indica el valor 01.


    GOODSMVT_ITEM

    Para el primer ítem que se recepciona.

    MATERIAL 100000001
    PLANT 1000
    STGE_LOC AL01
    BATCH LOTE_00001
    MOVE_TYPE 101
    VENDOR 100000001
    ENTRY_QNT 1.000,000
    ENTRY_UOM KG
    PO_NUMBER 4500000000
    PO_ITEM 00010
    MVT_IND B
    LINE_ID 000001
    PARENT_ID 000000

    MATERIAL 111000001
    PLANT 1000
    BATCH LOTE_FA001
    MOVE_TYPE 543
    ENTRY_QNT 1.100,000
    ENTRY_UOM KG
    LINE_ID 000002
    PARENT_ID 000001

    MATERIAL 5000001
    PLANT 1000
    MOVE_TYPE 545
    ENTRY_QNT 100,000
    ENTRY_UOM KG
    LINE_ID 000003
    PARENT_ID 000001


    Ejemplo si tenemos un Segundo ítem que se recepciona.

    MATERIAL 100000002
    PLANT 1000
    STGE_LOC AL01
    BATCH LOTE_00002
    MOVE_TYPE 101
    VENDOR 100000001
    ENTRY_QNT 1.000,000
    ENTRY_UOM KG
    PO_NUMBER 4500000000
    PO_ITEM 00020
    MVT_IND B
    LINE_ID 000004
    PARENT_ID 000000

    MATERIAL 111000002
    PLANT 1000
    BATCH LOTE_FA002
    MOVE_TYPE 543
    ENTRY_QNT 1.200,000
    ENTRY_UOM KG
    LINE_ID 000005
    PARENT_ID 000004

    MATERIAL 5000001
    PLANT 1000
    MOVE_TYPE 545
    ENTRY_QNT 200,000
    ENTRY_UOM KG
    LINE_ID 000006
    PARENT_ID 000004



    Si tuviéramos un tercer ítem que se está recibiendo y suponemos que tiene 2 componentes y 2 subproductos.

    MATERIAL 100000003
    PLANT 1000
    STGE_LOC AL01
    BATCH LOTE_00003
    MOVE_TYPE 101
    VENDOR 100000001
    ENTRY_QNT 1.000,000
    ENTRY_UOM KG
    PO_NUMBER 4500000000
    PO_ITEM 00030
    MVT_IND B
    LINE_ID 000007
    PARENT_ID 000000

    MATERIAL 111000003
    PLANT 1000
    BATCH LOTE_FA003
    MOVE_TYPE 543
    ENTRY_QNT 1.300,000
    ENTRY_UOM KG
    LINE_ID 000008
    PARENT_ID 000007

    MATERIAL 111000004
    PLANT 1000
    BATCH LOTE_FA004
    MOVE_TYPE 543
    ENTRY_QNT 1.400,000
    ENTRY_UOM KG
    LINE_ID 000009
    PARENT_ID 000007

    MATERIAL 5000001
    PLANT 1000
    MOVE_TYPE 545
    ENTRY_QNT 300,000
    ENTRY_UOM KG
    LINE_ID 000010
    PARENT_ID 000007

    MATERIAL 5000002
    PLANT 1000
    MOVE_TYPE 545
    ENTRY_QNT 400,000
    ENTRY_UOM KG
    LINE_ID 000011
    PARENT_ID 000007



    Lo que se hace es ir combinando las posiciones con los campos LINE_ID y PARENT_ID.

    LINE_ID comienza en 000001 y se va incrementando en 1 con cada línea que se completa en la tabla.
    PARENT_ID = 000000 indica que es la posición que se está recibiendo por lo que no depende de nadie.
    PARENT_ID con valor indica la posición de la que depende la línea que se está registrando. Esto es para el consumo o la generación del subproducto.


    De esta forma se establecen las relaciones.

    El Primero producto que se recibe tiene:
    LINE_ID 000001
    PARENT_ID 000000
    Es por esto que los productos dependientes de esta línea (componente y subproducto) tienen PARENT_ID 000001.

    El Segundo producto que se recibe tiene:
    LINE_ID 000004
    PARENT_ID 000000
    Es por esto que los productos dependientes de esta línea (componente y subproducto) tienen PARENT_ID 000004.

    El Tercer producto que se recibe tiene:
    LINE_ID 000007
    PARENT_ID 000000
    Es por esto que los productos dependientes de esta línea (componente y subproducto) tienen PARENT_ID 000007.



    Luego pueden darse varias combinaciones con lo que se tiene que adecuando esto.

    - Es posible que un Producto que se está recibiendo tenga un único componente (543) y un único Co-Producto (545).
    - Es posible que un Producto que se está recibiendo tenga un único componente (543) y varios Co-Productos (545).
    - Es posible que un Producto que se está recibiendo tenga varios componentes (543) y un único Co-Producto (545).
    - Es posible que un Producto que se está recibiendo tenga varios componentes (543) y varios Co-Productos (545).
    - Es posible que un Producto que se está recibiendo tenga un único componente (543) y no tenga Co-Producto (545).
    - Es posible que un Producto que se está recibiendo tenga un varios componentes (543) y no tenga Co-Productos (545).



    Espero que les sirva.
    Saludos.
Trabajando...