Dit is een automatische vertaling. De originele post is beschikbaar in Engels.

ANVEDI Integration

De ANVEDI Integration codeunit bevat alle publieke API-aanroepen naar de EDI-module, die u misschien wilt aanroepen vanuit uw eigen code. Alle functies in deze codeunit worden verondersteld te worden gebruikt, als u direct een EDI-actie per code wilt starten.

Algemene begrippen

In deze sectie bespreken we eerst de kernbegrippen, die u moet begrijpen om de codevoorbeelden te kunnen lezen.

Gebruikerstransacties

Anveo EDI Connect heeft een concept genaamd “gebruikerstransacties”, dat meerdere databasetransacties kan overspannen en meerdere fouten kan verzamelen. De meeste acties in Anveo EDI Connect vereisen een open gebruikerstransactie om ze uit te voeren. U kunt een gebruikerstransactie starten door te bellen:

// Start a new user transaction with the description given by TextDescription
ANVEDIIntegration.BEGIN_USER_TRANSACTION(TextDescription);

// Your EDI code

// End the user transaction and show an error list, if there were any
ANVEDIIntegration.END_USER_TRANSACTION(TRUE, FALSE);
Voorbeeld: Een gebruikerstransactie starten

De oproep naar END_USER_TRANSACTION maakt het mogelijk om ofwel fouten te tonen, de huidige databasetransactie te verbreken of een retourwaarde te krijgen, ongeacht of er een fout is opgetreden. We zullen het later in detail bespreken.

BEGIN_USER_TRANSACTION

Start een nieuwe gebruikerstransactie. Houd er rekening mee dat u alleen gesprekken in de EDI-module integreert op punten waar een COMMIT kan plaatsvinden. In veel gevallen zal de module alle databasewijzigingen vastleggen voordat de EDI-logica wordt uitgevoerd. Overweeg ook om gewoon de gegevens te markeren en een achtergrondtaak te gebruiken om de EDI-logica uit te voeren.

De gegeven tekst wordt aan de gebruiker getoond, als er een wachtende dialoog wordt geopend, omdat het proces tijd kost.

BEGIN_USER_TRANSACTION(Text : Text[1024])

U moet een oproep naar BEGIN_USER_TRANSACTION altijd beëindigen met een oproep naar END_USER_TRANSACTION.

SHOWDIALOGS

Deze functie kan worden gebruikt om eventuele EDI-dialogen te verbergen.

SHOWDIALOGS(ShowDialogs : Boolean)

De parameter geeft aan of de dialogen al dan niet worden getoond. Een oproep voor deze functie moet zich binnen een gebruikerstransactie bevinden. Normaal gesproken roept u deze functie direct na BEGIN_USER_TRANSACTION op.

ISPROCESSING

Deze functie geeft aan of u zich binnen een mapping bevindt. U kunt deze waarde controleren bij het valideren van triggers, bijvoorbeeld om een ander gedrag te bereiken bij het verwerken van EDI-processen. U kunt deze waarde ook gebruiken om alleen invoerdialogen weer te geven als u geen EDI verwerkt.

END_USER_TRANSACTION

Deze functie beëindigt een gebruikerstransactie.

END_USER_TRANSACTION(ShowErrorList : Boolean; BreakOnError : Boolean) Success : Boolean
ShowErrorList

Als er fouten zijn gemaakt tijdens de transactie, toon dan in een dialoog aan de eindgebruiker. Deze parameter heeft geen effect, als GUIALLOWED False is.

BreakOnError

Of de module een fout moet gooien, waardoor de huidige processtroom wordt onderbroken. Alle code na deze regel wordt niet uitgevoerd, als er een fout is opgetreden tijdens de transactie. Als u deze parameter op True zet, krijgt u een foutmelding dat er een of meer fouten zijn opgetreden, als die er al waren. In dit geval kan de gebruiker de volledige lijst met fouten niet zien.

Success

Een retourwaarde, of er nu een fout was of niet. Geeft True op succes, d.w.z. er waren geen fouten, anders False.

In oudere versies van de module werd de terugkeerwaarde anders genoemd, maar had deze dezelfde functie. De oude naam van de retourwaarde was onjuist, de functie keerde altijd terug True op succes.

Werken met zakelijke transacties

RUN_BUSINESSTRANSACTION_JOB

Voert de gegevensverzamelingsopdracht uit van een bepaald type bedrijfstransactie. Dit moet worden opgeroepen vanuit een gebruikerstransactie.

RUN_BUSINESSTRANSACTION_JOB(BusinessTransactionTypeCode : Code[20])
BusinessTransactionTypeCode

Code van het type zakelijke transactie.

