Esercizio - Creazione di un oggetto XMLport per esportare i dati XML
Scenario
Uno sviluppatore presso CRONUS International Ltd deve creare un oggetto XMLport per esportare tutte le informazioni sui clienti dalla pagina Customer List in formato XML.
Attività
Creazione di una nuova estensione.
Creazione di un oggetto XMLport.
Creazione di un'estensione di pagina.
Esportazione dei dati tramite un flusso.
Passaggi
Avviare Visual Studio Code.
Selezionare Visualizza > Estensioni (CTRL+MAIUSC+X).
Immettere AL Language nella casella di ricerca Cerca le estensioni nel Marketplace.
Selezionare il pulsante verde Installa.
Creare un nuovo progetto di estensione AL. Selezionare Visualizza > Riquadro comandi... (CTRL+MAIUSC+P).
Immettere AL: Go! nella casella di ricerca e selezionare il comando dall'elenco.
Accettare il percorso suggerito (o immettere un altro percorso).
Selezionare la piattaforma di destinazione più recente.
Selezionare Microsoft cloud sandbox come endpoint di sviluppo.
Scaricare i simboli dell'applicazione. Selezionare Visualizza > Riquadro comandi... (CTRL+MAIUSC+P).
Immettere AL: Download symbols nella casella di ricerca e selezionare il comando dall'elenco.
Se richiesto, fornire le credenziali dell'organizzazione (account Microsoft 365 o account Microsoft Entra ID).
Aprire il file app.json e modificare il nome in Customer XML. Modificare l'impostazione autore in Cronus International Ltd.
Rimuovere il file HelloWorld.al.
Creare un nuovo file denominato CustomerXml.XmlPort.al.
Immettere txmlport e quindi premere TAB.
Modificare l'ID in 50103 e il nome in Customer XML.
Impostare Caption su Export Customers(s) to XML
Impostare la proprietà XMLport Direction su Export e la proprietà Format su XML.
Cambiare l'elemento di testo del frammento di codice in Customers.
In Customers creare un elemento TableElement. Modificare il nome in Customer e impostare SourceTableName su Customer.
Aggiungere un elemento FieldAttribute per i campi Numero e Codice lingua.
Creare un elemento FieldElement per i campi Nome e Nr. di telefono.
Creare un elemento TextElement per il campo Indirizzo. Impostare la proprietà XMLName su Indirizzo.
Creare un elemento FieldElement per i campi Address, Post Code e City all'interno dell'elemento di testo Address.
Rimuovere la sezione RequestPage.
xmlport 50103 "Customer XML" { Direction = Export; Format = Xml; Caption = 'Export Customers(s) to XML'; schema { textelement(Customers) { tableelement(Customer; Customer) { fieldattribute(Number; Customer."No.") { } fieldattribute(Language; Customer."Language Code") { } fieldelement(Name; Customer.Name) { } fieldelement(Phone; Customer."Phone No.") { } textelement(Address) { XmlName = 'Address'; fieldelement(StreetAndNr; Customer.Address) { } fieldelement(Zipcode; Customer."Post Code") { } fieldelement(City; Customer.City) { } } } } } }Creare un nuovo file denominato CustomerList.PageExt.al.
Immettere tpageext, quindi premere TAB.
Modificare l'ID in 50101 e il nome in CustomerList.
Modificare l'oggetto per estendere la pagina Customer List.
Nella sezione Azioni aggiungere una nuova azione denominata ExportToXml. Impostare la didascalia su Esporta in XML. Questa azione deve essere aggiunta come ultima azione nel gruppo &Customer.
Nel trigger OnAction creare una variabile denominata CustomerXml di tipo XMLport XML clienti. Usare la funzione SetDestination per impostare un elemento OutStream. Chiamare la funzione Export sulla variabile CustomerXml.
pageextension 50101 CustomerList extends "Customer List" { layout { // Add changes to page layout here } actions { // Add changes to page actions here addafter("&Customer") { action(ExportToXml) { Caption = 'Export to XML'; ToolTip = 'Export to XML'; ApplicationArea = All; Image = XMLFile; trigger OnAction() var TempBlob: Codeunit "Temp Blob"; CustomerXml: XmlPort "Customer XML"; OutStr: OutStream; InStr: InStream; FileName: Text; begin TempBlob.CreateOutStream(OutStr); CustomerXml.SetDestination(OutStr); CustomerXml.Export(); TempBlob.CreateInStream(InStr); FileName := 'Customers.xml'; File.DownloadFromStream(InStr, 'Download', '', '', FileName); end; } } } var myInt: Integer; }Aprire il file launch.json e impostare startupObjectId su 22, ovvero la Customer List.
Pubblicare l'estensione nella sandbox. Selezionare Visualizza > Riquadro comandi... (CTRL+MAIUSC+P).
Immettere AL: Publish nella casella di ricerca (o premere il tasto di scelta rapida F5) e selezionare il comando dall'elenco.
Selezionare l'azione Esporta in XML nel menu se si vuole testare la funzionalità XMLport.