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

ANVEDI Integration

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

Allgemeine Konzepte

In diesem Abschnitt werden wir zunächst die Kernbegriffe besprechen, die Sie verstehen sollten, um die Code-Beispiele lesen zu können.

Benutzer-Transaktionen

Anveo EDI Connect hat ein Konzept namens „Benutzertransaktionen“, das mehrere Datenbanktransaktionen umfassen und mehrere Fehler sammeln kann. Die meisten Aktionen in Anveo 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

Der Aufruf von END_USER_TRANSACTION ermöglicht es Ihnen, entweder Fehler anzuzeigen, die aktuelle Datenbanktransaktion abzubrechen oder einen Rückgabewert zu erhalten, unabhängig davon, ob ein Fehler aufgetreten ist. Wir werden das später im Detail besprechen.

BEGIN_USER_TRANSACTION

Startet eine neue Benutzertransaktion. Bitte beachten Sie, dass Sie Aufrufe nur an den Stellen in das EDI-Modul integrieren, an denen ein COMMIT stattfinden kann. In vielen Fällen wird das Modul alle Datenbankänderungen festschreiben, bevor die EDI-Logik ausgeführt wird. Ziehen Sie auch in Betracht, die Daten nur zu markieren und einen Hintergrundjob zur Ausführung der EDI-Logik zu verwenden.

Der angegebene Text wird dem Benutzer angezeigt, wenn ein Wartedialog geöffnet wird, 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 beenden.

SHOWDIALOGS

Mit dieser Funktion können Sie beliebige 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 z.B. 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 nicht gerade EDI verarbeiten.

END_USER_TRANSACTION

Diese Funktion beendet eine Benutzertransaktion.

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

Wenn bei der Transaktion Fehler aufgetreten sind, zeigen Sie diese in einem Dialog dem Endbenutzer an. Dieser Parameter hat keine Wirkung, wenn GUIALLOWED False ist.

BreakOnError

Ob das Modul einen Fehler auslösen und den aktuellen Prozessfluss unterbrechen soll. Der gesamte Code nach dieser Zeile wird nicht ausgeführt, wenn bei der Transaktion ein Fehler aufgetreten ist. Wenn Sie diesen Parameter auf True setzen, wird eine Fehlermeldung angezeigt, dass ein oder mehrere Fehler aufgetreten sind, falls es welche gab. In diesem Fall kann der Benutzer nicht die vollständige Liste der Fehler sehen.

Success

Ein Rückgabewert, unabhängig davon, ob ein Fehler aufgetreten ist oder nicht. Kehrt bei Erfolg True zurück, d.h. es gab keine Fehler; ansonsten False.

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

Arbeit mit Geschäftstransaktionen

RUN_BUSINESSTRANSACTION_JOB

Führt den Datenerfassungsauftrag einer bestimmten Geschäftsvorgangsart aus. Diese muss aus einer Benutzertransaktion heraus aufgerufen werden.

RUN_BUSINESSTRANSACTION_JOB(BusinessTransactionTypeCode : Code[20])
BusinessTransactionTypeCode

Code des Geschäftstransaktionstyps.

// 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: Job zur Erfassung von Geschäftsvorgangsdaten ausführen

START_BT_WITH_REC

Startet eine neue Geschäftstransaktion 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. Diese muss aus einer Benutzertransaktion heraus aufgerufen werden.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Aktionen

Manchmal möchten Sie auf einer Seite eine Schaltfläche zum Starten eines EDI-Prozesses erstellen oder Sie möchten diese z.B. in den Freigabeprozess integrieren. Für diese Fälle können Sie fast alle Aktionen des Moduls aus dem Code heraus ausführen. Bitte beachten Sie, dass EDI-Prozesse in der Regel automatisiert sein und im Hintergrund laufen sollten. Bevor Sie also Aktionen im Code hinzufügen, sollten Sie die Möglichkeit eines Hintergrundjobs als Alternative in Betracht ziehen.

EDI Mapping ausführen

Um ein EDI Mapping auszuführen, müssen wir eine Benutzertransaktion starten. Danach möchten wir vielleicht Daten an das Mapping weitergeben. Wir können dann das Mapping ausführen und das Ergebnis überprü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 zum Exportieren einer Rechnung

RESET_TABLEVIEWS

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

