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

ANVEDI Integration

De ANVEDI Integration codeunit bevat alle openbare API-aanroepen naar de EDI-module die u mogelijk wilt aanroepen vanuit uw aangepaste code. Alle functies in deze codeunit moeten worden gebruikt als u direct een EDI-actie wilt starten via een code.

Algemene concepten

In dit gedeelte bespreken we eerst de kernconcepten, die je moet begrijpen om de codevoorbeelden te kunnen lezen.

Gebruikerstransacties

Anvaigo EDI Connect heeft een concept dat “gebruikerstransacties” heet, die meerdere databasetransacties kunnen overspannen en meerdere fouten kunnen verzamelen. De meeste acties in Anvaigo EDI Connect vereisen een open gebruikerstransactie om ze uit te voeren. Je 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

Met de aanroep van END_USER_TRANSACTION kun je fouten weergeven, de huidige databasetransactie afbreken of een retourwaarde krijgen, of er een fout is opgetreden. We zullen het later in detail bespreken.

BEGIN_USER_TRANSACTION

Start een nieuwe gebruikerstransactie. Let op dat je calls alleen 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 alleen 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 wachtdialoog wordt geopend, omdat het proces tijd in beslag neemt.

BEGIN_USER_TRANSACTION(Text : Text[1024])

Je moet een aanroep van BEGIN_USER_TRANSACTION altijd beëindigen met een aanroep van END_USER_TRANSACTION.

SHOWDIALOGS

Deze functie kan worden gebruikt om EDI-dialoogvensters te verbergen.

SHOWDIALOGS(ShowDialogs : Boolean)

De parameter bepaalt of de dialoogvensters al dan niet worden weergegeven. Een aanroep van deze functie moet zich binnen een gebruikerstransactie bevinden. Normaal gesproken roep je deze functie direct na BEGIN_USER_TRANSACTION aan.

ISPROCESSING

Deze functie geeft terug of u zich binnen een mapping bevindt. U kunt deze waarde controleren bij het valideren van triggers, bijvoorbeeld om een ander gedrag te krijgen bij het verwerken van EDI-processen. U kunt deze waarde ook gebruiken om invoerdialoogvensters alleen 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 opgetreden tijdens de transactie, toon deze dan in een dialoogvenster aan de eindgebruiker. Deze parameter heeft geen effect als GUIALLOWED False is.

BreakOnError

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

Success

Een retourwaarde, of er een fout is opgetreden of niet. Geeft True terug bij succes, d.w.z. er geen fouten waren; anders False.

De retourwaarde kreeg in oudere versies van de module een andere naam, maar had dezelfde functie. De oude naam van de terugkeerwaarde was onjuist, de functie gaf altijd True terug bij succes.

Werken met zakelijke transacties

RUN_BUSINESSTRANSACTION_JOB

Voert de gegevensverzamelingstaak van een opgegeven bedrijfstransactietype uit. Dit moet worden aangeroepen 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: Opdracht voor gegevensverzameling voor bedrijfstransacties uitvoeren

START_BT_WITH_REC

Start een nieuwe bedrijfstransactie voor de opgegeven code en record-id.

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

RUN_BT_BATCH_JOB

Voert de batchverzamelingstaak uit met de opgegeven naam. Dit moet worden aangeroepen vanuit een gebruikerstransactie.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Als u het wilt combineren met RUN_BUSINESSTRANSACTION_JOB, moet u beide functies in afzonderlijke BEGIN..END_USER_TRANSACTION-blokken inkapselen en het volgende ertussen plaatsen:

COMMIT;
SELECTLATESTVERSION();

Acties

Soms wilt u een knop op een pagina maken om een EDI-proces te starten, of wilt u het bijvoorbeeld integreren in het release-proces. In deze gevallen kun je bijna alle acties van de module uitvoeren vanuit code. Houd er rekening mee dat EDI-processen meestal geautomatiseerd moeten zijn en op de achtergrond moeten draaien. Dus voordat je acties in code toevoegt, moet je de mogelijkheid van een achtergrondtaak als alternatief overwegen.

Een EDI Mapping uitvoeren

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 vind je 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: Een mapping uitvoeren om een factuur te exporteren

RESET_TABLEVIEWS

Zet alle bestaande opgeslagen tabelweergaven terug. Moet worden aangeroepen vanuit een gebruikerstransactie.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Slaat een tabelweergave op onder een opgegeven naam. Moet worden aangeroepen vanuit een gebruikerstransactie.

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

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

FilterText

De filtertekst in de vorm van een Anvaigo EDI Connect-tabelweergave. Je moet de Microsoft Dynamics 365 Business Central ingebouwde functie GETVIEW gebruiken, indien mogelijk, om de correct geformatteerde string te krijgen.

GET_TABLEVIEW

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

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

RUN

Voer een of meer EDI-toewijzingen uit. Moet worden aangeroepen 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 de mapping of een filterstring die overeenkomt met de indelingscode.

CodeFilter

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

MultipleAllowed

Of er meerdere toewijzingen moeten worden uitgevoerd als er een filter is opgegeven. Dit is een veiligheidsfunctie die voorkomt dat u meer dan één mapping uitvoert.

ProcessFollowing

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

ProcessingQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

Andere acties

RECEIVE_ALL

Afgeschreven functie. Je moet de algemene functie niet aanroepen, maar een van de meer specifieke functies hieronder.

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

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

RECEIVE_FOLDER