// Start a new user transaction with the description given by TextDescription
ANVEDIIntegration.BEGIN_USER_TRANSACTION(TextDescription);

// Collects the data of the Business Transaction Type "INVOICE_OUT" and processes the mappings
ANVEDIIntegration.RUN_BUSINESSTRANSACTION_JOB('INVOICE_OUT');

// End the user transaction and show an error list, if there were any
ANVEDIIntegration.END_USER_TRANSACTION(TRUE, FALSE);
Voorbeeld: Verzamelen van zakelijke transactiegegevens

START_BT_WITH_REC

Start een nieuwe zakelijke transactie voor de gegeven code en record id.

START_BT_WITH_REC(BusinessTransactionTypeCode : Code[20];RecID : RecordID)

RUN_BT_BATCH_JOB

Voert de batchophaaltaak uit met de opgegeven naam. Dit moet worden opgeroepen vanuit een gebruikerstransactie.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Acties

Soms wilt u een knop op een pagina aanmaken om een EDI-proces te starten, of u wilt deze bijvoorbeeld integreren in het releaseproces. Voor deze gevallen kunt u bijna alle acties van de module uitvoeren vanuit code. Houd er rekening mee dat EDI-processen meestal geautomatiseerd moeten worden en op de achtergrond moeten draaien. Dus voordat u acties in code toevoegt, moet u de mogelijkheid van een achtergrondfunctie als alternatief overwegen.

Voer een EDI Mapping uit

Om een EDI Mapping uit te voeren moeten we een gebruikerstransactie starten. Daarna willen we misschien gegevens doorgeven aan de mapping. We kunnen dan de mapping uitvoeren en het resultaat controleren wanneer we de gebruikerstransactie beëindigen. De gedetailleerde beschrijving van de commando’s vindt u na het codevoorbeeld.

// Start a new user transaction with the description given by TextDescription
ANVEDIIntegration.BEGIN_USER_TRANSACTION(TextDescription);

// Reset any existing table views
ANVEDIIntegration.RESET_TABLEVIEWS();

// Copy sales invoice header from Rec to a local variable
SalesInvoiceHeader := Rec;
// Filter the local variable to the current record
SalesInvoiceHeader.SETRECFILTER;
// Store the filter to the record under the name INVOICE
ANVEDIIntegration.SET_TABLEVIEW('INVOICE', SalesInvoiceHeader.GETVIEW(FALSE));

// Run the mapping EXAMPLE, NAV, INVOICE. You can access the invoice header, by adding the table and setting the filter to a named table view and enter INVOICE as the name. In general, you can pass as many filters as you need to the mapping.
ANVEDIIntegration.RUN('EXAMPLE', 'NAV', 'INVOICE', FALSE, TRUE, '');

// End the user transaction and show an error list, if there were any
ANVEDIIntegration.END_USER_TRANSACTION(TRUE, FALSE);
Codevoorbeeld: Voer een mapping uit om een factuur te exporteren

RESET_TABLEVIEWS

Reset alle bestaande opgeslagen tabelweergaven. Moet worden opgeroepen vanuit een gebruikerstransactie.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Slaat een tabelweergave op onder een bepaalde naam. Moet worden opgeroepen vanuit een gebruikerstransactie.

SET_TABLEVIEW(FilterName : Code[30];FilterText : Text[1024])
FilterName

Een code die de naam van het filter weergeeft. U zult exact dezelfde naam moeten opgeven in de EDI Mapping om het filter op te halen.

FilterText

De filtertekst in de vorm van een Anveo EDI Connect-tabelweergave. U moet de Microsoft Dynamics NAV 2018 inbouwfunctie GETVIEW gebruiken, indien mogelijk, om de correct geformatteerde string te krijgen.

GET_TABLEVIEW

Haalt een opgeslagen filter op. Moet worden opgeroepen vanuit een gebruikerstransactie.

GET_TABLEVIEW(FilterName : Code[30]) : Text[1024]

RUN

Voer een of meer EDI-mappings uit. Moet worden opgeroepen vanuit een gebruikerstransactie.

