Entwicklerschnittstelle
Diese Seite richtet sich an AL-Entwickler, die DHL-Labels ohne den Dialog „Label erstellen" erzeugen oder den Connector über Events erweitern möchten. Für die normale Nutzung der App ist sie nicht erforderlich.
Alle hier beschriebenen Einstiege laufen über denselben Weg wie der Dialog: Lizenzprüfung, Versandregeln, Vertragsauflösung, Tracking-Eintrag und die Hub-Events greifen in jedem Fall.
| Objekt | Zweck |
|---|---|
ALN MCDHL Label API (Codeunit 73334792) |
Label für einen Verkaufsauftrag oder eine gebuchte Lieferung erzeugen |
ALN MCDHL Label Services (Codeunit 73334782) |
Service-Codes der Zusatzleistungen und Helfer für die Service-Auswahl |
ALN MCDHL Evt Publisher (Codeunit 73334798) |
Öffentliche Events des Request Builders und der Versandregeln |
ALN MC Shipment Mgmt. (Hub, Codeunit 73334603) |
Carrier-neutraler Einstieg des Hubs, den die Label API intern verwendet |
Label erzeugen
Die Zusatzleistungen werden als temporärer Datensatz ALN MCDHL Shipment VAS übergeben. Jedes
Feld dieses Datensatzes wird übernommen, auch die, die der Dialog nicht anbietet: Nachnahme,
Identprüfung, Packstation, Vorausverfügung, Rücksendeadresse.
var
LabelApi: Codeunit "ALN MCDHL Label API";
TempVAS: Record "ALN MCDHL Shipment VAS" temporary;
EntryNo: Integer;
begin
TempVAS.Init();
TempVAS."Visual Check of Age" := TempVAS."Visual Check of Age"::A18;
TempVAS."Additional Insurance" := true;
TempVAS."Insurance Amount" := 2500;
TempVAS."Insurance Currency" := 'EUR';
EntryNo := LabelApi.CreateLabel('VA-2026-01187', TempVAS);
end;
CreateLabelFromShipment arbeitet gleich, erwartet aber die Nummer einer gebuchten
Verkaufslieferung. Beide Prozeduren gibt es zusätzlich mit Gewicht in Gramm, Produktcode
(Versandart-Servicecode), Ship-to-Overrides und einer Hub-Service-Auswahl:
EntryNo := LabelApi.CreateLabel(
'VA-2026-01187', 1850, 'PAKET', TempShipToOverrides, TempVAS, TempLabelSvcSelection);
Rückgabe und Fehler
- Rückgabe ist die
Entry No.des DatensatzesALN MC Shipment Label. - Ein Fehler beim Provider oder bei der Lizenz löst
Error()aus, es entsteht kein Label. - Ein fehlgeschlagener DHL-Aufruf löst keinen Fehler aus. Das Label hat dann
Status = Errorund die DHL-Meldung steht inError Message. - Versandregeln laufen auch bei diesem Weg und ergänzen Leistungen, überschreiben aber keine übergebenen Werte.
- Die Vorgaben der DHL-Einrichtung, die der Dialog vorbelegt (Standard GoGreen Plus, Standard Versicherung usw.), werden nicht angewendet. Übergeben Sie sie ausdrücklich.
- Setzen VAS-Datensatz und Service-Auswahl dasselbe Feld, gewinnt die Service-Auswahl.
- Ein Service-Parameter, der nicht ins Format passt oder zu lang ist, löst einen Fehler aus. Es entsteht kein Label mit stillschweigend fehlender Leistung.
Service-Codes
Alternativ zum VAS-Datensatz lassen sich Leistungen als Hub-Service-Auswahl
(ALN MC Label Svc. Selection) übergeben. Das ist der Weg, den auch die REST-API des Hubs
verwendet. Die Codes stellt ALN MCDHL Label Services bereit; die Parameter sind auf zwei
Felder mit je 50 Zeichen begrenzt.
var
LabelServices: Codeunit "ALN MCDHL Label Services";
TempLabelSvcSelection: Record "ALN MC Label Svc. Selection" temporary;
begin
LabelServices.AddService(TempLabelSvcSelection, LabelServices.AgeCheck(), 'A18', '');
LabelServices.AddService(TempLabelSvcSelection, LabelServices.Insurance(),
LabelServices.FormatAmountParameter(2500), 'EUR');
LabelServices.AddService(TempLabelSvcSelection, LabelServices.Locker(), '123', '12345678');
end;
| Code | Prozedur | Leistung | Parameter 1 | Parameter 2 |
|---|---|---|---|---|
GOGREEN_PLUS |
GoGreenPlus() |
GoGreen Plus | – | – |
BULKY_GOODS |
BulkyGoods() |
Sperrgut | – | – |
RETURN_LABEL |
ReturnLabel() |
Retourenlabel beilegen | – | – |
PREF_NEIGHBOUR |
PreferredNeighbour() |
Wunschnachbar | Name und Adresse | – |
PREF_LOCATION |
PreferredLocation() |
Wunschort | Ablageort | – |
NO_NEIGHBOUR |
NoNeighbourDelivery() |
Keine Nachbarschaftszustellung | – | – |
PREF_DAY |
PreferredDay() |
Wunschtag | Datum yyyy-mm-dd |
– |
AGE_CHECK |
AgeCheck() |
Alterssichtprüfung | A16 oder A18 |
– |
NAMED_PERSON_ONLY |
NamedPersonOnly() |
Persönliche Übergabe | – | – |
SIGNED_BY_RECIPIENT |
SignedByRecipient() |
Empfängerunterschrift | – | – |
INSURANCE |
Insurance() |
Transportversicherung | Betrag, Punkt als Dezimaltrenner | Währung ISO |
IDENT_CHECK |
IdentCheck() |
Identprüfung | Vorname|Nachname|yyyy-mm-dd |
A16 oder A18 |
LOCKER |
Locker() |
Packstation | Locker-ID | Postnummer |
POSTFILIALE |
PostOffice() |
Filiale | Retail-ID | Postnummer |
ENDORSEMENT |
Endorsement() |
Vorausverfügung | RETURN oder ABANDON |
– |
PDDP |
PostalDeliveryDutyPaid() |
Postal Delivery Duty Paid | – | – |
PREMIUM |
Premium() |
Premium (international) | – | – |
Helfer für die Parameter: FormatDateParameter, FormatAmountParameter,
AgeCheckParameter, BuildIdentCheckParameter. Die Werte sind unabhängig von der
Sitzungssprache, Betrag und Datum werden im XML-Format geschrieben.
Nachnahme
Nachnahme braucht Kontoinhaber, IBAN, BIC und Verwendungszwecke und hat deshalb keinen
Service-Code. Sie wird ausschließlich über die Felder Cash on Delivery, COD Amount,
COD Currency und COD * des VAS-Datensatzes übergeben.
Events
Hub (ALN MC Shipment Evt Publisher, Codeunit 73334602)
| Event | Zeitpunkt |
|---|---|
OnAfterCreateShipmentLabel |
Label erfolgreich erzeugt, Tracking-Eintrag angelegt |
OnCreateShipmentLabelError |
DHL-Aufruf fehlgeschlagen, Label mit Status Error gespeichert |
OnAfterCancelShipment |
Sendung storniert |
OnAfterDeliveryStatusChanged |
Zustellstatus aus der Sendungsverfolgung geändert |
DHL (ALN MCDHL MC Integration, Codeunit 73334775)
| Event | Zeitpunkt |
|---|---|
OnBeforeCreateDHLLabel |
Vor Versandregeln und Request-Aufbau, IsReturn unterscheidet Retoure |
OnAfterCreateDHLLabel |
Nach erfolgreicher Antwort von DHL |
DHL (ALN MCDHL Evt Publisher, Codeunit 73334798)
| Event | Zeitpunkt |
|---|---|
OnAfterBuildShipmentJson |
JSON einer Sendung ist fertig und kann vor dem Senden ergänzt werden |
OnBeforeApplyRuleAction |
Vor der Aktion einer passenden Versandregel, IsHandled ersetzt die Standardaktion |
OnAfterApplyRuleAction |
Nach der Aktion einer passenden Versandregel |
Die gleichnamigen Events in ALN MCDHL Request Builder und ALN MCDHL Rules Engine sind
veraltet. Diese Codeunits sind intern, Fremd-Apps konnten sie nie abonnieren.
Hinweise
- Lizenz. Die Label API prüft die DHL-Lizenz wie der Dialog. Ohne aktive Lizenz oder Demo entsteht kein Label.
- Berechtigungen. Der aufrufende Benutzer braucht den Berechtigungssatz
ALN MCDHL Useroder die darin enthaltenen Rechte auf die Codeunits. - Zusatzleistungen und Teilnahme. Leistungen wie Sperrgut oder Versicherung brauchen eine passende DHL-Teilnahme in den Vertragszeilen, siehe Profile & Abrechnung.
- Kontext bei Abbruch. Bricht der Hub vor dem Anlegen des Labels ab, bleibt kein Zustand zurück, der ein späteres Label beeinflussen könnte. Der übergebene VAS-Datensatz ist an die Belegnummer gebunden.