← Članci · abas i XML

abas i XML 2. dio: Narudžbe i nabava – cXML, UBL i pravila XML uvoza u abas

Obrada dolaznih cXML i UBL narudžbi u sustavu abas ERP: XSLT transformacija u EDP-XML, automatsko kreiranje prodajnih naloga, upravljanje cjenovnim odstupanjima i FOP validacija.

U prvom dijelu naše serije analizirali smo interni XML podatkovni model sustava abas ERP, funkcioniranje EDP-XML sučelja i temeljna sintaktička pravila. U drugom dijelu obrađujemo jedan od najčešćih B2B integracijskih zadataka: kako zaprimati i automatski obrađivati narudžbe kupaca u modernim XML standardima (cXML i UBL / Peppol Order) te osigurati besprijekoran unos prodajnih naloga u abas.

Uz klasične EDIFACT ORDERS poruke, suvremene nabavne platforme (SAP Ariba, Coupa, Jaggaer) gotovo isključivo koriste cXML format, dok je u europskoj javnoj nabavi i međunarodnoj trgovini standard Peppol BIS Order 3.0 (temeljen na OASIS UBL 2.1) postao norma. Zahvaljujući fleksibilnoj arhitekturi, abas ERP podržava oba svijeta.

Usporedba B2B XML standarda: cXML vs. UBL

Prije tehničke implementacije u abasu važno je razumjeti arhitektonske razlike dva vodeća standarda narudžbi:

ZnačajkacXML (commerce eXtensible Markup Language)UBL (Universal Business Language) Order 2.1
Primarno područjeSAP Ariba, Coupa, izravni B2B PunchOut kataloziPeppol mreža, europska B2G i B2B trgovina
Zaglavlje i autentifikacijaUgrađeni Shared Secret i identifikacijska zaglavlja (<Header><From>...</Header>)Standardizirani EndpointID i PartyIdentification elementi
Imenski prostori (Namespaces)Većinom temeljeni na DTD-u ili bez prefiksaStroga hijerarhija imenskih prostora (urn:oasis:names:specification:ubl:schema:xsd:Order-2)
Način potvrđivanjaSinkroni HTTP odgovor (200 OK + Status cXML) i asinkroni cXML ConfirmationUBL OrderResponse (Peppol BIS Order Response 3.0)

Arhitektura integracijskog tijeka: Od dolaznog XML-a do abas narudžbe

Obrada dolaznih XML narudžbi u sustavu abas ERP odvija se kroz siguran višestupanjski proces:

  1. Prijem i predvalidacija: Dolazni cXML ili UBL dokument zaprima se putem AS2, HTTPS REST API-ja ili SFTP-a te se odmah provjerava naspram službene XSD sheme radi eliminacije sintaktičkih grešaka.
  2. XSLT transformacija: Prilagođeni XSLT stilski list prevodi vanjsku XML strukturu u izvorni abas EDP-XML format (Head i Table razine).
  3. Usklađivanje matičnih podataka: Na temelju unakrsnih tablica u abas Vartabu vanjski identifikatori (GLN, OIB/PDV ID) i šifre artikala kupca prevode se u interne šifre abasa.
  4. Headless EDP uvoz u pozadini: EDP poslužitelj otvara transakciju, poziva masku narudžbenice u pozadini, izvršava poslovnu logiku (provjera kreditnog limita, određivanje cijena i poreza) i generira dokument.
  5. Povratna informacija i obavijesti: U slučaju uspjeha bilježi se interni broj narudžbe; kod cjenovnih odstupanja postavlja se status upozorenja i obavještava se prodajni referent.

XSLT transformacija: Pretvaranje UBL / cXML narudžbe u abas EDP-XML

Ključ pouzdane integracije leži u učinkovitom mapiranju putem XSLT-a. Sljedeći sažeti primjer prikazuje pretvaranje UBL 2.1 narudžbe u abas <abasDocument> strukturu:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
    xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
    exclude-result-prefixes="cac cbc ubl">

    <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

    <xsl:template match="/ubl:Order">
        <abasDocument type="SalesOrder" version="2026.1">
            <head>
                <!-- Vanjski broj narudžbe i datum -->
                <bestellnr><xsl:value-of select="cbc:ID"/></bestellnr>
                <vom><xsl:value-of select="cbc:IssueDate"/></vom>
                <wtermin><xsl:value-of select="cac:Delivery/cac:RequestedDeliveryPeriod/cbc:EndDate"/></wtermin>
                
                <!-- Identifikacija kupca putem GLN / EndpointID -->
                <ygln><xsl:value-of select="cac:BuyerCustomerParty/cac:Party/cbc:EndpointID"/></ygln>
                <waehrung><xsl:value-of select="cbc:DocumentCurrencyCode"/></waehrung>
                
                <!-- Oznaka statusa integracije -->
                <yedistat>XML_IMPORT_NEW</yedistat>
            </head>
            <table>
                <xsl:for-each select="cac:OrderLine">
                    <row n="{position()}">
                        <!-- Šifra artikla kupca i GTIN / EAN -->
                        <ycustomerno><xsl:value-of select="cac:LineItem/cac:Item/cac:BuyersItemIdentification/cbc:ID"/></ycustomerno>
                        <yean><xsl:value-of select="cac:LineItem/cac:Item/cac:StandardItemIdentification/cbc:ID"/></yean>
                        <mge><xsl:value-of select="cac:LineItem/cbc:Quantity"/></mge>
                        <he><xsl:value-of select="cac:LineItem/cbc:Quantity/@unitCode"/></he>
                        <preis><xsl:value-of select="cac:LineItem/cac:Price/cbc:PriceAmount"/></preis>
                    </row>
                </xsl:for-each>
            </table>
        </abasDocument>
    </xsl:template>
