viernes, 26 de diciembre de 2014

Guía de Procesos SAP MM: El Escenario de Subcontratación de Proveedores (Subcontracting)


Subcontratación de Vendedores.
 

El proceso de subcontratación de proveedores es un escenario logístico crítico y muy común en la industria manufacturera y de ensamblaje. Ocurre cuando una compañía (el cliente) diseña un producto pero delega la producción, ensamble o transformación física a un tercero experto (el proveedor subcontratista).

En este modelo, el cliente compra y suministra las materias primas o componentes necesarios al proveedor. El subcontratista ejecuta el proceso industrial, consume los componentes y entrega de regreso el producto terminado. El cliente solo paga al proveedor por el "servicio de maquila o ensamble".

Ejemplos Reales en la Industria

  • Sector Tecnológico: Una compañía diseña un teléfono inteligente a nivel global pero no posee plantas de fabricación. Compra las pantallas, procesadores y baterías a distintos fabricantes y los envía al almacén de un subcontratista, quien ensambla el teléfono móvil final y lo devuelve empaquetado.

  • Sector Automotriz: Una planta de vehículos adquiere bloques de acero y pistones, y los transfiere a un proveedor especializado para que realice el ensamble completo de los motores. Una vez listos, regresan a la línea de producción principal del fabricante de autos.

Flujo de Subcontratación Completo en SAP ERP / S/4HANA

A continuación, se detalla la secuencia de ejecución técnica, los tipos de movimientos de inventario y las transacciones estándar involucradas en SAP:

1. Creación de la Orden de Compra (Pedido)

El proceso inicia en la transacción ME21N. La clave para activar este escenario es asignar la Categoría de Posición "L" (Subcontratación) en la línea del documento.

  • Al ingresar el material terminado, el sistema explota de forma automática la Lista de Materiales (BOM) para determinar qué componentes se deben suministrar al proveedor. También es posible ingresarlos manualmente en el botón de "Componentes".

  • El precio neto indicado en el pedido corresponde exclusivamente al costo del servicio de ensamble (maquila).

  • Práctica recomendada: Mantener un Registro Info de Compras (Info Record) específico para la categoría de subcontratación, vinculando el material, el proveedor y el centro.

2. Suministro y Traslado de Materias Primas

Los componentes de la BOM deben despacharse desde el almacén propio hacia el stock especial del proveedor (Stock de subcontratación). Existen tres alternativas en SAP para registrar esta salida física:

  • ME20 / ME2ON (Monitor de Stock SC): Es la herramienta estándar y recomendada para monitorear el inventario pendiente de entrega. Permite generar la salida de mercancías con el tipo de movimiento 541.

  • MB1B / MIGO (Traspaso): Permite realizar el traslado manual utilizando el movimiento 541 (Traspaso a stock de material provisto al proveedor). El stock sigue perteneciendo a la compañía, pero cambia su estado a "vendedor".

  • MIGO (Directo con referencia): Envío directo de componentes haciendo referencia a la orden de compra si el proveedor de materia prima entrega directamente en el subcontratista.

3. Recepción del Producto Terminado e Impacto en Inventarios

Cuando el proveedor entrega el producto final (ej. el teléfono o el motor), se registra la entrada en la transacción MIGO utilizando la opción Entrada de mercancías por pedido (Tipo de movimiento 101).

Al contabilizar esta transacción, el sistema realiza una operación síncrona en dos posiciones dentro del mismo documento de material:

[MIGO: Entrada de Mercancías - Movimiento 101]
   │
   ├── Posición 1: Entrada del Producto Terminado ──────► Tipo Mov. 101 (Suma al stock propio)
   │
   └── Posición 2: Consumo Automático de Componentes ──► Tipo Mov. 543 (Resta del stock del proveedor)

📊 Impacto Contable: Si el material está valorado, esta transacción genera automáticamente el documento contable, donde se incrementa el valor del inventario de producto terminado, se da de baja el inventario de materias primas consumidas y se provisiona el costo del servicio de maquila (cuenta EM/RF).

4. Gestión de Rechazos, Desechos y Subproductos

Durante el proceso industrial es normal que ocurran pérdidas o sobrantes (por ejemplo, el 2% de desperdicio en pantallas o viruta de acero en el maquinado de piezas). SAP maneja este inventario residual de la siguiente manera:

  • Manejo de Desechos o Rechazos: Si el proveedor notifica un desecho mayor o menor al planificado en la BOM al momento de la entrega, se puede ajustar la cantidad de consumo en la MIGO. El sistema realiza un movimiento 545 en la ubicación del proveedor para registrar mermas o devoluciones. Si los componentes dañados se traen de vuelta a la planta, se utiliza el movimiento 542.

  • Tratamiento de Subproductos: Si el proceso genera un subproducto valioso (residuos reciclables, partes sobrantes utilizables), este se planifica en la BOM con cantidad negativa. Al recibir el producto terminado, el sistema ingresará automáticamente el subproducto al stock del proveedor con el movimiento 544 (o 545 dependiendo de la configuración), quedando disponible para ser retornado al centro propio con el movimiento 542.

5. Verificación de Facturas y Pago

El cierre del ciclo comercial e impositivo sigue el estándar del módulo logístico y financiero:

  • Recepción y Verificación de Factura: Se ejecuta en la transacción MIRO contra la orden de compra de subcontratación. Aquí se concilia el cobro que hace el proveedor estrictamente por el servicio de manufactura o ensamble prestado.

  • Gestión de Pago al Proveedor: El seguimiento de las cuentas por pagar y la posterior programación del pago se analiza y gestiona en el módulo de Finanzas (FI-AP) mediante el reporte de partidas abiertas en la transacción FBL1N.


lunes, 8 de diciembre de 2014

Como Visualizar las BADIS que se ejecutan en una transacción

1- Ingresar a la transacción SE80.

2- Seleccionar "Clase/Interface" y poner el nombre: "CL_EXITHANDLER" doble click en el método GET_INSTANCE.



3- Poner un break en:   CALL METHOD cl_exithandler=>get_class_name_by_interface y otro en uno de los When del Case del SY-SUBRC.



4- En la variable "exit_name" se verán las BADIS que se ejecutan en cada momento.

5- Visualizar las BADIS que encontré, usando la transacción SE18.

6- Para implementar la BADI que encontré se hace los siguiente:

6.1- Ingresar a la transacción SE19 y en BADI clásico pongo el nombre que encontré y le doy click al botón "Implementar", se diligencia el nombre iniciando con la letra  Z, a continuación se pide una descripción y listo

Como construir un WHERE dinamico en ABAP


1. Definir una variable tipo CHAR para almacenar las condiciones.

    lv_cond(72) TYPE c,

2. Definir una variable tipo tabla para adicionar la variable lv_cond.

    li_tab LIKE TABLE OF char72.

3. Validar si la variable esta asignada y adicionarla a las condicones

    IF lv_source IS NOT INITIAL.
        CONCATENATE '<campo>=' lv_source  INTO lv_cond SEPARATED BY space.
        APPEND lv_cond TO li_tab.
    ENDIF.