Diese Seite wurde automatisch übersetzt. Ursprünglich wurde der Inhalt auf Englisch verfasst.

ANVEDI Integration

Die Codeunit enthält alle öffentlichen API-Aufrufe zum EDI-Modul, die Sie möglicherweise von Ihrem benutzerdefinierten Code aus aufrufen möchten. Alle Funktionen in dieser Codeunit sollen verwendet werden, wenn Sie direkt per Code eine EDI-Aktion starten wollen.

Allgemeine Konzepte

In diesem Abschnitt werden wir zunächst die grundlegenden Konzepte besprechen, die Sie verstehen sollten, um die Codebeispiele lesen zu können.

Benutzer-Transaktionen

Anvaigo EDI Connect verfügt über ein Konzept namens „Benutzertransaktionen“, das mehrere Datenbanktransaktionen umfassen und mehrere Fehler sammeln kann. Die meisten Aktionen in Anvaigo EDI Connect erfordern eine offene Benutzertransaktion, um sie auszuführen. Sie können eine Benutzertransaktion durch Aufruf starten:

// 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);
Beispiel: Starten einer Benutzertransaktion

Mit dem Aufruf von END_USER_TRANSACTION können Sie entweder Fehler anzeigen, die aktuelle Datenbanktransaktion abbrechen oder einen Rückgabewert erhalten, ob ein Fehler aufgetreten ist. Wir werden dies später im Detail besprechen.

BEGIN_USER_TRANSACTION

Startet eine neue Benutzertransaktion. Bitte beachten Sie, daß Sie Aufrufe im EDI-Modul nur an Stellen integrieren, an denen ein COMMIT stattfinden kann. In vielen Fällen wird das Modul alle Datenbankänderungen festschreiben, bevor es die EDI-Logik ausführt. Ziehen Sie auch in Erwägung, die Daten lediglich zu markieren und die EDI-Logik über einen Hintergrundjob auszuführen.

Der angegebene Text wird dem Benutzer angezeigt, wenn ein Wartedialog geöffnet ist, da der Vorgang Zeit benötigt.

BEGIN_USER_TRANSACTION(Text : Text[1024])

Sie sollten einen Aufruf von BEGIN_USER_TRANSACTION immer mit einem Aufruf von END_USER_TRANSACTION abschließen.

SHOWDIALOGS

Mit dieser Funktion können Sie alle EDI-Dialoge ausblenden.

SHOWDIALOGS(ShowDialogs : Boolean)

Der Parameter gibt an, ob die Dialoge angezeigt werden oder nicht. Ein Aufruf dieser Funktion muss innerhalb einer Benutzertransaktion erfolgen. Diese Funktion wird normalerweise direkt nach BEGIN_USER_TRANSACTION aufgerufen.

ISPROCESSING

Diese Funktion gibt zurück, ob Sie sich innerhalb einer Mapping befinden. Sie können diesen Wert bei der Validierung von Triggern überprüfen, um beispielsweise ein anderes Verhalten bei der Verarbeitung von EDI-Prozessen zu erreichen. Sie können diesen Wert auch verwenden, um Eingabedialoge nur dann anzuzeigen, wenn Sie kein EDI verarbeiten.

END_USER_TRANSACTION

Mit dieser Funktion wird eine Benutzertransaktion abgebrochen.

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

Wenn während der Transaktion Fehler aufgetreten sind, werden diese dem Endbenutzer in einem Dialog angezeigt. Dieser Parameter hat keine Auswirkung, wenn GUIALLOWED auf False steht.

BreakOnError

Ob das Modul einen Fehler auslösen soll, der den aktuellen Prozessablauf unterbricht. Der gesamte Code nach dieser Zeile wird nicht ausgeführt, wenn während der Transaktion ein Fehler auftrat. Wenn dieser Parameter auf True gesetzt wird, wird eine Fehlermeldung angezeigt, dass ein oder mehrere Fehler aufgetreten sind, falls es welche gab. In diesem Fall kann der Benutzer die vollständige Liste der Fehler nicht sehen.

Success

