> For the complete documentation index, see [llms.txt](https://docs.solutioo.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.solutioo.de/entwicklerdokumentationen-business-central-dhl-connector/dhl-connector-entwicklerdokumentation/unterstutzte-al-schnittstellen.md).

# Unterstützte AL-Schnittstellen

Nur die auf dieser Seite aufgeführten Methoden gelten für Version `25.22.0.0` als dokumentierter Integrationsvertrag. Weitere öffentliche Symbole können Implementierungsdetails sein und sich ohne Integrationszusage ändern.

## Codeunit 72242952 SOUDHL API Management

### Service erkennen

```al
procedure IsExpress(): Boolean
```

Liefert `true`, wenn die DHL-Konfiguration den Service **Express** verwendet. Bei fehlender Konfiguration wird `false` geliefert.

### Label erzeugen

```al
procedure GenerateLabel(
    SOUDHLPackageHeaderRecord: Record "SOUDHL Package Header";
    var ExtraMessage: Text): Boolean
```

Die Methode wählt automatisch Parcel DE oder Express, aktualisiert Empfängerdaten, validiert das Paket, ruft DHL auf und speichert Label sowie Sendungsnummer.

Wichtige Laufzeiteigenschaften:

* `true` bedeutet, dass DHL das Label erfolgreich erstellt hat.
* Bei `false` enthält `ExtraMessage` nach Möglichkeit die Fehlerbeschreibung.
* Auch bei `true` kann `ExtraMessage` eine nachgelagerte Warnung enthalten, etwa zur optionalen Kartonbestandsbuchung.
* Nach einem erfolgreichen Aufruf sollte der Consumer den Paketdatensatz erneut lesen.
* Die Methode führt nach erfolgreicher externer Labelerzeugung einen `Commit()` aus. Aufrufer dürfen daher keine atomare Transaktion über den Labelaufruf hinweg voraussetzen.

### Express-Preis abrufen

```al
procedure GetRate(
    ReceiverCountry: Code[10];
    ReceiverPostalCode: Text;
    ReceiverCity: Text;
    WeightKg: Decimal;
    LengthCm: Decimal;
    WidthCm: Decimal;
    HeightCm: Decimal;
    ProductCode: Code[5];
    var Price: Decimal;
    var Currency: Text;
    var ExtraMessage: Text): Boolean
```

Diese Methode verwendet den MyDHL-Endpoint `/rates` und ist nur bei **DHL Express** verfügbar. Abmessungen werden in Zentimetern und Gewicht in Kilogramm übergeben. Ein leerer Product Code verwendet den Standardcode des Connectors.

### Dokumente herunterladen

```al
procedure DownloadLabel(
    SOUDHLPackageHeaderRecord: Record "SOUDHL Package Header")

procedure DownloadCustomsDoc(
    SOUDHLPackageHeaderRecord: Record "SOUDHL Package Header")
```

Diese Methoden starten einen Client-Download und sind nur für interaktive Sitzungen geeignet. Für Hintergrundprozesse sollte ein eigener, mit Solutioo abgestimmter Stream- oder Export-Hook verwendet werden.

## Codeunit 72242980 SOUDHL Packing Mgt

### Pakete erzeugen

```al
procedure CreatePackages(
    var SalesHeader: Record "Sales Header";
    FixedPackageCount: Integer;
    BoxCode: Code[20])

procedure CreatePackagesWithPackingMode(
    var SalesHeader: Record "Sales Header";
    FixedPackageCount: Integer;
    BoxCode: Code[20];
    PackingMode: Enum "SOUDHL Packing Mode")
```

* `FixedPackageCount = 0` aktiviert die automatische Ermittlung.
* Ein Wert größer `0` fordert genau diese Anzahl an, sofern Gewichts-, Dimensions- und Mengenlimits eingehalten werden können.
* Bereits hochgeladene Pakete bleiben erhalten.
* Nicht hochgeladene Auftragspakete werden bei einer neuen Ermittlung neu aufgebaut.
* Ungültige oder nicht passende Einheiten führen zu einem AL-Fehler, bevor neue Pakete angelegt werden.

### Unterstützte Berechnungshelfer

```al
procedure ResolveUnitWeightKg(Item: Record Item): Decimal
procedure ResolveUnitWeightKg(Item: Record Item; UOMCode: Code[10]): Decimal

procedure ResolveItemUnitDimensions(
    ItemNo: Code[20]; UOMCode: Code[10];
    var LengthCm: Decimal; var WidthCm: Decimal; var HeightCm: Decimal)

procedure ResolvePackageDimensionsCm(
    PackageHeader: Record "SOUDHL Package Header";
    var LengthCm: Decimal; var WidthCm: Decimal; var HeightCm: Decimal)

procedure ResolveMaxPackageWeightKg(BoxCode: Code[20]): Decimal
procedure MaxPackageWeightKg(): Decimal

procedure UnitFitsInBox(
    ItemLengthCm: Decimal; ItemWidthCm: Decimal; ItemHeightCm: Decimal;
    BoxLengthCm: Decimal; BoxWidthCm: Decimal; BoxHeightCm: Decimal): Boolean

procedure SuggestPackageCount(
    TotalWeightKg: Decimal; TotalVolumeCm3: Decimal;
    BoxCode: Code[20]): Integer

procedure ComputeOrderTotals(
    SalesHeader: Record "Sales Header";
    var TotalWeightKg: Decimal; var TotalVolume: Decimal)

procedure ClearExistingPackages(OrderNo: Code[20])
```

`ClearExistingPackages` löscht nur nicht hochgeladene Pakete des Dokumenttyps Verkaufsauftrag. Vor dem Aufruf muss geprüft werden, dass dieses Verhalten fachlich gewünscht ist.

## Codeunit 72242972 SOUDHL Rate Provider

Der Rate Provider berechnet Preise aus den im Connector importierten Tariftabellen. Er führt keinen Live-DHL-Aufruf aus.

```al
procedure CalculateRate(
    ProductCode: Code[20]; ServiceCode: Code[20];
    BillingAccountCode: Code[20]; ShipmentDate: Date;
    OriginCountry: Code[10]; OriginPostCode: Code[20];
    DestinationCountry: Code[10]; DestinationPostCode: Code[20];
    ActualWeight: Decimal; Length: Decimal; Width: Decimal; Height: Decimal;
    PackageCount: Integer;
    var ResultBuffer: Record "SOUDHL Rate Result Buffer" temporary;
    var ErrorCode: Code[30]; var ErrorText: Text): Boolean
```

Bei Erfolg enthält der temporäre Result Buffer Basispreis, Zuschläge und Zusammenfassung. Bei Fehlern werden `ErrorCode` und `ErrorText` gesetzt.

## Codeunit 72242962 SOUDHL Express Helper

```al
procedure MapProductCode(
    Product: Enum "SOUDHL Express Product"): Code[5]

procedure IsDocumentProduct(
    Product: Enum "SOUDHL Express Product"): Boolean
```

Diese Methoden dürfen für die Auswahl eines Express-Produktcodes verwendet werden.

## Ergänzende High-Level-Objekte

Folgende Objekte sind öffentlich erreichbar, sollten aber nur nach Abstimmung verwendet werden:

* `SOUDHL Package Recipient Mgt` für Empfänger-Snapshots und Quellaufträge
* `SOUDHL Customs Mgt` für Zollprüfung und Zolldaten
* `SOUDHL Sales Shipment Mgt` für die Zuordnung offener Auftragspakete zu gebuchten Verkaufslieferungen
* `SOUDHL Box Inventory Mgt` für die optionale Kartonbestandsbuchung

Ihre Verwendung koppelt die Consumer-App stärker an das interne Datenmodell.

## Nicht unterstützte Aufrufe

Nicht als Integrationsvertrag unterstützt werden insbesondere:

* `GenerateToken`
* `CallPostAPI`
* `GetErrorDetail`
* `BaseUrl`
* `ConvertPdfLabelToJpgAndStore`
* die komplette Codeunit `SOUDHL Secret Mgt`
* Installations-, Upgrade-, Import- und interne Posting-Codeunits
* direkte Verwendung interner HTTP-, Token-, JSON- oder Credential-Logik

Diese Symbole dürfen auch dann nicht verwendet werden, wenn der aktuelle Compiler sie auflösen kann.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.solutioo.de/entwicklerdokumentationen-business-central-dhl-connector/dhl-connector-entwicklerdokumentation/unterstutzte-al-schnittstellen.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
