在 AL 代码中使用 XMLports
虽然您可以将 XMLports 集成到用户界面中,但用户直接导出和导入数据的实际情况不经常出现。 AL 编程语言提供了多个函数来帮助您以编程方式控制 XMLports 的行为。
除了从外部文件导入数据和将数据导出到外部文件之外,XMLports 还提供流式传输功能来帮助您直接访问数据,而不管源类型或目标类型如何。 程序员不必了解特定源或目标的技术功能,可以始终如一地轻松访问它们。
有时候,XMLport 以及源或目标的方向无法由您预先确定,不能让用户去选择,并且必须在运行期间以编程方式进行控制。 在这些情况下,您可以使用 AL 函数动态确定 XMLport 将导入还是导出数据,以及哪些流将用作源或目标。
支持通过 XMLports 进行流式传输的 AL 函数为:
SetSource - 指定要用作数据导入源的 InStream 变量。
SetDestination - 指定要用作数据导出目标的 OutStream 变量。
Import - 使用 SetSource 函数从指定变量导入数据。
Export - 使用 SetDestination 函数将数据导出至指定变量。
以下代码示例演示了代码中正运行的 XMLport Export Contact。 SetDestination 函数用于设置 OutStream 变量。 Temp Blob codeunit 用于将 OutStream 转换为 InStream,后者可用于提示用户以 XML 文件形式下载导出内容。 您还可以使用本 InStream 将 XMLport 数据发送到外部 Web 服务。
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;
}