Ein Rückgabewert, ob ein Fehler aufgetreten ist oder nicht. Gibt bei Erfolg True zurück, d.h. keine Fehler aufgetreten sind; ansonsten False.

Der Rückgabewert war in älteren Versionen des Moduls anders benannt, hatte aber die gleiche Funktion. Der alte Name des Rückgabewerts war falsch, die Funktion gab bei Erfolg immer True zurück.

Arbeiten mit Business-Transaktionen

RUN_BUSINESSTRANSACTION_JOB

Führt den Datenerfassungsauftrag für eine bestimmte Geschäftsvorgangsart aus. Dieser muss innerhalb einer Benutzertransaktion aufgerufen werden.

RUN_BUSINESSTRANSACTION_JOB(BusinessTransactionTypeCode : Code[20])
BusinessTransactionTypeCode

Code der Geschäftsvorgangsart.

// 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);
Beispiel: Datenerfassungsauftrag für Geschäftsvorfälle ausführen

START_BT_WITH_REC

Startet einen neuen Geschäftsvorgang für den angegebenen Code und die Datensatz-ID.

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

RUN_BT_BATCH_JOB

Führt den Batch-Sammelauftrag mit dem angegebenen Namen aus. Dieser muss innerhalb einer Benutzertransaktion aufgerufen werden.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Wenn Sie die Funktion mit RUN_BUSINESSTRANSACTION_JOB kombinieren wollen, müssen Sie beide Funktionen in separaten BEGIN..END_USER_TRANSACTION-Blöcken kapseln und folgendes dazwischen einfügen:

COMMIT;
SELECTLATESTVERSION();

Aktionen

Manchmal möchten Sie eine Schaltfläche auf einer Seite erstellen, um einen EDI-Prozess zu starten, oder Sie möchten ihn z. B. in den Freigabeprozess integrieren. In diesen Fällen können Sie fast alle Aktionen des Moduls über den Code ausführen. Bitte beachten Sie, dass EDI-Prozesse in der Regel automatisiert und im Hintergrund ablaufen sollten. Bevor Sie also Aktionen in den Code einfügen, sollten Sie die Möglichkeit eines Hintergrundauftrags als Alternative in Betracht ziehen.

Führen Sie ein EDI Mapping durch

Um ein EDI Mapping durchzuführen, müssen wir eine Benutzertransaktion starten. Danach wollen wir vielleicht Daten an die Mapping übergeben. Wir können dann das Mapping ausführen und das Ergebnis prüfen, wenn wir die Benutzertransaktion beenden. Die detaillierte Beschreibung der Befehle finden Sie nach dem Codebeispiel.

// 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);
Code-Beispiel: Ausführen eines Mapping, um eine Rechnung zu exportieren

RESET_TABLEVIEWS

Setzt alle vorhandenen gespeicherten Tabellenansichten zurück. Muss innerhalb einer Benutzertransaktion aufgerufen werden.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Speichert einen Tabellenview unter einem bestimmten Namen. Muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Ein Code, der den Namen des Filters darstellt. Sie müssen genau denselben Namen in der EDI Mapping angeben, um den Filter abzurufen.

FilterText

Der Filtertext in Form einer Anvaigo EDI Connect-Tabellenansicht. Wenn möglich, sollten Sie die in Microsoft Dynamics 365 Business Central eingebaute Funktion GETVIEW verwenden, um die korrekt formatierte Zeichenfolge zu erhalten.

GET_TABLEVIEW

Ruft einen gespeicherten Filter ab. Muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

RUN

Führen Sie ein oder mehrere EDI-Mappings aus. Muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Der Code des Projekts oder eine dem Projektcode entsprechende Filterzeichenfolge.

FormatFilter

Der Code des Mapping oder eine dem Formatcode entsprechende Filterzeichenfolge.

CodeFilter

Der Code des Mapping oder ein Filter, der den gewünschten Mapping entspricht.

MultipleAllowed

Ob mehrere Zuordnungen ausgeführt werden sollen, wenn ein Filter angegeben ist. Dies ist eine Sicherheitsfunktion, die verhindert, dass Sie mehr als einen Mapping ausführen.

