ERP-Dateneingabe aus Technischen Zeichnungen mit SAP automatisieren

· Written by Jochen Mattes

Verfügbar in:

Sie können Maße, Werkstoffe, Toleranzen und Schriftfelddaten aus 2D-Technischen Zeichnungen direkt in SAP übertragen — ganz ohne manuelle Neueingabe. Dieser Artikel beschreibt die Architektur, das Feld-Mapping und funktionsfähigen Code für eine Werk24-zu-SAP-Integration, die stundenlanges Abtippen pro Zeichnung durch einen 15-sekündigen API-Aufruf ersetzt.


Warum das wichtig ist

Jedes produzierende Unternehmen, das SAP einsetzt, kennt denselben Engpass: Jemand erhält eine Technische Zeichnung (PDF oder Scan), liest sie manuell und tippt die extrahierten Daten in SAP-Transaktionen ein — MM01 für Materialstämme, CS01 für Stücklisten, CA01 für Arbeitspläne, QM für Prüfmerkmale. Der Prozess ist:

  • Langsam: 15–45 Minuten pro Zeichnung, je nach Komplexität.
  • Fehleranfällig: Übertragungsfehler bei Toleranzen, falsche Werkstoffschlüssel, übersehene GD&T-Angaben.
  • Nicht skalierbar: Jede neue Angebotsanfrage, Konstruktionsänderung oder Lieferantenanbindung löst dieselbe manuelle Arbeit aus.
  • Intransparent: Es gibt keinen Audit-Trail, der den SAP-Datensatz mit der konkreten Angabe auf der Zeichnung verknüpft.

Die Werk24-API extrahiert strukturierte PMI (Product Manufacturing Information) aus der Zeichnung und liefert sie als JSON zurück. SAP-Schnittstellen (BAPIs, IDocs oder OData) akzeptieren strukturierte Daten. Die Integration verbindet beides.


Architekturübersicht

┌─────────────┐     ┌───────────┐     ┌─────────────┐     ┌───────────┐
│  Drawing     │────▶│  Werk24   │────▶│  Middleware  │────▶│   SAP     │
│  (PDF/scan)  │     │  API      │     │  (Python)   │     │  (BAPI /  │
└─────────────┘     └───────────┘     └─────────────┘     │  OData)   │
                         │                   │             └───────────┘
                    Structured JSON      Field mapping
                    (dims, GD&T,         + validation
                     materials,
                     title block)

Werk24 extrahiert → Middleware mappt → SAP konsumiert. Die Middleware ist ein schlankes Skript (Python, Node oder ABAP), das:

  1. Die Zeichnung an Werk24 sendet.
  2. Strukturiertes JSON empfängt.
  3. JSON-Felder auf SAP-Felder abbildet.
  4. Die passende SAP-Schnittstelle aufruft (BAPI, IDoc oder OData).
  5. Das Ergebnis protokolliert und mit der Quellzeichnung verknüpft.

Schritt 1: Daten aus der Zeichnung extrahieren

Installieren Sie das Werk24 Python SDK und richten Sie eine Testlizenz ein:

pip install werk24
werk24 init        # walks you through license setup
werk24 health-check  # verify everything works

Dann extrahieren Sie strukturierte Daten aus einer Zeichnung mit dem asynchronen Client:

import asyncio
from werk24 import (
    Werk24Client,
    AskMetaData,
    AskFeatures,
    AskInsights,
)

async def extract_drawing(path: str):
    """Read a technical drawing and collect metadata + features."""
    results = {}

    with open(path, "rb") as fh:
        drawing = fh.read()

    async with Werk24Client() as client:
        async for message in client.read_drawing(
            drawing,
            [AskMetaData(), AskFeatures(), AskInsights()],
        ):
            # Each message contains a response for one of the asks
            results[message.ask_type] = message

    return results

result = asyncio.run(extract_drawing("drawing.pdf"))

Das SDK verbindet sich über WebSocket, streamt Ergebnisse, sobald sie verfügbar sind, und übernimmt die Authentifizierung automatisch (unter Verwendung der Lizenz aus werk24 init). Jede message ist ein typisiertes Antwortobjekt — ResponseMetaDataComponentDrawing, ResponseFeaturesComponentDrawing oder ResponseInsightsComponentDrawing — mit strukturierten Feldern, auf die Sie direkt zugreifen können.

