Esempi di estensioni del report
I seguenti esempi spiegano come creare estensioni di report.
Esempio di aggiunta di campi agli elementi di dati
Il primo esempio mostra come creare un nuovo report, CustomerSales, in base a due tabelle: Cliente e Mov. contabili clienti.
L'esempio seguente mostra il codice AL per il report CustomerSales:
report 50100 CustomerSales
{
UsageCategory = ReportsAndAnalysis;
ApplicationArea = All;
Extensible = true;
RDLCLayout = 'src/CustomerSales.rdl';
dataset
{
dataitem(Customer; Customer)
{
column(No_Customer; "No.")
{
IncludeCaption = true;
}
column(Name_Customer; Name)
{
IncludeCaption = true;
}
dataitem(customerLedger; "Cust. Ledger Entry")
{
DataItemLink = "Customer No." = field("No.");
column(CustomerNo_customerLedger; "Customer No.")
{
IncludeCaption = true;
}
column(PostingDate_customerLedger; "Posting Date")
{
IncludeCaption = true;
}
column(AmountLCY_customerLedger; "Amount (LCY)")
{
IncludeCaption = true;
}
}
}
}
}
Come si evince dall'esempio, il report CustomerSales combina due tabelle, Cliente e Mov. contabili clienti con un join sul numero cliente.
Dalla tabella Cliente, i seguenti campi vengono aggiunti nel set di dati:
Nr.
Nome
Dalla tabella Mov. contabili clienti, i seguenti campi vengono aggiunti nel set di dati:
Nr. cliente
Data di registrazione
Importo (VL)
Nel layout del report è stata aggiunta una semplice tabella che contiene tutti i campi.
Dopo l'esecuzione, il report sarà visualizzato nel seguente layout.
L'esempio successivo illustra come creare un'estensione di report per aggiungere campi agli elementi di dati per il report CustomerSales.
reportextension 50100 CustomerSalesRepExt extends CustomerSales
{
dataset
{
// Add changes to dataitems and columns here
add(Customer)
{
column(City_Customer; City)
{
IncludeCaption = true;
}
}
add(customerLedger)
{
column(Currency_Code;"Currency Code")
{
IncludeCaption = true;
}
}
}
}
Copiare il layout originale del report CustomerSales nella cartella (progetto) dell'estensione del report, rinominarla, aggiungere un riferimento nell'oggetto estensione del report e quindi creare un pacchetto (CTRL+MAIUSC+B) del progetto per aggiornare il layout.
Ora il layout contiene i nuovi campi nel set di dati ed è quindi possibile aggiungerli nella tabella.
Dopo aver distribuito l'estensione del report, aprire la pagina Selezione layout report e modificare il layout integrato nel nuovo layout dell'estensione del report.
Dopo l'esecuzione, il report viene visualizzato nel seguente layout.
Esempio dell'aggiunta di un nuovo elemento di dati
Questo esempio mostra come aggiungere un elemento di dati a un report esistente. La prima attività consiste nel creare un nuovo report, CustomersAndVendors, con le informazioni di due tabelle: Cliente e Fornitore.
report 50101 CustomersAndVendors
{
UsageCategory = ReportsAndAnalysis;
ApplicationArea = All;
RDLCLayout = 'src/CustomersAndVendors.rdl';
dataset
{
dataitem(Customer; Customer)
{
column(dataitem_customer; 'dataitem_customer')
{ }
column(No_Customer; "No.")
{ }
column(Name_Customer; Name)
{ }
}
dataitem(Vendor; Vendor)
{
column(dataitem_vendor; 'dataitem_vendor')
{ }
column(No_Vendor; "No.")
{ }
column(Name_Vendor; Name)
{ }
}
}
}
Il report CustomersAndVendors unisce le tabelle Cliente e Fornitore. È quindi possibile aggiungere un layout con una tabella che contiene tutte le colonne, come mostrato nell'esempio seguente.
Il risultato del runtime del report è mostrato nello screenshot seguente.
Ora è possibile aggiungere un'estensione di report con il seguente codice AL:
reportextension 50101 CustomersAndVendorsRepExt extends CustomersAndVendors
{
RDLCLayout = 'src/CustomersAndVendorsRepExt.rdl';
dataset
{
// Add changes to dataitems and columns here
add(Customer)
{
column(City_Customer; City)
{ }
}
add(Vendor)
{
column(City_Vendor; City)
{ }
}
addlast(Vendor)
{
dataitem(Contact; Contact)
{
column(dataitem_contact; 'dataitem_contact')
{ }
column(No_Contact; "No.")
{ }
column(Name_Contact; Name)
{ }
column(City_Contact; City)
{ }
}
}
}
}
L'estensione di report CustomersAndVendorsRepExt aggiunge il campo Città agli elementi di dati Cliente e Fornitore, nonché il nuovo elemento di dati Contatto all'elemento di dati Fornitore.
Progettare il layout dell'estensione di report CustomersAndVendorsRepExt e aggiungere tutte le colonne del set di dati a una tabella, come mostrato nell'esempio seguente:
Quindi, dopo l'esecuzione del report, il risultato è il seguente.
Le colonne dell'elemento di dati Contatto vengono aggiunte alle colonne Fornitore nel set di dati e le righe Fornitore vengono ripetute per tutti i contatti. Benché questa azione crei un vero set di dati, potrebbe non essere il risultato previsto o desiderato. Pertanto, prestare attenzione nell'aggiungere un elemento di dati a un report esistente.
Esempio di aggiunta di un campo a un report e a una pagina di richiesta
L'esempio seguente mostra come aggiungere un campo al set di dati del report Vendite standard - Fattura.
La seguente estensione di report aggiunge il campo Nr. ordine al report Vendite standard - Fattura. oltre a dichiarare una nuova variabile, DisplayOrderInfo, che viene aggiunta alla pagina di richiesta e al set di dati.
reportextension 50102 StandardSalesInvoiceRepExt extends "Standard Sales - Invoice"
{
RDLCLayout = './src/StandardSalesInvoiceExtended.rdlc';
dataset
{
// Add changes to dataitems and columns here
add(Line)
{
column(Order_No_Line_Lbl; Line.fieldCaption("Order No."))
{}
column(Order_No_Line; Line."Order No.")
{}
column(DisplayOrderInfo;DisplayOrderInfo)
{}
}
}
requestpage
{
// Add changes to the requestpage here
layout
{
addlast(Options)
{
field(DisplayOrderInfo; DisplayOrderInfo)
{
ApplicationArea = Basic, Suite;
Caption = 'Show Order Information';
ToolTip = 'Specifies if you want Order Information to be shown on the document.';
}
}
}
}
var
DisplayOrderInfo: Boolean;
}
Nel layout del report, il campo Nr. ordine (e l'etichetta) viene aggiunto alla tabella dei dettagli, come mostrato nello screenshot seguente.
Inoltre, nella riga dei nuovi dettagli della tabella, Visibilità righe contiene l'espressione indicata di seguito.
Ora una volta eseguito il report Vendite standard - Fattura con il nuovo layout, la pagina di richiesta deve essere simile a quanto mostrato nello screenshot di seguito.
Nel report, il campo Nr. ordine è visibile quando contiene dati.
Di seguito è riportato un altro esempio di estensione del report.
L'esempio illustra un'estensione di tabella semplificata, che aggiunge un nuovo campo alla tabella Customer, MyField. L'estensione del report MyExtension aggiunge quindi MyField e un ulteriore campo nella tabella Customer originale al report Customer - Top 10 List, aggiungendo inoltre un nuovo layout Excel al report. L'esempio illustra anche come un nuovo campo aggiunto all'estensione del report può essere modificato usando il trigger OnBeforeAfterGetRecord.
Ecco un esempio di estensione del report più avanzato.
L'esempio illustra come una tabella e un report esistenti vengono estesi usando oggetti di estensione. I frammenti di codice mostrati in questo esempio non forniscono uno scenario end-to-end completo che può essere distribuito; hanno lo scopo di illustrare il modo in cui è possibile estendere le funzionalità esistenti usando l'Oggetto estensione tabella e l'Oggetto estensione report.