Ontvangt de gegevens van de opgegeven transmissiemap of mappen. Deze functie moet worden aangeroepen 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 instellen op True.

ProcessQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

RECEIVE_COMMUNICATIONCHANNEL

Ontvangt gegevens van het opgegeven communicatiekanaal. Deze functie moet worden aangeroepen 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 instellen op True.

ProcessQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

SEND_ALL

Afgeschreven functie. Je moet de algemene functie niet aanroepen, maar een van de meer specifieke functies hieronder.

Verzendt alle communicatiekanalen. Deze functie moet worden aangeroepen vanuit een gebruikerstransactie.

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

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

ProcessQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

SEND_FOLDER

Verstuurt open transmissies van de opgegeven transmissiemap. Deze functie moet worden aangeroepen vanuit een gebruikerstransactie.

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

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

ProcessFollowing

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

ProcessQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

SEND_COMMUNICATIONCHANNEL

Verstuurt open transmissies van het opgegeven communicatiekanaal. Deze functie moet worden aangeroepen 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 instellen op True.

ProcessQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

PROCESS

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

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

ProcessQueueView

Een filter op de nabewerkingen. Normaal gesproken kun je een lege tekenreeks opgeven.

UserTransactionFilter

Of alleen nabewerkingen 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 ontvangerpartner in voor de volgende mapping binnen de gebruikerstransactie.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

De partnercode van de ontvanger.

SET_RECEIVER_IDENTIFICATION

Stelt de ontvangeridentificatie in voor de volgende mapping binnen de gebruikerstransactie.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

De ontvangeridentificatie. Dit is een vrije tekst die een speciale betekenis kan hebben op specifieke communicatiekanalen.

SET_SENDER_PARTNER

Stelt de afzenderpartner in voor de volgende mapping binnen de gebruikerstransactie.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

De partnercode van de afzender.

SET_SENDER_IDENTIFICATION

Stelt de afzenderidentificatie in voor de volgende mapping binnen de gebruikerstransactie.

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

De ontvangeridentificatie. Dit is een vrije tekst die een speciale betekenis kan hebben op specifieke communicatiekanalen.

Loggen en foutafhandeling

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

LogError

Logt een foutmelding.

LogError(ErrorMessage : Text[1024])
ErrorMessage

De foutmelding. De uitvoering gaat door na deze oproep. Gebruik de native ERROR-functie om de besturingsstroom te onderbreken.

LogWarning

Logt een waarschuwing.

LogWarning(WarningMessage : Text[1024])
WarningMessage

De tekst van de waarschuwing.

LogInformation

Logboekinformatie.

LogInformation(InformationMessage : Text[1024])
InformationMessage

De informatie die moet worden gelogd.

LogDocumentError

Logt 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

Logt een waarschuwing die bij een EDI-document hoort. Er is een meer universele functie genaamd LogRecIDWarningWithCode.

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

De waarschuwing die moet worden gelogd.

EDIDocument

Het EDI-document waar de fout bij hoort.

LogDocumentInformation

Logt een informatie die bij een EDI-document hoort. Er is een meer universele functie genaamd LogRecIDInformationWithCode.

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

De informatie die moet worden gelogd.

EDIDocument

Het EDI-document waar de fout bij hoort.

LogDocumentLineError

Logt een fout die bij een EDI-documentregel hoort. Er is een meer algemene functie met de naam LogRecIDErrorWithCode.

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

De foutmelding die moet worden gelogd.

EDIDocumentLine

De EDI-documentregel waartoe de fout behoort.

LogDocumentLineWarning

Logt een waarschuwing die bij een EDI-documentregel hoort. Er is een meer algemene functie genaamd LogRecIDWarningWithCode.

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

De waarschuwing die moet worden gelogd.

EDIDocumentLine

De EDI-documentregel waartoe de fout behoort.

LogDocumentLineInformation

Logt een informatie behorend bij een EDI Documentregel. Er is een meer algemene functie met de naam LogRecIDInformationWithCode.

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

De informatie die moet worden gelogd.

EDIDocumentLine

De EDI-documentregel waartoe de fout behoort.

LogErrorWithCode

Logt een fout met een extra foutcode.

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

Of de controlestroom moet worden onderbroken of dat de uitvoering moet worden voortgezet

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 moet worden gelogd.

Code

Een code om de fout te identificeren.

LogInformationWithCode

Logt een informatie met een extra foutcode.

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

De informatie die moet worden gelogd.

Code

Een code om de fout te identificeren.

LogRecIDErrorWithCode

Logt een foutmelding die bij een specifiek record hoort.

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

Of de controlestroom moet worden onderbroken of dat de uitvoering moet worden voortgezet.

ErrorMessage

De foutmelding die moet worden gelogd.

RecID

De record-ID waartoe de fout behoort.

Code

Een foutcode om de fout te identificeren.

IsUserAcceptable

Of de fout aanvaardbaar is voor de eindgebruiker. Dit vereist een niet-lege foutcode.

LogRecIDWarningWithCode

Logt een waarschuwing die bij een record hoort.

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

De waarschuwing die moet worden gelogd.

RecID

De record id waar de waarschuwing bij hoort.

Code

Een code om de logboekvermelding te identificeren.

LogRecIDInformationWithCode

Logt informatie die bij een record hoort.

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

De informatie die moet worden gelogd.

RecID

Het record id waar de informatie bij hoort.

Code

Een code om de logboekvermelding te identificeren.