Hier eine vereinfachte Darstellung der Antwortstruktur (als JSON zur besseren Lesbarkeit — das SDK liefert typisierte Pydantic-Objekte):

AskMetaDataResponseMetaDataComponentDrawing:

{
  "identifiers": [
    { "value": "W24-0815-A", "identifier_type": "DRAWING_ID" }
  ],
  "designation": "Bearing housing",
  "weight": { "value": 2.35, "unit": "kg" },
  "material_options": [
    {
      "material_combination": [
        { "raw_ocr": "X5CrNi18-10", "designation": "1.4301", "standard": "EN 10088-1" }
      ]
    }
  ],
  "general_tolerances": { "tolerance_standard": "ISO_2768", "tolerance_class": "m" },
  "bill_of_material": {
    "rows": [
      { "position": "1", "part_number": "W24-0816", "designation": "Shaft", "quantity": { "value": 1, "unit": "ST" } }
    ]
  }
}

AskFeaturesResponseFeaturesComponentDrawing:

{
  "dimensions": [
    {
      "label": "120 ±0.05",
      "confidence": { "score": 0.97 },
      "size": {
        "value": 120.0, "unit": "mm",
        "tolerance": { "deviation_upper": 0.05, "deviation_lower": -0.05 }
      }
    }
  ],
  "threads": [
    { "label": "M8x1.25", "diameter": { "value": 8.0, "unit": "mm" }, "depth": { "value": 15.0, "unit": "mm" } }
  ],
  "roughnesses": [
    { "conditions": [{ "parameter": "Ra", "value": { "value": 1.6, "unit": "µm" } }] }
  ],
  "gdnts": [
    { "characteristic": "POSITION", "zone": { "value": { "value": 0.05, "unit": "mm" } }, "datums": [{ "label": "A" }, { "label": "B" }] }
  ]
}

Jedes Feld enthält einen Konfidenzwert. Legen Sie einen Schwellenwert fest (z. B. ≥ 0,95 für automatische Übernahme, < 0,95 für manuelle Prüfung), um fehlerhafte Daten von SAP fernzuhalten.


Schritt 2: Werk24-Felder auf SAP-Felder abbilden

Hier liegt die Geschäftslogik. Das Mapping hängt davon ab, welches SAP-Modul Sie ansprechen.

Materialstamm (MM01 / BAPI_MATERIAL_SAVEDATA)

Die Antwort von AskMetaData (ResponseMetaDataComponentDrawing) liefert Schriftfeld- und Werkstoffdaten:

Werk24-FeldSAP-FeldSAP-TabelleHinweise
metadata.identifiers[0].valueMATNRMARAMaterialnummer
metadata.material_options[0].material_combination[0].standardNORMTMARAWerkstoffnorm (DIN/EN)
metadata.weight.valueNTGEWMARANettogewicht
metadata.weight.unitGEWEIMARAGewichtseinheit
metadata.designationMAKTXMAKTKurztext Material
metadata.material_options[0].material_combination[0].designationWRKSTMARCWerkstoffbezeichnung

Stückliste (CS01 / BAPI_BOM_ITEM_CREATE)

Wenn die Zeichnung eine Stückliste enthält, liefert AskMetaData metadata.bill_of_material mit strukturierten Zeilen:

Werk24-FeldSAP-FeldHinweise
metadata.bill_of_material.rows[].part_numberIDNRKKomponenten-Materialnummer
metadata.bill_of_material.rows[].quantity.valueMENGEMenge
metadata.bill_of_material.rows[].quantity.unitMEINSMengeneinheit
metadata.bill_of_material.rows[].designationOJTXPPositionstext

Qualitätsmanagement (QM — Prüfmerkmale)

Die Antwort von AskFeatures (ResponseFeaturesComponentDrawing) liefert Maße, GD&T und Oberflächenangaben:

Werk24-FeldSAP-FeldHinweise
features.dimensions[].size.valueSollwertMerkmalszielwert
features.dimensions[].size.tolerance.deviation_upperObere Grenze
features.dimensions[].size.tolerance.deviation_lowerUntere Grenze
features.roughnesses[].conditions[0].valueSollwertOberflächenrauheit Ra/Rz
features.gdnts[].zone.valueToleranzbandLage-/Formtoleranz usw.