</xsl:stylesheet>

Mehanizam automatskog uvoza (Headless EDP) u abasu

Kada XSLT generira čist abas XML dokument, EDP poslužitelj provodi uvoz uz poštivanje svih poslovnih pravila:

  • Pronalaženje partnera prema ygln ili poreznom broju: Ako interni abas broj kupca nije naveden, sustav pretražuje bazu kupaca po GLN-u ili PDV broju. U nedostatku jasnog podudaranja narudžba se privremeno dodjeljuje prijelaznom računu (Clearing Account) uz blokadu isporuke.
  • Unakrsne reference artikala: Prilikom obrade stavki abas provjerava polja yean (GTIN) i ycustomerno. Putem Vartab tablice unakrsnih referenci automatski se dohvaća interni broj artikla (artikel).
  • Standardizacija mjernih jedinica: Međunarodni UN/ECE Rec 20 kodovi (npr. H87 = kom, KGM = kg, MTR = m) automatski se prevode u interne mjerne jedinice abasa.

Upravljanje cjenovnim odstupanjima i pravila tolerancije

Jedan od najčešćih praktičnih izazova u automatskoj obradi narudžbi je cjenovno odstupanje: jedinična cijena u XML narudžbi kupca razlikuje se od cijene iz važećeg cjenika ili ugovora u abas ERP-u.

U abasu se to rješava putem FOP (Format Optimization Program) pravila:

Automatizirani postupak provjere cijena:
Ako je | XML_Cijena - abas_Ugovorena_Cijena | > Prag_Tolerancije (npr. > 0.5% ili > 0.01 EUR):
  1. Stavka se bilježi s cijenom iz XML narudžbe kako bi se sačuvala izvorna namjera kupca.
  2. Stavka i zaglavlje narudžbe dobivaju status "Čeka odobrenje cijene" (yedistat = 'PRICE_DISCREPANCY').
  3. Narudžba se automatski blokira za izradu otpremnice (Lieferschein), a referentu prodaje šalje se obavijest.

Česte zamke pri uvozu XML narudžbi

  • Greške s imenskim prostorima u XSLT-u: UBL dokumenti koriste stroge imenske prostore (xmlns:cac="..."). Ako nisu točno specificirani, XPath izrazi neće pronaći elemente i stavke narudžbe neće se kreirati u abasu.
  • Neželjeno spajanje istih artikala: Ako kupac naručuje isti artikl u dvije odvojene stavke s različitim rokovima isporuke, automatsko spajanje redaka poremetit će raspored kupca. Spajanje stavki mora biti onemogućeno.
  • Preciznost zaokruživanja: Ako vanjski XML sadrži cijenu s 4 decimale (npr. 0.1235 EUR), a polje u abasu je konfigurirano na 2 decimale, zaokruživanje može stvoriti manja odstupanja u ukupnom iznosu.
  • Neprepoznavanje izmjena narudžbe: Ako kupac pošalje ažurirani XML postojeće narudžbe, sustav mora prepoznati izvornu narudžbu umjesto otvaranja dupliciranog naloga.

Zaključak

Automatizirana obrada dolaznih cXML i UBL narudžbi putem XSLT-a i EDP-a uklanja ručni unos, ubrzava potvrdu narudžbi i jamči visoku razinu integriteta baze podataka u sustavu abas ERP.

U 3. dijelu prelazimo na logistiku i otpremu: prikazat ćemo kako izvesti abas otpremnicu s hijerarhijom pakiranja (Handling Units, SSCC) u XML formatu te kako se integrirati s WMS sustavima i kurirskim službama (GLS, DPD, DHL).

Želite li automatizirati obradu cXML i UBL narudžbi u svom abas ERP sustavu? Zatražite stručne konzultacije s našim timom!