XMLports im AL-Code verwenden
Obwohl Sie XMLports in die Benutzeroberfläche integrieren können, sind tatsächliche Situationen, in denen Benutzer Daten direkt exportieren und importieren, selten. Die Programmiersprache AL bietet verschiedene Funktionen, mit denen Sie das Verhalten von XMLports programmgesteuert kontrollieren können.
XMLports importieren nicht nur Daten aus externen Dateien und exportieren sie in externe Dateien, sondern bieten auch Streaming-Funktionen, mit denen Sie unabhängig vom Quell‑ oder Zieltyp direkt auf Daten zugreifen können. Anstatt die technischen Möglichkeiten der jeweiligen Quelle oder des Ziels kennen zu müssen, können Programmierer konsistent und mit geringem Aufwand darauf zugreifen.
Gelegentlich können die Richtung des XMLport und Quelle oder Ziel nicht von Ihnen vorgegeben und nicht der Wahl des Benutzers überlassen werden. Stattdessen müssen sie während der Laufzeit programmgesteuert kontrolliert werden. In diesen Situationen können Sie mithilfe von AL-Funktionen dynamisch bestimmen, ob der XMLport Daten importiert oder exportiert und welcher Stream als Quelle oder Ziel verwendet wird.
Die AL-Funktionen, die das Streaming über XMLports unterstützen, sind:
SetSource – Gibt die InStream-Variable an, die als Quelle für den Datenimport verwendet werden soll.
SetDestination – Gibt die OutStream-Variable an, die als Ziel für den Datenexport verwendet werden soll.
Import – Importiert die Daten aus der angegebenen Variablen mithilfe der SetSource-Funktion.
Export – Exportiert die Daten in die angegebene Variable mithilfe der SetDestination-Funktion.
Das folgende Codebeispiel zeigt die die Ausführung von Kontakt exportieren von XMLport im Code. Die Funktion SetDestination wird verwendet, um die Variable OutStream einzustellen. Die Codeunit Temp Blob wird verwendet, um einen OutStream in InStream zu konvertieren. Dies kann verwendet werden, um den Benutzer aufzufordern, den Export als XML-Datei herunterzuladen. Sie können InStream auch verwenden, um die XMLport-Daten an einen externen Webdienst zu senden.
pageextension 50100 ContactList extends "Contact List"
{
layout
{
// Add changes to page layout here
}
actions
{
// Add changes to page actions here
addlast("F&unctions")
{
action(ExportContact)
{
ApplicationArea = All;
Caption = 'Export Contact(s)';
ToolTip = 'Export Contact(s)';
Image = ExportContact;
trigger OnAction()
var
FileManagement: Codeunit "File Management";
TempBlob: Codeunit "Temp Blob";
XmlExportContact: XmlPort "Export Contact";
InStr: InStream;
OutStr: OutStream;
FileName: Text;
begin
begin
FileName := 'ExportContacts.xml';
TempBlob.CreateOutStream(OutStr);
XmlExportContact.SetDestination(OutStr);
XmlExportContact.Export();
TempBlob.CreateInStream(InStr);
File.DownloadFromStream(InStr, 'Download XML Export', '',
FileManagement.GetToFilterText('', FileName),
FileName);
end;
end;
}
}
}
var
myInt: Integer;
}