Import / Export Bilancio ACG Vision4
Guida alla personalizzazione
Settembre 2011
© IBM Corp. 2011. All rights reserved.
Note
Le informazioni riportate nel presente documento sono distribuite “as is” senza alcuna garanzia implicita o
esplicita. E’ responsabilità dell’utente utilizzare queste informazioni o implementare le tecniche descritte
che richiedono la capacità dell’utente di valutarle ed integrarle all’interno dell’ambiente operativo. IBM
assicura l’accuratezza degli argomenti trattati in relazione alle specifiche situazioni descritte, tuttavia non
garantisce l’ottenimento dei medesimi o analoghi risultati in tutte le possibili condizioni operative
dell’ambiente utente. L’adattamento delle tecniche descritte agli ambienti operativi è effettuato a proprio
rischio.
Il presente documento può includere imprecisioni tecniche o errori di stampa. Modifiche al documento
potranno essere disponibili in date successive. La IBM può introdurre miglioramenti e/o variazioni ai
prodotti e/o programmi descritti nel presente documento in qualsiasi momento e senza preavviso.
Qualunque riferimento a siti web non IBM è fornito a solo titolo esemplificativo e non costituisce invito
all’utilizzo e/o navigazione. Il materiale presente nei siti web referenziati non è parte del prodotto IBM
fornito e il loro eventuale utilizzo è effettuato a proprio rischio.
Le informazioni relative a prodotti non IBM sono fornite dai rispettivi fornitori, dagli annunci pubblicitari e
da informazioni liberamente disponibili. IBM non ha collaudato tali prodotti e non può confermare
l’accuratezza delle prestazioni, la compatibilità o qualunque altra caratteristica relativa ai prodotti non
IBM. Qualunque richiesta sulle caratteristiche operative dei prodotti non IBM devono essere rivolte
direttamente ai rispettivi fornitori.
I programmi di esempio e i file di esempio descritti e/o scaricabili, sono parte integrante del
presente tutorial e quindi soggetti alle stesse condizioni di utilizzo riportate nella sessione
iniziale Note e Trademarks.
COPYRIGHT LICENSE:
Il presente documento può contenere esempi di applicazioni il cui codice sorgente illustra le tecniche di
programmazione su diversi ambienti operativi.
© IBM Corp. 2011. All rights reserved.
Trademarks
IBM, il logo IBM e ibm.com sono marchi o marchi registrati della International Business Machines
Corporation in diversi Paesi del mondo.
La lista aggiornata dei marchi registrati di IBM è disponibile sul sito
www.ibm.com/legal/copytrade.shtml, alla voce "Copyright and trademark information" .
I seguenti termini sono marchi o marchi registrati della International Business Machines Corporation in
diversi Paesi del mondo:
AS/400®
BladeCenter®
Cognos®
DB2®
DB2 Universal Database™
eServer™
i5/OS®
IBM®
iSeries®
OpenPower®
OS/400®
POWER®
Power Systems™
pSeries®
Rational®
System i®
System i5®
System p®
System p5®
System Storage®
System x®
WebSphere®
I seguenti termini sono marchi di altre aziende:
–
Adobe, il logo Adobe, PostScript e il logo PostScript sono entrambi marchi registrati o marchi di
Adobe Systems Incorporated negli Stati Uniti e/o in altri Paesi.
–
Intel, il logo Intel, Intel Inside, il logo Intel Inside, Intel Centrino, il logo Intel Centrino, Celeron, Intel
Xeon, Intel SpeedStep, Itanium e Pentium sono marchi o marchi registrati di Intel Corporation o delle
sue consociate e/o filiali negli Stati Uniti e in altri Paesi.
–
Linux è un marchio registrato di Linus Torvalds negli Stati Uniti, in altri Paesi, o in entrambi.
–
Microsoft, Windows, Windows NT e il logo di Windows sono marchi di Microsoft Corporation negli
Stati Uniti, in altri Paesi, o in entrambi.
–
UNIX è un marchio registrato di The Open Group negli Stati Uniti e in altri Paesi.
–
Java e tutti i marchi e i loghi basati su Java sono marchi o marchi registrati di Oracle e/o delle sue
filiali e/o consociate.
–
Novell, il logo Novell, openSUSE e il logo openSUSE sono marchi registrati di Novell, Inc e SUSE
Linux è un marchio di Novell, Inc.
Altre denominazioni ivi citate, prodotti e nomi di servizi possono essere marchi di IBM o di altre aziende.
© Copyright International Business Machines Corporation 2011. Tutti i diritti riservati.
© IBM Corp. 2011. All rights reserved.
Indice
1.
Introduzione e obiettivi............................................................................................5
1.1
2.
Flusso operativo .....................................................................................................6
2.1
Esportazione ...................................................................................................................................6
2.2
Modifica...........................................................................................................................................8
2.3
Importazione ...................................................................................................................................8
3.
Personalizzazione del template ..............................................................................9
3.1
Posizione del template sul server ...................................................................................................9
3.2
Aggiunta di informazioni statiche ....................................................................................................9
3.3
Aggiunta di una nuova pagina contenente un grafico...................................................................10
3.4
Impostazione della password sulle pagine protette ......................................................................11
4.
5.
Prerequisiti ......................................................................................................................................5
Personalizzazione del codice ............................................................................... 12
4.1
La Factory .....................................................................................................................................12
4.2
Estrazione dei dati e costruzione del foglio elettronico.................................................................12
4.3
Il template......................................................................................................................................12
4.4
PoiAdapter ....................................................................................................................................13
4.5
Supporto del formato .xlsx (Excel® 2007) ....................................................................................13
Uso come componente......................................................................................... 14
© IBM Corp. 2011. All rights reserved.
Pagina 4 di 14
1. Introduzione e obiettivi
La funzione di importazione/esportazione Bilancio Vision4 permette all’utente di esportare un bilancio,
modificarne i valori tramite un foglio elettronico ed eventualmente reimportarlo in Vision4. Il codice è
progettato in modo modulare per essere adattato a diverse necessità.
In questo tutorial verrà brevemente illustrato il flusso operativo della funzione quindi si passerà alla
personalizzazione. E’ possibile agire su due livelli:
•
•
Personalizzazione del template
o
o
Nessuna conoscenza del linguaggio Java™ è richiesta
E’ possibile introdurre/modificare attributi statici (colori, font, logo aziendale, immagini,
hiperlink, ecc)
o
E’ possibile introdurre nuove pagine con calcoli e grafici derivati dai dati con cui verrà
popolato il template all’atto dell’esportazione.
Personalizzazione del codice
o
Verranno illustrate le classi ed i metodi da estendere; questa strada è obbligata quando
si vogliono introdurre nel foglio elettronico dati nuovi, estraendoli dal database Vision4
eventualmente integrato da tabelle di prodotti di terze parti.
1.1 Prerequisiti
•
ACG Vision4 versione 1.4.0 o successive
•
Microsoft® Exce®l 2003 o versioni successive
•
IBM® WebSphere® 6.0 o successive
Nota: le funzioni descritte nel presente tutorial si basano sulla libreria Apache poi-2.5.1-final-20040804.jar
fornita insieme al prodotto ( http://poi.apache.org/ ). Se si utilizza la versione di Websphere® 6.1 (o
successive) è raccomandabile utilizzare poi-3.5-FINAL-20090928.jar che offre in fase di
personalizzazione un set più evoluto di funzionalità.
© IBM Corp. 2011. All rights reserved.
Pagina 5 di 14
2. Flusso operativo
Esportazione
Template
Foglio elettronico
database
Modifica dei dati
Server ACG Vision4
Importazione
Foglio elettronico
2.1 Esportazione
Dal menù selezionare:
Controlling -> Bilanci Gestionali -> Lista
Scegliere un bilancio ad immissione manuale, visualizzarlo e, tramite il pulsante
, lanciare
l’esportazione. In alternativa la funzione può essere lanciata direttamente dalla lista tramite il menù
contestuale.
Il sistema mostra prima un pannello di riepilogo dei parametri di selezione, se tutto è a posto premendo
“Esegui” si genera un file Excel® di questo tipo:
© IBM Corp. 2011. All rights reserved.
Pagina 6 di 14
Nota bene: Microsoft® Internet Explorer® potrebbe essere configurato in modo da prevenire il download
di file; se questo accade modificare le impostazioni di sicurezza come segue:
Selezionare Strumenti -> Opzioni Internet -> Protezione -> livello personalizzato…
Attivare “download dei file” e “Richiesta di conferma automatica per il download dei file” sulle
impostazioni di protezione.
© IBM Corp. 2011. All rights reserved.
Pagina 7 di 14
2.2 Modifica
L’operatore può, a questo punto, modificare i valori di bilancio; il foglio ricalcolerà contestualmente i totali.
Alcune celle dello Stato Patrimoniale e del Conto Economico sono protette da scrittura. In particolare è
protetta la struttura del bilancio ed il calcolo dei totali. Questo è di grande aiuto nel prevenire modifiche
che possono causare problemi nella successiva fase di importazione.
Terminate le modifiche salvare l’Excel® sul disco locale.
2.3 Importazione
Dalla lista dei bilanci gestionali, attraverso il menù contestuale selezionare “Importa bilancio”:
Selezionando “upload” si carica sul sistema il file preparato al punto precedente.
Attraverso il pulsante “Estrai parametri” è possibile estrarre dal file i parametri di importazione (azienda,
schema, bilancio, divisione).
A questo punto eseguire l’importazione definitiva selezionando il pulsante
Il sistema sottopone il foglio ad un controllo incrociato della validità di tutto il suo contenuto. Se non si
riscontrano problemi mostra i valori che si stanno per riversare sul database e chiede conferma per il
salvataggio.
© IBM Corp. 2011. All rights reserved.
Pagina 8 di 14
3. Personalizzazione del template
Il template è un foglio di partenza che la funzione carica e poi popola con i dati estratti dal database; il
risultato di questo processo viene poi scaricato in locale. Modificando il template sul server possiamo
introdurre/modificare attributi statici.
3.1 Posizione del template sul server
Il template si trova sull’application server in
/conf/ctg/TemplateExportBilancio.xls
Se ne può determinare la posizione assoluta sul server attraverso l’utility fscan: lanciare vision4 e dalla
parte alta dello schermo selezionare:
Strumenti -> Debug -> Raccolta informazioni -> Visualizza attributi di sessione
Compare una finestra su cui inserire il file da cercare; selezionando quindi “find file” viene visualizzato:
Individuato il file lo si può modificare direttamente secondo le indicazioni dei paragrafi che seguono. Per
distribuirlo ai clienti finali è opportuno impacchettarlo in uno .zip da installare tramite la consolle di
amministrazione di websphere seguendo la stessa procedura che si segue per le fix.
A questo documento sono allegati una serie di template di esempio che possono essere liberamente
provati. Per tornare alla situazione iniziale installare TemplateStandard.zip.
Nota: in generale le PTF non sovrascrivono il template, a meno che non si tratti di PTF cumulative.
In questo caso è necessario installare nuovamente il proprio template personalizzato dopo la PTF.
3.2 Aggiunta di informazioni statiche
Per aggiungere un logo, un hiperlink, o semplicemente per cambiare font e colori, è sufficiente modificare
il template e le informazioni saranno riportate sul file esportato.
Esempio allegato: TemplateExportBilancioConLogo.zip
© IBM Corp. 2011. All rights reserved.
Pagina 9 di 14
3.3 Aggiunta di una nuova pagina contenente un grafico
Per aggiungere all’export che verrà generato un grafico di questo tipo:
Operare come segue:
Aprire il template e, dal menù di Excel® selezionare Insert -> Chart
A questo punto seguire le indicazioni del wizard avendo cura di impostare come “Source data” le celle dei
fogli di CE o di SP che vengono sovrascritte durante l’esportazione ad esempio =CE!$D$6:$O$7
Chiaramente si avrà un grafico poco significativo sul template, l’utente finale invece vedrà il grafico
ricalcolato sulla base dei dati sovrascritti durante l’esportazione.
Sono sovrascritte la riga 6 con le label e tutte le righe successive con i dati.
Esempio allegato: TemplateExportBilancioConChart.zip
© IBM Corp. 2011. All rights reserved.
Pagina 10 di 14
3.4 Impostazione della password sulle pagine protette
Come indicato nel paragrafo “Modifica” alcune celle sono “protette” per prevenire modifiche che
potrebbero ostacolare l’importazione dei dati. Questa protezione può essere rafforzata impostando una
password.
Dal menù di Excel® selezionare Tools -> Macro -> Visual Basic Editor
Modificare la macro come nell’esempio che segue; possiamo impostare la password in modo differente
per ogni foglio.
Private Sub Workbook_Open()
Sheets("CE").EnableOutlining = True
Sheets("CE").Protect , userInterfaceOnly:=True
Sheets("SP").EnableOutlining = True
Sheets("SP").Protect "ACG", userInterfaceOnly:=True
End Sub
© IBM Corp. 2011. All rights reserved.
Pagina 11 di 14
4. Personalizzazione del codice
Per eseguire le personalizzazioni di questo tipo è necessaria una conoscenza di base di Java™.
4.1 La Factory
ImportExportBilancioFactory istanzia le classi che interagiscono col database e che popolano il template
con i dati. Sostituendola si può pilotare l’uso di classi esterne che implementano comportamenti
personalizzati.
package com.ibm.acgv4.ctg.service;
public class ImportExportBilancioFactory {
public static ImportExportBilancio createImportExportBilancio(){
return new ImportExportBilancio();
}
public static EsportaBilancioInExcell createEsportaBilancioInExcell(){
return new EsportaBilancioInExcell();
}
public static ImportaBilancioDaExcell createImportaBilancioDaExcell(){
return new ImportaBilancioDaExcell();
}
}
4.2 Estrazione dei dati e costruzione del foglio elettronico
La classe ImportExportBilancio è essenzialmente un runnable, è basata cioè su un metodo run() che
esegue l’elaborazione vera e propria. Una serie di metodi di set e get permettono di impostare i
parametri. L’esempio riportato nel capitolo 5 rende molto evidente questa struttura.
Il metodo run legge in sequenza tutti gli archivi ACG contenenti i dati di bilancio ed effettua i controlli
formali sui parametri ricevuti. Si noti che questa prima parte è richiamabile separatamente in modo da
pre-validare i dati ricevuti prima di lanciare l’elaborazione vera e propria.
Il passo successivo è la costruzione, cella per cella, del foglio elettronico (o, se siamo in modalità
importazione, la lettura del foglio ricevuto ed il confronto con i valori del database).
Esportazione e importazione
“ImportaBilancioDaExcell”
sono
affidate
rispettivamente
a
“EsportaBilancioInExcell”
e
4.3 Il template
La classe EsportaBilancioInExcell legge un file excel di base, il “template” e lo popola con i dati. Questo,
come si è visto, conferisce una notevole flessibilità rendendo possibile cambiare colori, font, aggiungere
nuovi campi calcolati, con la semplice sostituzione del template.
© IBM Corp. 2011. All rights reserved.
Pagina 12 di 14
Il programma di esportazione è piuttosto semplice; si basa sull’open source Apache Poi (
http://poi.apache.org/ ) che permette di creare il foglio elettronico in modo lineare, definendone il
contenuto cella per cella con istruzioni del tipo:
row.createCell(1).setCellValue(1.2);
Nota: i template contenenti immagini sono gestiti solo con Apache POI 3.5 o successive.
4.4 PoiAdapter
Le funzioni recenti di excel necessitano di versioni recenti della libreria POI che, a loro volta, necessitano
di jdk 1.5. Per garantire la compatibilità a quei clienti che usano ancora websphere 6.0 (jdk 1.4) è stata
predisposto un adapter: com.ibm.acgv4.utils.PoiAdapter.
Ad esempio il metodo:
sheet.groupRow( start, end );
deve essere sostituito con
PoiAdapter.groupRow(sheet, (short)start, (short)end);
L’adapter esegue il metodo solo se il livello di jdk è adeguato. Riusciamo così a realizzare un unico
codice che si adatta a tutti gli ambienti dei clienti.
4.5
Supporto del formato .xlsx (Excel® 2007)
Si tratta di un formato “Open”
(http://www.ecmainternational.org).
basato
su
xml
promosso
da
ECMA
International
Le specifiche sono disponibili al sito: http://www.ecmainternational.org/publications/standards/Ecma376.htm.
Il nuovo formato è un xml compresso che permette di ottenere files di dimensioni contenute.
Per modificare il formato del file generato bisogna agire in un unico punto: l’istanziazione del workbook
che non sarà più di tipo HSSFWorkbook (Excel® 2002) ma di tipo XSSFWorkbook.
L’esempio che segue mostra la modifica da fare:
//Workbook wb = new HSSFWorkbook();
Workbook wb = new XSSFWorkbook();
//FileOutputStream fileOut = new FileOutputStream("foglio.xls");
FileOutputStream fileOut = new FileOutputStream("nuovofoglio.xlsx");
wb.write(fileOut);
fileOut.close();
© IBM Corp. 2011. All rights reserved.
Pagina 13 di 14
5. Uso come componente
La parte di presentazione è completamente separata dall’interfaccia grafica; può quindi essere richiamata
liberamente dal resto della Vision4 o, anche, da personalizzazioni.
Nell’esempio che segue vediamo il richiamo da una classe di test.
private static final String[][] parametriTest={
//
Nickd
Nickb
Anno Cdvsn Nickk
{"ELIKA_PROD","A_BIL_GES", "2010","","DL: 127","Test standard 1"},
{"ELIKA_PROD","NCG32_GS_1","2010","","DL: 127","Test standard 2"},
{"ELIKA_PROD","BIL_PROD", "2010","","SCHEMA_BREVE","Prova con tutti i mesi"},
{"ELIKA_PROD","BIL_PROD", "2009","","SCHEMA_BREVE","Dal primo al terzo"},
{"ELIKA_PROD","BIL_PROD", "2008","","SCHEMA_BREVE","con 0 per voce 1"},
{"ELIKA_TEST","B_TEST",
"2010","","DL: 127","Con azienda diversa"}
};
public void testExport() {
ACGLogon logon= new ACGLogon();
logon.login("AS400", "9.168.26.31", utente, pwd, si ,false);
log.info("JUnitTest for import/export bilancio");
//for (int i = 0; i < 1; i++) {
for (int i = 0; i < parametriTest.length; i++) {
log.info("---------------------------------------");
log.info("TestCase "+i+" - "+parametriTest[i][5]);
long p = System.currentTimeMillis();
ImportExportBilancio ie_bil=ImportExportBilancioFactory.createImportExportBilancio();
ie_bil.setLogon(logon);
ie_bil.setNickd(parametriTest[i][0]);
ie_bil.setNickb(parametriTest[i][1]);
ie_bil.setAnno(parametriTest[i][2]);
ie_bil.setCdvsn(parametriTest[i][3]);
ie_bil.setNickk(parametriTest[i][4]);
String nome=ie_bil.getNickd()+"-"+ie_bil.getNickb()+"-"+ie_bil.getAnno()+"-"+
ie_bil.getCdvsn()+"-"+ie_bil.getNickk()+"B.xls";
nome=nome.replace(':', '_');
log.info("Output File "+nome);
try {
ie_bil.run();
FileOutputStream outStm;
outStm = new FileOutputStream("c:/temp/aaaform/"+nome);
ie_bil.getWorkbook().write(outStm);
//log.info("WARNINGS: \n"+ie_bil.getWarnings().toString());
log.info("Tempo impiegato: " + (System.currentTimeMillis() - p)+ " millisecondi");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail(e.getMessage());
}
log.info("finito " + i);
}
© IBM Corp. 2011. All rights reserved.
Pagina 14 di 14