Votre ERP SAP sait déjà facturer. Le trou n’est pas « comment créer une facture » : c’est produire un UBL EN16931 que votre chaîne aval peut valider avant la remise à une plateforme. Les données sont dans SD/FI ; la syntaxe UBL et les Business Terms sont ailleurs.
Cet article décrit un mapping documentaire et un preflight fichier. Ce n’est pas un connecteur Plateforme Agréée, pas un add-on d’émission Chorus, pas un jugement réglementaire. Les versions d’artefacts côté runtime FacturX API se lisent sur GET /meta — ne pas inventer un numéro de pack non exposé.
En bref
- UBL EN16931 est un autre format XML pour le même modèle de données que le CII ; SAP ne « parle » ni l’un ni l’autre nativement.
- Les nœuds utiles viennent surtout de la pièce de facturation SD/FI (entête, partenaires, lignes, taxes, conditions).
- ECC6 et S/4HANA ne cassent pas au même endroit : partenaires, unités, références externes.
- Le PDF lisible et le XML UBL sont deux livrables ; les confondre crée des rejets « fichier » alors que le métier est correct.
- Un preflight documentaire (structure XML, règles métier, totaux) avant remise évite de découvrir l’erreur chez le destinataire.
Quels nœuds SAP alimentent un UBL EN16931
Pensez en Business Terms, pas en tables. Une facture UBL a besoin au minimum de :
| Besoin EN16931 (idée) | Sources SAP typiques | Risque fréquent |
|---|---|---|
| Identifiant + date + type doc | VBRK / facture SD, type de facture | Type UNTDID 1001 mal mappé (380 vs 381) |
| Vendeur / acheteur | Partenaires AG, RE, RG, WE | SIRET/TVA absents ou schemeID incorrect |
| Lignes | VBRP + conditions | Quantité / unité UNECE manquante |
| Totaux et TVA | Ventilation fiscale | Écart ligne ↔ totaux (BR-CO-*) |
| Références | Commande, contrat, BL | Champs présents en FI mais absents du XML |
Le mapping n’est pas « exporter IDoc → fichier ». C’est une projection déterministe : chaque BT a une règle, un format (dates ISO, décimaux point), une cardinalité.
Pour un autre chemin (JSON ERP → CII Factur-X), voir Données ERP → Factur-X CII. Ici la cible est UBL, pas le conteneur PDF/A-3 Factur-X.
ECC6 vs S/4 : où le mapping casse
Trois familles de divergences reviennent en intégration :
- Partenaires et BP — S/4 unifie davantage les Business Partners ; ECC6 laisse des trous (adresse incomplète, identifiant fiscal sur un partenaire « fantôme »).
- Unités et matériaux — codes unités internes ≠ codes UNECE attendus en UBL (
C62,HUR…). Un convertisseur d’unités doit être explicite dans le mapping, pas « magique ». - Références croisées — numéros de commande acheteur, comptes analytiques : utiles métier, parfois hors modèle EN16931. Les garder en extensions non standard casse l’interopérabilité.
Si votre flux SAP → Chorus ou SAP → UBL existe déjà via un add-on historique, ne le confondez pas avec ce guide : l’add-on résout un canal ; ce texte résout la qualité du fichier UBL avant n’importe quel canal.
Pièces jointes et lisible vs XML
Deux objets distincts :
- XML UBL — la vérité machine (totaux, parties, lignes).
- PDF lisible — la vérité humaine pour archivage / litige.
Les coller dans le même message sans politique claire produit des tickets du type « le PDF dit 1200 €, l’XML dit 1199,98 € ». Décidez une source de vérité pour les montants (en pratique : le XML validé) et générez le PDF depuis les mêmes totaux — ou acceptez un écart documenté, mais ne le laissez pas implicite.
Factur-X (PDF/A-3 + CII) est un autre conteneur. Voir Factur-X vs UBL vs CII.
Contrôles documentaires avant remise
Avant de pousser le fichier vers une PA, un EDI ou un partenaire :
- XSD UBL — le document parse.
- Schematron EN16931 — les BR-* métier (totaux, TVA, parties).
- Cohérence arithmétique — somme des lignes = totaux document.
- Identifiants — schemeID SIRET / TVA / GLN cohérents avec le pays.
- Jeu de fixtures — au moins une facture standard, un avoir, une multi-taux.
Le détail des contrôles type « avant PA » côté Factur-X est dans Scanner avant envoi PA. Pour UBL pur, le même réflexe s’applique : preflight fichier.
Diff UBL vs Factur-X CII pour un flux déjà Chorus
Si votre historique est « SAP → Factur-X / Chorus », vous avez peut-être déjà un CII correct. Passer à UBL n’est pas recopier les balises : c’est re-binder les mêmes BT vers cbc: / cac:. Pièges classiques : namespaces, structure des parties, codes unités et schemeID.
Jeu de fixtures à figer pour un Sprint
- Facture mono-taux EUR, deux lignes, SIRET vendeur + acheteur.
- Facture multi-taux (ex. 5,5 % + 20 %).
- Avoir (type 381) qui référence la facture d’origine.
- Cas partenaire incomplet (doit échouer le preflight).
- Cas unité interne non mappée UNECE (doit échouer).
Versionnez les XML attendus. Ajoutez un job CI qui reste rouge sur les mutants. Voir Valider en CI GitHub Actions.
Limites assumées
- Pas de conseil sur quelle PA choisir, ni sur un calendrier d’obligation.
- Pas de connecteur SAP certifié décrit ici.
- Les packs réellement exécutés par FacturX API : preuve
/meta.
— Équipe FacturX API
Continuer la lecture
Articles liés
Convertir un Factur-X EN16931 en UBL pour un destinataire belge — sans re-saisir
Passer du CII embarqué d'un Factur-X vers UBL en conservant le PDF joint : table de mapping, champs souvent absents, Peppol vs circuit FR, recette à deux syntaxes.
Lire l’article →Factures d'honoraires immobiliers en Factur-X : mapping des lignes et des tiers
Honoraires de cabinet (pas le loyer) en Factur-X : qui est seller/buyer, lignes et TVA, SIRET/TVA des propriétaires, PDF cabinet vs XML, preflight avant PA partenaire.
Lire l’article →Champs obligatoires EN16931/Factur-X : cartographie et mapping ERP → XML
Quels champs sont obligatoires pour une facture EN16931 conforme ? Cartographie des Business Terms, mapping vers les champs ERP courants, et erreurs fréquentes de configuration.
Lire l’article →Étape suivante recommandée
Vous avez un export SAP et vous voulez un UBL contrôlé avant remise.
Voici ce que vous allez obtenir :
- Figer 5 fixtures (dont 2 mutants)
- Mapper parties + unités UNECE en priorité
- Ajouter un job CI sur les XML UBL
- Lire le comparatif Factur-X / UBL / CII