ProcessFollowing

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessingQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

Andere Aktionen

RECEIVE_ALL

Veraltete Funktion. Sie sollten es vermeiden, die allgemeine Funktion aufzurufen, und stattdessen eine der spezifischeren Funktionen unten aufrufen.

Empfängt alle Kommunikationskanäle. Diese Funktion muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

RECEIVE_FOLDER

Empfängt die Daten aus dem angegebenen Übertragungsordner oder den Ordnern. Diese Funktion muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Der Code des Übertragungsfilters oder eine Filterzeichenfolge im Codefeld.

ProcessFollowing

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

RECEIVE_COMMUNICATIONCHANNEL

Empfängt Daten über den angegebenen Kommunikationskanal. Diese Funktion muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Der Code des Kommunikationskanals oder eine Filterzeichenfolge für das Codefeld.

ProcessFollowing

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

SEND_ALL

Veraltete Funktion. Sie sollten es vermeiden, die allgemeine Funktion aufzurufen, und stattdessen eine der spezifischeren Funktionen unten aufrufen.

Sendet alle Kommunikationskanäle. Diese Funktion muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

SEND_FOLDER

Sendet offene Übertragungen aus dem angegebenen Übertragungsordner. Diese Funktion muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Der Code des Übertragungsordners oder eine Filterzeichenfolge für das Codefeld.

ProcessFollowing

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

SEND_COMMUNICATIONCHANNEL

Sendet offene Übertragungen auf dem angegebenen Kommunikationskanal. Diese Funktion muss innerhalb einer Benutzertransaktion aufgerufen werden.

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

Der Code des Kommunikationskanals oder eine Filterzeichenfolge für das Codefeld.

ProcessFollowing

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

PROCESS

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

Ob die Nachbearbeitung durchgeführt werden soll. Normalerweise sollten Sie diesen Wert auf True setzen.

ProcessQueueView

Ein Filter für die Nachbearbeitungen. Sie können normalerweise eine leere Zeichenkette eingeben.

UserTransactionFilter

Ob nur Nachbearbeitungen aus der aktuellen Benutzertransaktion verarbeitet werden sollen.

Einstellung des Empfängers/Absenders

SET_COMMUNICATION_CHANNEL

Setzt den Kommunikationskanal für den folgenden Mapping innerhalb der Benutzertransaktion.

SET_COMMUNICATION_CHANNEL(ChannelCode : Code[20])
ChannelCode

Der Code des Kommunikationskanals.

SET_RECEIVER_PARTNER

Setzt den Empfängerpartner für den folgenden Mapping innerhalb der Benutzertransaktion.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

Der Partnercode des Empfängers.

SET_RECEIVER_IDENTIFICATION

Setzt die Empfängeridentifikation für den folgenden Mapping innerhalb der Benutzertransaktion.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

Die Identifizierung des Empfängers. Dies ist ein Freitext, der auf bestimmten Kommunikationskanälen eine besondere Bedeutung haben kann.

SET_SENDER_PARTNER

Setzt den Absenderpartner für den folgenden Mapping innerhalb der Benutzertransaktion.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Der Partnercode des Absenders.

SET_SENDER_IDENTIFICATION

Legt die Absenderkennung für den folgenden Mapping innerhalb der Benutzertransaktion fest.

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

Die Identifizierung des Empfängers. Dies ist ein Freitext, der auf bestimmten Kommunikationskanälen eine besondere Bedeutung haben kann.

Protokollierung und Fehlerbehandlung

Die folgenden Funktionen können nur aufgerufen werden, während ein Mapping läuft. Diese Funktionen sind für benutzerdefinierte Fehlerbehandlungen im Code gedacht.

LogError

Protokolliert eine Fehlermeldung.

LogError(ErrorMessage : Text[1024])
ErrorMessage

Die Fehlermeldung. Die Ausführung wird nach diesem Aufruf fortgesetzt. Um den Kontrollfluss zu unterbrechen, verwenden Sie die native Funktion ERROR.

LogWarning

Protokolliert eine Warnung.

LogWarning(WarningMessage : Text[1024])
WarningMessage

