Cómo funcionan las facturas en SAP: vbrk, vbrp y prcd_elements

Cuando trabajas con facturación en SAP, es fácil pensar que una factura es simplemente un documento con importes pero técnicamente, SAP lo organiza de una forma mucho más estructurada.

Una factura es un modelo de datos estructurado con tres niveles bien diferenciados:

Cabecera → Datos generales de la factura (quién, cuándo, número)
Posiciones → Qué se factura (materiales, servicios, cantidades)
Condiciones → Cómo se calculan los importes (precios, descuentos, impuestos)

Estas tres tablas, VBRK, VBRP y PRCD_ELEMENTS, son la base técnica de cualquier documento de factura.

VBRK – Cabecera de factura

VBRK contiene una fila por factura.

Campos importantes que debes conocer

Identificación del documento

CampoDescripciónEjemplo
VBELNNúmero de factura (clave)900001
FKDATFecha de la factura2024-01-15
FKARTTipo de factura (clase de factura)F2 (factura estándar), ZINV (factura custom), etc
VBTYPTipo lógico de documentoM → factura normal, N → cancelación, etc

Roles de cliente

SAP distingue varios roles de cliente en la cabecera. El más usado para facturación es KUNRG:

CampoRolDescripción¿Cuándo se usa?
KUNAGSold-to partyQuién contrata o compraRelación comercial
KUNRGPayerQuién paga la facturaFacturación (agrupa por este campo)
KUNREBill-to partyA quién se envía la facturaFacturación externa
KUNWEShip-to partyQuién recibe la mercancíaLogística (menos relevante)

Regla práctica: En facturación, los documentos se agrupan por KUNRG (pagador), no por KUNAG. Por eso al buscar datos de cliente desde una factura, debes usar KUNRG para enlazar con KNA1.

Pricing (enlace a los importes)

CampoDescripción
KNUMVNúmero de pricing → clave que conecta con PRCD_ELEMENTS
KALSMEsquema de precios (procedimiento de cálculo)

KNUMV NO es dinero. Es un ID que apunta a la tabla donde realmente están los importes, es decir, es una referencia hacia PRCD_ELEMENTS

Cancelaciones

CampoDescripción
FKSTO'X' si la factura está cancelada (marca en la factura original)
SFAKNNúmero de la factura original (aparece en la fila de la factura de cancelación)

Ejemplo real de cancelación:

Factura original:    VBELN = 900001, VBTYP = 'M', SFAKN = '', FKSTO = 'X'
Factura cancelación: VBELN = 900002, VBTYP = 'N', SFAKN = 900001, FKSTO = ''

VBRP – Posiciones de factura

VBRP contiene una fila por línea de factura. Es cada línea que el cliente ve en el documento.

Campos importantes

CampoDescripción
VBELNNúmero de factura (clave foránea a VBRK)
POSNRNúmero de posición (000010, 000020, …)
MATNRMaterial o servicio facturado
ARKTXTexto de la línea (descripción visible en la factura)
LMENGCantidad facturada
PRSDTFecha de precio
FBUDAFecha contable

⚠️ Importante: VBRP NO tiene el importe final, solo contiene cantidades y datos descriptivos. El importe está en PRCD_ELEMENTS. La relación se hace mediante: VBRP-VBELN + VBRP-POSNRPRCD_ELEMENTS-KNUMV + PRCD_ELEMENTS-KPOSN

PRCD_ELEMENTS – Elementos de precios

Esta es la tabla más importante y más incomprendida de la facturación. PRCD_ELEMENTS NO es una tabla de facturas. Es una tabla que documenta cómo SAP llegó al precio final, paso a paso.

SAP no guarda un precio final directamente. Guarda una lista de pasos de cálculo (condiciones). Cada paso es una fila en PRCD_ELEMENTS.

Ejemplo real de cálculo:

PasoConceptoCálculoImporte
1Precio base100 €100 €
2Descuento 10%-10 €90 €
3IVA 10%+9 €99 €
Total99 €

SAP guarda cada línea de este cálculo como una condición en PRCD_ELEMENTS.

Campos clave de PRCD_ELEMENTS

Identificación

CampoDescripción
KNUMVNúmero de pricing (viene de VBRK-KNUMV)
KPOSNPosición dentro del pricing: 000010 = posición 10, etc.

Tipo de condición

CampoDescripciónEjemplos típicos
KSCHLClave de condiciónPR00 (precio base), K004 (descuento), MWST (IVA), ZXXX (custom)

SAP no entiende de «descuento» o «IVA». Solo entiende de KSCHL. El significado semántico lo defines tú en la configuración.

Importes

CampoDescripción
KWERTValor de la condición (en moneda) → el importe real
KBETRPorcentaje (si la condición es un porcentaje)
WAERSMoneda

¿Qué es un esquema de cálculo (KALSM)?

KALSM es el procedimiento de precios (pricing procedure). Define:

  • Qué tipos de condición (KSCHL) existen
  • En qué orden se calculan
  • Qué subtotal generan
  • Qué es descuento, recargo, IVA, etc.

Cada factura tiene un KALSM en VBRK. Ese esquema determina cómo se comportan las condiciones de PRCD_ELEMENTS.

Las tablas VBRK, VBRP y PRCD_ELEMENTS forman el triángulo de la facturación en SAP:

  • VBRKLa cabecera: quién, cuándo, número
  • VBRPLas líneas: qué se vende, cuánto
  • PRCD_ELEMENTSLos importes: cómo se calcula el precio final