Schritt 3: Daten in SAP übertragen

Option A: BAPI-Aufruf über RFC (PyRFC)

from pyrfc import Connection

sap = Connection(
    ashost="sap-server.example.com",
    sysnr="00",
    client="100",
    user="WERK24_SVC",
    passwd="<service-password>",
)

# Assuming `metadata` is the ResponseMetaDataComponentDrawing from Step 1
part_number = metadata.identifiers[0].value if metadata.identifiers else "UNKNOWN"
material_designation = (
    metadata.material_options[0].material_combination[0].designation
    if metadata.material_options and metadata.material_options[0].material_combination
    else ""
)

headdata = {
    "MATERIAL": part_number,
    "IND_SECTOR": "M",       # Mechanical engineering
    "MATL_TYPE": "HALB",      # Semi-finished product
}

clientdata = {
    "MATL_GROUP": "010",
    "BASE_UOM": "ST",
    "NET_WEIGHT": float(metadata.weight.value) if metadata.weight else 0,
    "UNIT_OF_WT": metadata.weight.unit if metadata.weight else "KG",
    "NORM": material_designation,
}

resp = sap.call(
    "BAPI_MATERIAL_SAVEDATA",
    HEADDATA=headdata,
    CLIENTDATA=clientdata,
    CLIENTDATAX={
        "MATL_GROUP": "X", "BASE_UOM": "X",
        "NET_WEIGHT": "X", "UNIT_OF_WT": "X", "NORM": "X",
    },
)

if resp["RETURN"]["TYPE"] == "S":
    print(f"Material {headdata['MATERIAL']} created.")
else:
    print(f"Error: {resp['RETURN']['MESSAGE']}")

Option B: OData / SAP API Business Hub

Für S/4HANA Cloud oder SAP BTP nutzen Sie die OData-Schnittstelle API_PRODUCT_SRV:

import requests

s4_base = "https://my-s4hana.example.com/sap/opu/odata/sap/API_PRODUCT_SRV"
headers = {
    "Authorization": "Bearer <s4-oauth-token>",
    "Content-Type": "application/json",
    "X-CSRF-Token": "<fetched-token>",
}

payload = {
    "Product": part_number,
    "ProductType": "HALB",
    "BaseUnit": "ST",
    "NetWeight": str(metadata.weight.value) if metadata.weight else "0",
    "WeightUnit": metadata.weight.unit if metadata.weight else "KG",
    "IndustrySector": "M",
}

resp = requests.post(
    f"{s4_base}/A_Product",
    headers=headers,
    json=payload,
)
print(resp.status_code, resp.json())

Option C: IDoc (für Batch-/asynchrone Workflows)

Generieren Sie ein MATMAS05-IDoc-XML aus dem Werk24-JSON und legen Sie es in die SAP-Eingangsqueue. Besonders geeignet für Massenimporte (z. B. Digitalisierung eines Zeichnungsarchivs).


Schritt 4: Konfidenzgesteuerter Workflow

Nicht jede Extraktion sollte direkt nach SAP übernommen werden. Nutzen Sie die Konfidenzwerte von Werk24, um einen dreistufigen Workflow aufzubauen:

KonfidenzAktionAnteil (typisch)
≥ 0,95Automatisch in SAP anlegen~70 % der Felder
0,80 – 0,95In Prüfqueue zur manuellen Kontrolle~20 % der Felder
< 0,80Zur manuellen Eingabe markieren~10 % der Felder
from decimal import Decimal

THRESHOLD_AUTO = Decimal("0.95")
THRESHOLD_REVIEW = Decimal("0.80")

# features is a ResponseFeaturesComponentDrawing from Step 1
for dim in features.dimensions:
    score = dim.confidence.score if dim.confidence else Decimal("0")
    if score >= THRESHOLD_AUTO:
        push_to_sap(dim)
    elif score >= THRESHOLD_REVIEW:
        send_to_review_queue(dim)
    else:
        flag_for_manual_entry(dim)

