Uso di XMLport nel codice AL
Sebbene sia possibile integrare XMLport nell'interfaccia utente, le situazioni reali in cui gli utenti esportano e importano direttamente i dati sono rare. Il linguaggio di programmazione AL offre diverse funzioni per agevolare il controllo del comportamento di XMLport a livello programmatico.
Oltre all'importazione e all'esportazione dei dati da file esterni, XMLport offre capacità di flusso per consentire l'accesso diretto ai dati, indipendentemente dal tipo di origine o di destinazione. Anche senza conoscere le funzionalità tecniche della specifica origine o destinazione, i programmatori possono accedervi in modo coerente e con uno sforzo minimo.
Talvolta, i programmatori non sono in grado di determinare a priori la direzione di XMLport e l'origine o la destinazione, non possono neppure lasciare questa scelta all'utente ed è necessario implementare un controllo a livello programmatico in fase di runtime. In queste situazioni, è possibile usare le funzioni AL per determinare in modo dinamico se XMLport deve importare o esportare i dati, nonché quale flusso usare come origine o destinazione.
Le funzioni AL che supportano il flusso tramite XMLport sono le seguenti:
SetSource: specifica la variabile InStream da usare come origine per l'importazione dei dati.
SetDestination: specifica la variabile OutStream da usare come destinazione per l'esportazione dei dati.
Import: importa i dati dalla variabile designata tramite la funzione SetSource.
Export: esporta i dati nella variabile designata tramite la funzione SetDestination.
Il seguente esempio di codice mostra l'esecuzione di Esporta contatto dell'oggetto XMLport nel codice. Per impostare la variabile OutStream, è possibile usare la funzione SetDestination. La codeunit BLOB temporaneo consente di convertire una variabile OutStream in una variabile InStream che è possibile usare per chiedere all'utente di scaricare l'esportazione come file XML. È inoltre possibile usare questa variabile InStream per inviare i dati XMLport a un servizio Web esterno.
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;
}