RUN(ProjectFilter : Text[250];FormatFilter : Text[250];CodeFilter : Text[250];MultipleAllowed : Boolean;ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
ProjectFilter

De code van het project of een filterstring die overeenkomt met de projectcode.

FormatFilter

De code van het mapping of een filterstring die overeenkomt met de formaatcode.

CodeFilter

De code van de mapping of een filter die overeenkomt met de gewenste mapping.

MultipleAllowed

Of er meerdere mappings moeten worden uitgevoerd in het geval dat er een filter wordt gespecificeerd. Dit is een veiligheidsfunctie, die voorkomt dat u meer dan één mapping kunt uitvoeren.

ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessingQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

Andere acties

RECEIVE_ALL

Verouderde functie. U moet voorkomen dat u de algemene functie aanroept en een van de meer specifieke functies hieronder aanroepen.

Ontvangt alle communicatiekanalen. Deze functie moet worden opgeroepen vanuit een gebruikerstransactie.

RECEIVE_ALL(ProcessFollowing : Boolean;ProcessingQueueView : Text[250])

RECEIVE_FOLDER

Ontvangt de gegevens uit de opgegeven verzendmap of de mappen. Deze functie moet worden opgeroepen vanuit een gebruikerstransactie.

RECEIVE_FOLDER(TransmissionFolderCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
TransmissionFolderCodeFilter

De code van het transmissiefilter of een filterstring op het codeveld.

ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

RECEIVE_COMMUNICATIONCHANNEL

Ontvangt gegevens van het gespecificeerde communicatiekanaal. Deze functie moet worden opgeroepen vanuit een gebruikerstransactie.

RECEIVE_COMMUNICATIONCHANNEL(CommunicationChannelCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
CommunicationChannelCodeFilter

De code van het communicatiekanaal of een filterstring op het codeveld.

ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

SEND_ALL

Verouderde functie. U moet voorkomen dat u de algemene functie aanroept en een van de meer specifieke functies hieronder aanroepen.

Stuurt alle communicatiekanalen. Deze functie moet worden opgeroepen vanuit een gebruikerstransactie.

SEND_ALL(ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

SEND_FOLDER

Verstuurt openstaande transmissies van de opgegeven transmissiefolder. Deze functie moet worden opgeroepen vanuit een gebruikerstransactie.

SEND_FOLDER(TransmissionFolderCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
TransmissionFolderCodeFilter

De code van de verzendmap of een filterstring op het codeveld.

ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

SEND_COMMUNICATIONCHANNEL

Stuurt open transmissies van het gespecificeerde communicatiekanaal. Deze functie moet worden opgeroepen vanuit een gebruikerstransactie.

SEND_COMMUNICATIONCHANNEL(CommunicationChannelCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
CommunicationChannelCodeFilter

De code van het communicatiekanaal of een filterstring op het codeveld.

ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

PROCESS

PROCESS(ProcessFollowing : Boolean;ProcessingQueueView : Text[250];UserTransactionFilter : Boolean)
ProcessFollowing

Of de nabewerking moet worden uitgevoerd. Normaal gesproken wil je dit op True zetten.

ProcessQueueView

Een filter op de nabewerkingen. U kunt normaal gesproken willen passeren in am lege tekenreeks.

UserTransactionFilter

Of alleen post-processen van de huidige gebruikerstransactie moeten worden verwerkt.

De ontvanger / afzender instellen

SET_COMMUNICATION_CHANNEL

Stelt het communicatiekanaal in voor de volgende mapping binnen de gebruikerstransactie.

SET_COMMUNICATION_CHANNEL(ChannelCode : Code[20])
ChannelCode

De code van het communicatiekanaal.

SET_RECEIVER_PARTNER

Stelt de partner van de ontvanger in voor de volgende mapping in de gebruikerstransactie.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

De partnercode van de ontvanger.

SET_RECEIVER_IDENTIFICATION

Stelt de identificatie van de ontvanger in voor de volgende mapping in de gebruikerstransactie.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

De identificatie van de ontvanger. Dit is een vrije tekst, die een speciale betekenis kan hebben op specifieke communicatiekanalen.

SET_SENDER_PARTNER

Stelt de afzender partner in voor het volgende mapping gesprek binnen de gebruikerstransactie.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

De afzender-partnercode.

SET_SENDER_IDENTIFICATION

Stelt de identificatie van de afzender in voor de volgende mapping in de gebruikerstransactie.

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

De identificatie van de ontvanger. Dit is een vrije tekst, die een speciale betekenis kan hebben op specifieke communicatiekanalen.

Registratie en foutafhandeling

De volgende functies kunnen alleen worden opgeroepen terwijl een mapping actief is. Deze functies zijn bedoeld om te worden gebruikt voor aangepaste foutafhandeling vanaf code.

LogError

Logt een foutmelding in.

LogError(ErrorMessage : Text[1024])
ErrorMessage

De foutmelding. De uitvoering zal na deze oproep worden voortgezet. Om de regelstroom te onderbreken, gebruikt u de native ERROR-functie.

LogWarning

Logt een waarschuwing in.

LogWarning(WarningMessage : Text[1024])
WarningMessage

De tekst van de waarschuwing.

LogInformation

Logboekinformatie.

LogInformation(InformationMessage : Text[1024])
InformationMessage

De te loggen informatie.

LogDocumentError

Registreert een fout die bij een EDI-document hoort. Er is een meer universele functie genaamd LogRecIDErrorWithCode.

LogDocumentError(ErrorMessage : Text[1024];EDIDocument : Record "EDI Document")
ErrorMessage

De foutmelding.

EDIDocument

Het EDI Document waar de fout bij hoort.

LogDocumentWarning

Registreert een waarschuwing die bij een EDI-document hoort. Er is een meer universele functie die LogRecIDWarningWithCode heet.

LogDocumentWarning(WarningMessage : Text[1024];EDIDocument : Record "EDI Document")
WarningMessage

De waarschuwing om te worden gelogd.

EDIDocument

Het EDI Document waar de fout bij hoort.

LogDocumentInformation

Legt een informatie vast die bij een EDI-document hoort. Er is een meer universele functie die LogRecIDInformationWithCode heet.

LogDocumentInformation(InformationMessage : Text[1024];EDIDocument : Record "EDI Document")
InformationMessage

De te loggen informatie.

EDIDocument

Het EDI Document waar de fout bij hoort.

LogDocumentLineError

Registreert een fout die hoort bij een EDI Document Line. Er is een meer algemene functie genaamd LogRecIDErrorWithCode.

LogDocumentLineError(ErrorMessage : Text[1024];EDIDocumentLine : Record "EDI Document Line")
ErrorMessage

De foutmelding die moet worden gelogd.

EDIDocumentLine

De EDI Document Line waar de fout bij hoort.

LogDocumentLineWarning

Registreert een waarschuwing die hoort bij een EDI Document Line. Er is een meer algemene functie genaamd LogRecIDWarningWithCode.

LogDocumentLineWarning(WarningMessage : Text[1024];EDIDocumentLine : Record "EDI Document Line")
WarningMessage

De waarschuwing die gelogd moet worden.

EDIDocumentLine

De EDI Document Line waar de fout bij hoort.

LogDocumentLineInformation

Legt een informatie vast die bij een EDI-documentlijn hoort. Er is een meer algemene functie genaamd LogRecIDInformationWithCode.

LogDocumentLineInformation(InformationMessage : Text[1024];EDIDocumentLine : Record "EDI Document Line")
InformationMessage

De te loggen informatie.

EDIDocumentLine

De EDI Document Line waar de fout bij hoort.

LogErrorWithCode

Registreert een fout met een extra foutcode.

LogErrorWithCode(ContinueExecution : Boolean;ErrorMessage : Text[1024];Code : Code[20])
ContinueExecution

Of het nu gaat om het doorbreken van de regelstroom of om het voortzetten van de uitvoering

ErrorMessage

De foutmelding die moet worden gelogd.

Code

Een code om de fout te identificeren.

LogWarningWithCode

Logt een waarschuwing met een extra foutcode.

LogWarningWithCode(WarningMessage : Text[1024];Code : Code[20])
WarningMessage

De waarschuwing die gelogd moet worden.

Code

Een code om de fout te identificeren.

LogInformationWithCode

Registreert een informatie met een extra foutcode.

LogInformationWithCode(InformationMessage : Text[1024];Code : Code[20])
InformationMessage

De informatie die gelogd moet worden.

Code

Een code om de fout te identificeren.

LogRecIDErrorWithCode

Registreert een foutmelding die bij een specifiek record hoort.

LogRecIDErrorWithCode(ContinueExecution : Boolean;ErrorMessage : Text[1024];RecID : RecordID;Code : Code[20];IsUserAcceptable : Boolean)
ContinueExecution

Of het nu gaat om het doorbreken van de regelstroom of het voortzetten van de uitvoering.

ErrorMessage

De foutmelding die moet worden gelogd.

RecID

Het record ID waar de fout bij hoort.

Code

Een foutcode om de fout te identificeren.

IsUserAcceptable

Of de fout kan worden geaccepteerd door de eindgebruiker. Hiervoor is een niet-lege foutcode nodig.

LogRecIDWarningWithCode

Registreert een waarschuwing die bij een record hoort.

LogRecIDWarningWithCode(WarningMessage : Text[1024];RecID : RecordID;Code : Code[20])
WarningMessage

De waarschuwing die gelogd moet worden.

RecID

De record id waar de waarschuwing bij hoort.

Code

Een code om de logboekvermelding te identificeren.

LogRecIDInformationWithCode

Legt een informatie vast die bij een record hoort.

LogRecIDInformationWithCode(InformationMessage : Text[1024];RecID : RecordID;Code : Code[20])
InformationMessage

De informatie die gelogd moet worden.

RecID

De record id waar de informatie bij hoort.

Code

Een code om de logboekvermelding te identificeren.