So verhindern Sie, dass fehlerhafte Daten in SAP gelangen, und automatisieren gleichzeitig den Großteil der Eingaben.


Schritt 5: Rückverfolgbarkeit — SAP-Datensätze mit der Zeichnung verknüpfen

Jeder SAP-Datensatz sollte auf die Quellzeichnung und die exakte Position des extrahierten Werts verweisen. Werk24 liefert pixelgenaue Koordinaten (Bounding Boxes) für jedes extrahierte Feld. Speichern Sie diese als Dokumentverknüpfungen in SAP:

  • Hängen Sie die Originalzeichnung als DMS-Dokument an (Transaktion CV01N).
  • Speichern Sie die Werk24-upload_id sowie die feldspezifischen Koordinaten in einer kundeneigenen SAP-Tabelle oder als Klassifizierungsmerkmal.
  • Wenn ein Auditor oder Qualitätsingenieur einen Wert hinterfragt, kann er ihn bis zur exakten Angabe auf der Originalzeichnung zurückverfolgen.

So sieht das in der Praxis aus

Ein typisches Produktiv-Deployment verarbeitet Zeichnungen in einem von zwei Modi:

Ereignisgesteuert (Echtzeit): Neue Zeichnung trifft per E-Mail, EDI oder Lieferantenportal ein → Middleware extrahiert über Werk24 → SAP wird automatisch befüllt → der zuständige Ingenieur wird benachrichtigt, falls ein Feld geprüft werden muss. Verarbeitungszeit: 15–30 Sekunden pro Zeichnung.

Batch (Archivdigitalisierung): Bestehendes Zeichnungsarchiv (Tausende PDFs/TIFFs) → Batch-Upload an Werk24 → Middleware verarbeitet die Ergebnisse über Nacht → SAP-Datensätze werden in Masse angelegt → Prüfqueue für Felder mit niedrigem Konfidenzwert. Durchsatz: ca. 3.000 Zeichnungen/Tag im provisionierten Tarif.


Häufig gestellte Fragen

Wie genau ist die Extraktion?

Werk24 erreicht bei Standard-Technischen Zeichnungen eine Genauigkeit von über 95 %. Mit kundenspezifischen Quality Gates, die auf Ihre Zeichnungskonventionen trainiert sind, steigt die Genauigkeit auf 99 %. Jedes Feld enthält einen Konfidenzwert, sodass Sie programmatisch entscheiden können, was automatisch übernommen und was zur Prüfung weitergeleitet wird.

Was ist, wenn unsere Zeichnungen nicht-standardkonforme Konventionen verwenden?

Werk24 unterstützt ISO- und ASME/ANSI-Normen, verarbeitet 7 Sprachen und verarbeitet sowohl nativ CAD-generierte PDFs als auch über 20 Jahre alte Scans. Für unternehmensspezifische Konventionen (individuelle Schriftfeld-Layouts, proprietäre Werkstoffschlüssel) kann ein kundenspezifisches Quality Gate konfiguriert werden.

Welche SAP-Versionen werden unterstützt?

Jedes SAP-System, das BAPIs (ECC 6.0+), IDocs oder OData-APIs (S/4HANA) bereitstellt. Die Integration erfolgt auf API-Ebene — Werk24 installiert nichts innerhalb von SAP. Die Middleware läuft auf Ihrer Infrastruktur oder in der Cloud.

Wie lange dauert die Integration?

Proof of Concept: wenige Stunden mit den oben gezeigten Code-Beispielen. Produktivintegration mit Feld-Mapping, Konfidenz-Gating, Fehlerbehandlung und DMS-Verknüpfung: 2–6 Wochen, abhängig von der Anzahl der eingebundenen SAP-Module. Werk24 bietet Integrationsunterstützung in allen kostenpflichtigen Tarifen.

Wie steht es um Datenresidenz und Sicherheit?

Die Datenverarbeitung erfolgt in der EU (Frankfurt) oder den USA (nach Kundenwahl). Verschlüsselt bei Übertragung und Speicherung. Konfigurierbare Aufbewahrungsdauer von sofortiger Löschung bis 21 Tage. Zeichnungen verlassen nie die gewählte Region und werden nie zum Training gemeinsam genutzter Modelle verwendet.