Introduzione
Gli applicativi aziendali sono un insieme di componenti sviluppati per essere utilizzati all’in-
terno dell’azienda stessa, ma anche all’esterno di essa oppure con ulteriori applicativi. [10]
Nel corso degli anni avvengono diversi rilasci che apportano numerose modifiche dovute alla
risoluzione di bug, all’aggiornamento dei framework a cui si fa riferimento in fase di sviluppo
ma soprattutto all’integrazione di nuove funzionalità richieste dai clienti oppure già previste
nella fase di progettazione iniziale ma non ancora sviluppate.
In questi casi è di vitale importanza che l’applicativo disponga di una documentazione ade-
guata e che il relativo codice sia chiaro e fortemente leggibile, ciò consente agli sviluppatori
di apprendere rapidamente i flussi e la logica con cui l’applicativo è stato sviluppato al fine
di apportare le modifiche necessarie per finalizzare il rilascio di nuove versioni.
Il lavoro di tesi consiste nello sviluppo di funzionalità business e utente in un applicativo
aziendale esistente, denominato WMS ONE, nel caso in questione l’integrazione è stata re-
sa necessaria in seguito alle numerose richieste avanzate dagli utenti finali nelle aziende in
cui l’applicativo è in produzione, difatti loro hanno suggerito lo sviluppo di determinate fun-
zionalità mancanti che sono, in realtà, ritenute essenziali per svolgere in maniera rapida ed
efficiente specifiche attività.
L’applicativo consiste in un Warehouse Management System tramite il quale gli operatori di
magazzino possono effettuare operazioni finalizzate a una corretta gestione del magazzino,
alla pianificazione della produzione aziendale e alla realizzazione di conteggi inventariali.
L’applicativo è stato sviluppato e ideato dall’azienda come un metodo alternativo all’utilizzo
dell’applicazione client del gestionale che l’azienda stessa distribuisce, ovvero SAP Business
One, difatti le operazioni che l’applicativo consente di effettuare sono un sottoinsieme delle
operazioni realizzabili nell’anzidetta applicazione client.
L’integrazione delle nuove funzionalità inserisce un nuovo concetto all’interno dell’applicativo
e gestisce le operazioni ad esso associate, in particolare definisce nel contesto dell’applicati-
vo le cosiddette Unità di Carico (UdC). Le funzionalità in questione non sono presenti
all’interno dell’applicazione client del gestionale, quindi rappresentano un’estensione delle
funzionalità native di SAP Business One.
L’integrazione è realizzata mediante il linguaggio C#, utilizzando il framework Xamarin per
quanto riguarda il front-end e diverse tecnologie e framework per quanto riguarda il back-end:
Open Data Protocol (OData), Entity Framework (EF), Language INtegrated Query (LINQ),
le Service Layer (SL) API e le Data Interface (DI) API di SAP.
La tesi è suddivisa in 6 capitoli.
Nel primo capitolo avviene una presentazione dell’applicativo, illustrandone nello specifico la
struttura architetturale e le tecnologie utilizzate in fase di sviluppo.
Nel secondo capitolo sono mostrate le funzionalità utente già implementate all’interno del-
l’applicativo riportando degli screenshot delle schermate per mostrare l’interfaccia grafica e
la struttura alla base del front-end dell’applicativo.
Nel terzo capitolo è illustrato il concetto di UdC e come avviene la relativa gestione all’interno
di un magazzino.
Nel quarto capitolo sono illustrate le strutture dati progettate per gestire le UdC e come sono
1
state effettivamente implementate nel database del gestionale.
Nel quinto capitolo vengono specificate nel dettaglio le operazioni realizzabili sulle UdC e per
ognuna di esse è mostrata la relativa interfaccia grafica sviluppata in Xamarin.
Nel sesto capitolo sono descritte la fase di progettazione e l’implementazione delle operazioni
su SAP, ovvero la logica tramite la quale il gestionale riesce a realizzare effettivamente tutte
le operazioni sulle UdC.
2
1 WMS ONE
L’applicativo è un Warehouse Management System tramite il quale è possibile attuare una
gestione avanzata del magazzino all’interno di un’azienda, difatti replica le funzionalità native
implementate nel gestionale SAP Business One per la gestione del magazzino.
Figura 1: La homepage di WMS ONE (versione UWP).
WMS ONE consente la generazione di documenti SAP di entrata merci, uscita merci e trasfe-
rimenti di magazzino, inoltre permette la gestione di aspetti relativi alla produzione aziendale
e all’inventario di magazzino, infine permette la visualizzazione di informazioni dettagliate in
merito agli articoli e ai lotti e la compilazione delle liste di prelievo.
SAP è un’azienda multinazionale tedesca ed è un leader mondiale nello sviluppo di Enterprise
Resource Planning (ERP) e nella produzione di software gestionali per le imprese, tra cui SAP
Business One.
WMS ONE è di proprietà dell’aziendaHiteco, certificata SAPGold Partner da oltre 10 anni,
in cui ci si occupa della realizzazione di soluzioni, sistemi e infrastrutture informatiche per
realtà proiettate sulla strada della digital transformation.
3
1.1 SAP Business One
SAP Business One è un ERP organizzato mediante una struttura modulare che isola i relativi
flussi aziendali, difatti i processi aziendali collaborano tra di essi ma sono implementati come
moduli totalmente indipendenti.
IprogettistidiSAPBusinessOnehannodecisodiorganizzareilgestionaleneiseguentimoduli:
Magazzini e Logistica, Banche e Pagamenti, Acquisti, Vendite, Contabilità e Amministrazione.
Ogni modulo consente la creazione di differenti documenti seguendo la logica definita da dei
flussi documentali standardizzati da SAP, ma in alcuni casi è possibile che un’azienda richieda
lo sviluppo di un workflow personalizzato.
Un workflow è un sistema per la gestione di processi e attività ripetitive che si verificano in
un particolare ordine. Sono il meccanismo attraverso il quale le persone e le imprese svolgo-
no il proprio lavoro, sia che si tratti di produrre un prodotto, fornire un servizio, elaborare
informazioni o qualsiasi altra attività che generi valore. [12]
Figura 2: Il flusso documentale del modulo Acquisti di SAP.
Nella figura (2) è riportato il workflow con cui SAP gestisce la creazione dei documenti del
moduloAcquisti. Si può notare che, ad esempio, la creazione di una Richiesta d’Acquisto, di
un Ordine d’Acquisto e di una Fattura da Fornitore non è vincolata all’esistenza di altri docu-
menti, mentre non è possibile creare un Reso a Fornitore senza aver prima creato un’Entrata
Merci da Fornitore.
Inoltre è possibile creare una Richiesta di Reso a Fornitore a partire da due documenti diffe-
renti, difatti deve essere già stata creata in precedenza un’Entrata Merci da Fornitore oppure
una Fattura da Fornitore.
Dalla figura (1) è possibile osservare che una delle funzionalità di WMS ONE consiste nella
creazione di documenti di Entrata Merci da Fornitore, che può avvenire soltanto nel momento
in cui si ha un Ordine d’Acquisto, difatti quando si clicca sul menù ENTRATA MERCI
si sceglie la modalità di creazione (manuale, da bozza o da fornitore), quindi si definisce il
fornitore e infine si individua l’ordine d’acquisto da cui selezionare gli articoli da far entrare
all’interno del magazzino.
4
Le funzionalità sviluppate all’interno dell’applicativo sono altresì implementate nell’applica-
zione client ma la differenza sostanziale tra l’utilizzo dei due software sta nel fatto che in
WMS ONE è stata definita una sequenzialità delle operazioni mediante l’utilizzo di maschere
user-friendly così da ridurre al minimo la possibilità che l’utente possa commettere degli errori
in fase di registrazione dei documenti.
Figura 3: La finestra di SAP Business One con cui si registra un’Entrata Merci da Fornitore.
Nella figura (3) è raffigurata la finestra con cui si effettua la registrazione di un documento
di Entrata Merci da Fornitore mediante l’applicazione client di SAP Business One, è possibile
osservare la presenza di un campo in cui si va a definire il fornitore e di una serie di righe in
cui si vanno a inserire gli articoli da far entrare in magazzino. Nella maschera sono raffigura-
ti tanti campi il cui significato può essere trascurato, ma è possibile valorizzare tutti questi
campi cliccando sul pulsante in basso a destra, Copiare da, tramite il quale si va a scegliere
un ordine d’acquisto una volta selezionato un fornitore, quindi i campi in comune verranno
valorizzati con lo stesso valore in entrambi i documenti.
Difatti nella figura (3) il pulsante Copiare da è disabilitato in quanto non è stato ancora
selezionato un fornitore.
L’idea che sta alla base di SAP Business One e la motivazione dietro alla creazione di WMS
ONE è il voler fornire all’utente un sistema che offra una modalità rapida, intuitiva e accessi-
bile tramite il quale poter registrare una serie di documenti nel gestionale aziendale limitando
la possibilità di commettere qualsiasi tipo di errore garantendo che i dati siano sempre integri
e consistenti nella relativa base di dati.
5
Figura 4: Architettura di WMS ONE.
Nella figura (4) è illustrata l’architettura dell’applicativo, è possibile notare che l’utente può
interagire con SAP Business One sia da WMS ONE sia dall’applicazione client del gestionale,
però l’applicativo deve tener conto della versione di SAP installata nel gestionale e della
tipologia di DBMS associato al database, i due parametri definiscono le API da utilizzare
per instaurare la comunicazione tra applicativo e gestionale, ovvero le Service Layer API
oppure le DI API, entrambe sviluppate e distribuite da SAP.
I DBMS utilizzabili sono SQL Server e SAP HANA, la differenza sostanziale tra i due sta
nel fatto che il primo deve essere eseguito su un sistema operativo Windows, il secondo su un
sistemaoperativobasatosuLinux. NelcasodiSQLServerpereffettuareprogrammaticamente
le operazioni su SAP si utilizzano le Service Layer API, mentre nel caso di SAP HANA si
utilizzano le DI API.
SQL Server è un DBMS relazionale fornito da Microsoft, mentre SAP HANA è un DBMS
column-oriented e in-memory fornito da SAP, quest’ultimo presenta numerosi vantaggi nel
momento in cui viene utilizzato per la gestione di data warehouse oppure di ERP, come nel
caso in questione.
6
1.2 Lo standard OWIN
L’applicazione è stata progettata e sviluppata seguendo uno standard di Microsoft, Open
Web Interface for .NET (OWIN), si tratta di uno strumento totalmente open source che
funge da interfaccia tra applicazioni Web e server Web. OWIN è in grado di disaccoppiare la
relazione tra le parti coinvolte, di conseguenza se un server Web (oppure un framework) viene
implementato seguendo la specifica OWIN qualsiasi applicazione web .NET verrà eseguita
senza riscontrare problematiche.
OWIN non è un modello di programmazione, quanto un’astrazione per separare i modelli di
programmazione delle applicazioni e dei framework dal server e dall’infrastruttura di hosting.
[1]
Ciò che OWIN instaura è una pipeline tramite la quale si nascondono al server una serie di
middleware, difatti il server non sa se sta comunicando direttamente con l’applicazione oppure
con uno dei livelli intermedi.
Un middleware è un handler inserito in una pipeline per la gestione delle richieste e delle
risposte. [2]
Nel caso in questione le entità coinvolte sono l’applicazione e il server.
La specifica OWIN è di proprietà della community, però Microsoft consente l’utilizzo agli svi-
luppatori di una serie di componenti OWIN attraverso delle librerie compilate in un progetto,
denominato Katana (Microsoft.Owin.*), rilasciato in maniera totalmente open source,
così come la specifica.
L’utilizzo dei componenti presenti in Katana garantisce che nello sviluppo di un’applicazione
Web tutti i componenti possano essere facilmente sostituiti senza dover ricompilare l’applica-
zione, inoltre lo sviluppatore può decidere facilmente quali componenti attivare nella pipeline
in quanto sono piccoli e non sono già attivi di default, di conseguenza si ottiene un’applica-
zione che risulta essere facilmente scalabile.
La pipeline OWIN definita da Katana è costituita da un’architettura 4-tier, come visibile nella
figura (5).
L’host gestisce i processi sottostanti e coordina il flusso di lavoro, che consiste nella selezione
del server e nella costruzione della pipeline OWIN con cui vengono gestite le richieste, l’ho-
sting di WMS ONE è implementato attraverso Internet Information Services (IIS), che
nel caso dell’applicativo in questione funge sia da host che da server.
IIS è un insieme di servizi sviluppati da Microsoft per funzionare con sistemi operativi Micro-
soft Windows, nel corso degli anni è stato fortemente modificato e migliorato, difatti ad oggi
è considerato uno dei migliori server Web in circolazione perché rispetto alla concorrenza può
vantare soltanto tre bug di sicurezza noti.
Il pacchetto NuGet Microsoft.AspNet.Host.SystemWeb consente di abilitare l’hosting
in .NET tramite IIS, ma nel momento in cui si opta per l’utilizzo di SystemWeb come host
non è possibile utilizzare un server alternativo ad IIS.
In effetti in WMS ONE si occupa anche dell’apertura di un socket di rete e della ricezio-
ne/trasmissione delle richieste/risposte tramite la pipeline, così come è stata definita dallo
sviluppatore.
7