RESET_TABLEVIEWS()

SET_TABLEVIEW

Speichert eine Tabellenansicht unter einem angegebenen Namen. Muss aus einer Benutzertransaktion heraus aufgerufen werden.

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

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

FilterText

Der Filtertext in Form einer Anveo EDI Connect-Tabellenansicht. Sie sollten nach Möglichkeit die in Microsoft Dynamics NAV 2009R2 RTC eingebaute Funktion GETVIEW verwenden, um die korrekt formatierte Zeichenfolge zu erhalten.

GET_TABLEVIEW

Ruft einen gespeicherten Filter ab. Muss aus einer Benutzertransaktion heraus aufgerufen werden.

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

RUN

Führen Sie eine oder mehrere EDI-Abbildungen aus. Muss aus einer Benutzertransaktion heraus 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 zum Projektcode passende Filterzeichenfolge.

FormatFilter

Der Code des Mapping oder eine zum Formatcode passende Filterzeichenfolge.

CodeFilter

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

MultipleAllowed

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

ProcessFollowing

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessingQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

Andere Aktionen

RECEIVE_ALL

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

Empfängt alle Kommunikationskanäle. Diese Funktion muss aus einer Benutzertransaktion heraus 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 aus einer Benutzertransaktion heraus aufgerufen werden.

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

Der Code des Übertragungsfilters oder eine Filterzeichenfolge auf dem Codefeld.

ProcessFollowing

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

RECEIVE_COMMUNICATIONCHANNEL

Empfängt Daten von dem angegebenen Kommunikationskanal. Diese Funktion muss aus einer Benutzertransaktion heraus aufgerufen werden.

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

Der Code des Kommunikationskanals oder eine Filterzeichenfolge auf dem Codefeld.

ProcessFollowing

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

SEND_ALL

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

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

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

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

SEND_FOLDER

Sendet offene Übertragungen des angegebenen Übertragungsordners. Diese Funktion muss aus einer Benutzertransaktion heraus aufgerufen werden.

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

Der Code des Übertragungsordners oder eine Filterzeichenfolge auf dem Codefeld.

ProcessFollowing

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

SEND_COMMUNICATIONCHANNEL

Sendet offene Übertragungen des angegebenen Kommunikationskanals. Diese Funktion muss aus einer Benutzertransaktion heraus aufgerufen werden.

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

Der Code des Kommunikationskanals oder eine Filterzeichenfolge auf dem Codefeld.

ProcessFollowing

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

PROCESS

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

ob die Nachbearbeitung ausgeführt werden soll. Normalerweise möchten Sie dies auf True setzen.

ProcessQueueView

Ein Filter auf die Nachbearbeitungen. Normalerweise können Sie eine leere Zeichenkette einreichen wollen.

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änger-Identifikation für den folgenden Mapping innerhalb der Benutzertransaktion.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

Die Empfängeridentifikation. Dies ist ein Freitext, der auf bestimmten Kommunikationskanälen eine besondere Bedeutung haben könnte.

SET_SENDER_PARTNER

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

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Der Partnercode des Absenders.

SET_SENDER_IDENTIFICATION

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

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

Die Empfängeridentifikation. Dies ist ein Freitext, der auf bestimmten Kommunikationskanälen eine besondere Bedeutung haben könnte.

Protokollierung und Fehlerbehandlung

Die folgenden Funktionen können nur während eines laufenden Mapping aufgerufen werden. Diese Funktionen sind für benutzerdefinierte Fehlerbehandlungen aus dem Code heraus 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-Belegzeile, zu der der Fehler gehört.

LogDocumentLineWarning

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

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

Die Warnung, die protokolliert werden sollte.

EDIDocumentLine

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

LogDocumentLineInformation

Protokolliert eine Information, die zu einer EDI-Dokumentenzeile 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-Belegzeile, 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 sollte.

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 sollten.

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. Dies erfordert einen nicht leeren Fehlercode.

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 sollte.

RecID

Der Datensatz, zu dem die Warnung gehören soll.

Code

Ein Code zur Identifizierung des Protokolleintrags.

LogRecIDInformationWithCode

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

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

Die Informationen, die protokolliert werden sollten.

RecID

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

Code

Ein Code zur Identifizierung des Protokolleintrags.