Uso di XMLport nel codice AL

Completato

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;
}