Importante
La siguiente respuesta es generada por nuestro Robot de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de IA -inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No podemos garantizar que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información. Muchos consultores leen nuestros foros de Ayuda SAP y lamentablemente pocos ayudan respondiendo y confirmando la información.
Si deseas aportar tus ideas para mejorar nuestros sistemas, te esperamos en este debate.
¡Hola! Gracias por tu consulta. Este caso es muy común en reportes de compras de SAP Business One (SAP B1), donde las facturas de proveedores que fueron parcial o totalmente devueltas siguen apareciendo como parte del total de compras, generando confusión en reportes financieros y de gestión.
La imagen que compartes es muy ilustrativa: se ve claramente la relación entre el pedido → entrada de mercancías → factura → devolución → nueva factura → pago.
Objetivo
Quieres excluir de tu informe de compras:
- Facturas que se generaron como consecuencia de una devolución.
- Idealmente también, notas de crédito proveedor.
¿Cómo hacerlo?
Puedes ajustar tu consulta SQL (o Crystal Reports) filtrando las facturas que tienen un documento base que es una devolución. Esto se hace analizando la relación entre los documentos usando los campos:
BaseEntry
BaseType
ObjType
Ejemplo de lógica para excluir facturas basadas en devoluciones
Los documentos en SAP B1 tienen los siguientes ObjType
:
- Entrada de mercancías:
20
- Factura proveedor:
18
- Devolución mercancía proveedor:
21
- Nota de crédito proveedor:
19
La lógica es: si una factura (OPCH
) tiene como base una devolución de mercancía (ObjType = 21
), entonces la excluimos del informe.
Consulta SQL ejemplo (simplificada):
SELECT
P.DocNum,
P.DocDate,
P.CardName,
P.DocTotal
FROM OPCH P -- Facturas de proveedores
LEFT JOIN PCH1 L ON P.DocEntry = L.DocEntry
LEFT JOIN PDN1 B ON L.BaseEntry = B.DocEntry AND L.BaseType = B.ObjType
WHERE NOT EXISTS (
SELECT 1
FROM PCH1 F
WHERE F.DocEntry = P.DocEntry
AND F.BaseType = 21 -- Dev. de mercancía
)
AND P.CANCELED = 'N' -- No canceladas
AND P.DocStatus = 'O' -- Opcional: sólo abiertas o cerradas
También puedes ajustar el filtro con:
AND P.ObjType = 18 -- Solo facturas proveedor
O incluso, si usas Crystal Reports y estás vinculando tablas en base a las relaciones de documento, puedes aplicar este filtro como condición dentro de la fórmula o el Record Selection Formula
.
Alternativas adicionales
- Si tu informe incluye notas de crédito, y quieres excluirlas también, puedes simplemente excluir
ObjType = 19
.
- Puedes agregar una columna para mostrar si una factura fue generada a partir de una devolución, para mayor visibilidad.
- Si estás usando Query Manager, asegúrate de mostrar en columnas el
BaseType
y BaseEntry
para que los usuarios lo identifiquen también visualmente.
Este tipo de ajustes finos son muy recomendados cuando los reportes de compras se usan para análisis gerenciales o auditoría. Muchos usuarios han compartido variantes de estas consultas en el foro de Consultoria-SAP.com, ¡búscalo como “excluir notas de crédito en informes de compras”!
Resumen Consultoria-SAP
En SAP B1, para excluir facturas de proveedor que se generaron desde devoluciones o relacionadas con notas de crédito, debes aplicar filtros basados en los campos BaseType
y ObjType
. Esto te permitirá limpiar el informe de compras y mostrar solo las facturas efectivas sin operaciones devolutivas. Este ajuste aplica principalmente en los módulos de Compras (MM) y Finanzas (FI).
¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!