Inhaltsverzeichnis

std.edi.customs

Zoll-Nachrichten per EDIFACT für den grenzüberschreitenden Warenverkehr. Alle vier Nachrichtentypen teilen denselben Header (EDI_CUS_HDR) mit Absender, Empfänger, Herkunfts-/Zielort, Zollbehörde-Referenz und Zollwert.

CUSRSP-Statuscodes:

Konstante Wert Bedeutung
EDI_CUSRSP_ACCEPTED 1 Anmeldung akzeptiert
EDI_CUSRSP_REJECTED 2 Anmeldung abgelehnt
EDI_CUSRSP_QUERIED 3 Rückfrage / weitere Informationen benötigt
EDI_CUSRSP_RELEASED 4 Waren freigegeben

import std.edi.customs;

// Zollanmeldung (CUSDEC)
var hdr:   int64 := alloc(EDI_CUS_HDR_SIZE);
var items: int64 := alloc(10 * EDI_CUS_ITEM_SIZE);

poke64(hdr + EDI_CUS_HDR_BGMQUAL,   EDI_CUS_BGM_CUSDEC);
poke64(hdr + EDI_CUS_HDR_REF,       "DECL-2026-001" as int64);
poke64(hdr + EDI_CUS_HDR_REFLEN,    13);
poke64(hdr + EDI_CUS_HDR_DATE,      "20261201" as int64);
poke64(hdr + EDI_CUS_HDR_ORIGIN,    "CN" as int64);   // China
poke64(hdr + EDI_CUS_HDR_ORIGLEN,   2);
poke64(hdr + EDI_CUS_HDR_DEST,      "DE" as int64);   // Deutschland
poke64(hdr + EDI_CUS_HDR_DESTLEN,   2);
poke64(hdr + EDI_CUS_HDR_CUSTVALUE, 450000);   // 4500,00 EUR Zollwert
poke64(hdr + EDI_CUS_HDR_CURRENCY,  "EUR" as int64);
poke64(hdr + EDI_CUS_HDR_CURLEN,    3);
poke64(hdr + EDI_CUS_HDR_DECLREF,   "ADE-2026-777" as int64);
poke64(hdr + EDI_CUS_HDR_DECLREFLEN,12);

// Position 1
poke64(items + EDI_CUS_ITEM_DESC,    "Elektronikbauteile" as int64);
poke64(items + EDI_CUS_ITEM_DESCLEN, 18);
poke64(items + EDI_CUS_ITEM_QTY,     500);
poke64(items + EDI_CUS_ITEM_VALUE,   450000);
poke64(items + EDI_CUS_ITEM_HSCODE,  "85423190" as int64);
poke64(items + EDI_CUS_ITEM_HSCODELEN,8);

var out: int64 := alloc(8192);
var n: int64 := EdiCusdecWrite(hdr, items, 1, out, 8192);

free(items, 10 * EDI_CUS_ITEM_SIZE);
free(hdr, EDI_CUS_HDR_SIZE);
free(out, 8192);


Imports


Structs

EdiCusHdr (EDI_CUS_HDR_SIZE = 160 Bytes)

Offset-Konstante Inhalt
EDI_CUS_HDR_BGMQUAL BGM-Qualifier (EDI_CUS_BGM_*)
EDI_CUS_HDR_REF / EDI_CUS_HDR_REFLEN Referenz/Dokumentnummer
EDI_CUS_HDR_DATE / EDI_CUS_HDR_DATELEN Datum
EDI_CUS_HDR_ORIGIN / EDI_CUS_HDR_ORIGLEN Herkunftsland (LOC+87, z. B. „CN“)
EDI_CUS_HDR_DEST / EDI_CUS_HDR_DESTLEN Bestimmungsland (LOC+88, z. B. „DE“)
EDI_CUS_HDR_DECLARANT / EDI_CUS_HDR_DECLLEN Zollanmelder (NAD+DT)
EDI_CUS_HDR_CARRIER / EDI_CUS_HDR_CARRLEN Beförderer (NAD+CA)
EDI_CUS_HDR_CUSTVALUE Zollwert × 100 (MOA+126)
EDI_CUS_HDR_CURRENCY / EDI_CUS_HDR_CURLEN Währungscode
EDI_CUS_HDR_DECLREF / EDI_CUS_HDR_DECLREFLEN Zollanmeldungsnummer (RFF+ADE)
EDI_CUS_HDR_RSPCODE CUSRSP-Statuscode (1–4)
EDI_CUS_HDR_PROCCODE Zollverfahrenscode

EdiCusItem (EDI_CUS_ITEM_SIZE = 48 Bytes)

Offset-Konstante Inhalt
EDI_CUS_ITEM_DESC / EDI_CUS_ITEM_DESCLEN Warenbeschreibung (LIN)
EDI_CUS_ITEM_QTY Menge
EDI_CUS_ITEM_VALUE Positionswert × 100 (MOA+66)
EDI_CUS_ITEM_HSCODE / EDI_CUS_ITEM_HSCODELEN HS-Zolltarifnummer (RFF+HS)

Funktionen

Write-Funktion Read-Funktion Beschreibung
EdiCuscarWrite(hdr, items, itemCount, out, outMax) EdiCuscarRead(buf, bufLen, hdr, items, maxItems) Cargo Report
EdiCusdecWrite(hdr, items, itemCount, out, outMax) EdiCusdecRead(buf, bufLen, hdr, items, maxItems) Zollanmeldung
EdiCusexpWrite(hdr, items, itemCount, out, outMax) EdiCusexpRead(buf, bufLen, hdr, items, maxItems) Express-Manifest
EdiCusrspWrite(hdr, out, outMax) EdiCusrspRead(buf, bufLen, hdr) Zollantwort (kein Item-Array)

Alle Write-Funktionen setzen automatisch den BGM-Qualifier. Read-Funktionen geben die Anzahl der Items zurück (für CUSRSP: 1=ok, 0=Fehler).


Codebeispiel — Zollantwort auswerten

import std.edi.customs;

var hdr: int64 := alloc(EDI_CUS_HDR_SIZE);
EdiCusrspRead(inBuf, inBufLen, hdr);

var code: int64 := peek64(hdr + EDI_CUS_HDR_RSPCODE);
if (code == EDI_CUSRSP_RELEASED) {
    PrintLn("Ware freigegeben.");
} else if (code == EDI_CUSRSP_REJECTED) {
    PrintLn("Anmeldung abgelehnt.");
} else if (code == EDI_CUSRSP_QUERIED) {
    PrintLn("Rückfrage der Zollbehörde.");
}

free(hdr, EDI_CUS_HDR_SIZE);


Hinweise


Quelldatei

Unit Datei
std.edi.customs std/edi/customs.lyx

Letzte Aktualisierung: 2026-06-16