Der Text der Warnung.

LogInformation

Protokolliert Informationen.

LogInformation(InformationMessage : Text[1024])
InformationMessage

Die zu protokollierenden Informationen.

LogDocumentError

Protokolliert einen Fehler, der zu einem EDI-Dokument gehört. Es gibt eine universellere Funktion namens LogRecIDErrorWithCode.

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

Die Fehlermeldung.

EDIDocument

Das EDI-Dokument, zu dem der Fehler gehört.

LogDocumentWarning

Protokolliert eine Warnung, die zu einem EDI-Dokument gehört. Es gibt eine universellere Funktion namens LogRecIDWarningWithCode.

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

Die zu protokollierende Warnung.

EDIDocument

Das EDI-Dokument, zu dem der Fehler gehört.

LogDocumentInformation

Protokolliert eine Information, die zu einem EDI-Dokument gehört. Es gibt eine universellere Funktion namens LogRecIDInformationWithCode.

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

Die zu protokollierenden Informationen.

EDIDocument

Das EDI-Dokument, zu dem der Fehler gehört.

LogDocumentLineError

Protokolliert einen Fehler, der zu einer EDI-Belegzeile gehört. Es gibt eine allgemeinere Funktion namens LogRecIDErrorWithCode.

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

Die zu protokollierende Fehlermeldung.

EDIDocumentLine

Die EDI-Dokumentzeile, zu der der Fehler gehört.

LogDocumentLineWarning

Protokolliert eine Warnung, die zu einer EDI-Belegzeile gehört. Es gibt eine allgemeinere Funktion namens LogRecIDWarningWithCode.

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

Die Warnung, die protokolliert werden soll.

EDIDocumentLine

Die EDI-Dokumentzeile, zu der der Fehler gehört.

LogDocumentLineInformation

Protokolliert eine Information, die zu einer EDI-Dokumentzeile gehört. Es gibt eine allgemeinere Funktion namens LogRecIDInformationWithCode.

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

Die zu protokollierenden Informationen.

EDIDocumentLine

Die EDI-Dokumentzeile, zu der der Fehler gehört.

LogErrorWithCode

Protokolliert einen Fehler mit einem zusätzlichen Fehlercode.

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

ob der Kontrollfluss unterbrochen oder die Ausführung fortgesetzt werden soll

ErrorMessage

Die zu protokollierende Fehlermeldung.

Code

Ein Code zur Identifizierung des Fehlers.

LogWarningWithCode

Protokolliert eine Warnung mit einem zusätzlichen Fehlercode.

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

Die Warnung, die protokolliert werden soll.

Code

Ein Code zur Identifizierung des Fehlers.

LogInformationWithCode

Protokolliert eine Information mit einem zusätzlichen Fehlercode.

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

Die Informationen, die protokolliert werden sollen.

Code

Ein Code zur Identifizierung des Fehlers.

LogRecIDErrorWithCode

Protokolliert eine Fehlermeldung, die zu einem bestimmten Datensatz gehören sollte.

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

Ob der Kontrollfluss unterbrochen oder die Ausführung fortgesetzt werden soll.

ErrorMessage

Die zu protokollierende Fehlermeldung.

RecID

Die Datensatz-ID, zu der der Fehler gehört.

Code

Ein Fehlercode zur Identifizierung des Fehlers.

IsUserAcceptable

ob der Fehler vom Endbenutzer akzeptiert werden kann. Dazu ist ein nicht leerer Fehlercode erforderlich.

LogRecIDWarningWithCode

Protokolliert eine Warnung, die zu einem Datensatz gehören sollte.

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

Die Warnung, die protokolliert werden soll.

RecID

Die Datensatz-ID, zu der die Warnung gehören soll.

Code

Ein Code zur Identifizierung des Protokolleintrags.

LogRecIDInformationWithCode

Protokolliert eine Information, die zu einem Datensatz gehören soll.

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

Die Informationen, die protokolliert werden sollen.

RecID

Die Datensatz-ID, zu der die Informationen gehören sollen.

Code

Ein Code zur Identifizierung des Protokolleintrags.