Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FACOLTÀ DI I NGEGNERIA
Dipartimento di Ingegneria dell’Informazione
Corso di Laurea Magistrale in Ingegneria Informatica e dell’Automazione
T ESI DI L AUREA
Migration and porting activities from the current ERP SAP ECC to
the new SAP S/4HANA for an italian multinational company
Relatore Candidato
Abstract
Negli ultimi anni sempre più aziende si stanno imbarcando nella complessa e sfidante
migrazione dal sistema ERP SAP ECC al nuovo sistema SAP S/4HANA. La motivazione
principale risiede nell’annuncio, da parte della stessa SAP, della fine del supporto a SAP ECC.
Lo scopo della presente tesi, dunque, è quello di analizzare un reale progetto di migrazione a
SAP S/4HANA intrapreso da una nota multinazionale italiana.
Nello specifico, vengono presentati i vantaggi, le sfide e i rischi associati al processo di
migrazione e viene analizzata la strategia adottata dall’azienda per far fronte ad un progetto di
questa portata. Tale progetto, infatti, impatta ogni area dell’azienda e comporta un notevole
effort da parte di tutte le persone coinvolte. Inoltre, rende necessario un re-engineering
di alcuni dei processi aziendali, nonché modifiche, anche sostanziali, alle infrastrutture
hardware per la gestione dei dati.
Keyword: SAP ECC, SAP S/4HANA, ERP Systems, Digital Transformation, In-Memory
Databases, New Generation Databases, NoSQL Databases.
Indice
Introduzione 1
1 I database NoSQL 3
1.1 Dal modello relazionale al movimento NoSQL . . . . . . . . . . . . . . . . . . 3
1.1.1 Breve storia del modello relazionale . . . . . . . . . . . . . . . . . . . . 3
1.1.2 La nascita del movimento NoSQL . . . . . . . . . . . . . . . . . . . . . 4
1.2 NoSQL database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Conseguenze della replicazione del dato . . . . . . . . . . . . . . . . . 8
1.2.2 Classificazione dei database NoSQL . . . . . . . . . . . . . . . . . . . . 10
ii
INDICE iii
7 Conclusioni 65
Bibliografia 67
Ringraziamenti 70
Elenco delle figure
iv
ELENCO DELLE FIGURE v
vi
Elenco dei listati
vii
Introduzione
Nel mercato competitivo odierno i sistemi di Enterprise Resource Planning (ERP) sono
diventati la linfa vitale per i moderni modelli di business delle aziende. I sistemi ERP rappre-
sentano un insieme di applicazioni che contengono molteplici moduli software integrati per
la pianificazione delle risorse aziendali. Essi, inoltre, permettono di integrare la gestione dei
processi di business e la condivisione delle informazioni in un’unica soluzione, sia all’interno
dell’azienda che con i suoi partner. La capacità di elaborare le informazioni risulta cruciale per
il decision making aziendale e per operare in maniera efficace. A questo riguardo, le aziende
spesso ricorrono a soluzioni ERP che supportano workflow di analisi dei dati e intelligenza
artificiale, delle quali SAP rappresenta la società leader del settore. Essa, difatti, possiede un
altissimo market share ed i suoi tool sono utilizzati da oltre 22 mila aziende globalmente.
Negli anni SAP si è evoluto molto, presentando ai propri clienti delle soluzioni sempre
nuove per far fronte alle necessità di business moderne; un notevole punto di svolta è stato
il rilascio della suite ERP SAP S/4HANA nel 2015. Tale suite basa la propria architettura
sul moderno DBMS HANA che sfrutta la tecnologia in-memory per garantire performance
irraggiungibili dai tradizionali DBMS relazionali. Inoltre, integrando al proprio interno
moduli per la Data Analytics, il Machine Learning e la Business Intelligence si propone come una
soluzione all-in-one per tutti i business need di un’organizzazione.
Nonostante i numerosi vantaggi apportati dalla nuova versione del famoso ERP, agli inizi
del 2019 soltanto un modesto numero di clienti aveva già effettuato l’upgrade a S/4HANA.
SAP, a questo punto, incurante delle numerose critiche ricevute, annunciò comunque di voler
terminare il supporto alla versione attualmente più usata del software, ovvero SAP ERP
Central Component (SAP ECC) entro il 2025. Tale annuncio spinse moltissime aziende, seppur
controvoglia, ad intraprendere la migrazione al nuovo sistema. Tuttavia, l’implementazione
di un software come SAP S/4HANA, che presenta sostanziali differenze architetturali rispetto
alla precedente versione, è un’operazione complessa, che comporta notevoli cambiamenti
all’interno di un’organizzazione. In base alle specifiche esigenze aziendali, l’intera operazione
di migrazione può richiedere diversi anni e impattare praticamente ogni persona all’interno
dell’organizzazione.
Pertanto, per raggiungere gli obiettivi organizzativi in termini di budget, qualità del
prodotto e tempo, è importante che il processo di migrazione sia pianificato ed eseguito
utilizzando una metodologia solida e comprovata. Oltre ai requisiti tecnici associati alla
configurazione e al funzionamento del sistema S/4HANA, è necessario redigere un accurato
piano di progetto, ponendo le dovute attenzioni su questioni come la governance di progetto,
l’allineamento strategico dei business need, il re-engineering dei processi, la gestione del
cambiamento e la formazione delle risorse umane.
1
2
• Nel Capitolo 6 verrà proposta una discussione in merito al lavoro svolto e verranno
evidenziate alcune lezioni apprese nell’ambito del progetto di migrazione.
• Nel Capitolo 7, infine, verranno tratte le conclusioni in merito al lavoro svolto e verranno
esposti alcuni sviluppi futuri.
CAPITOLO 1
I database NoSQL
In questo primo capitolo analizzeremo brevemente le motivazioni che hanno portato alla nascita del
movimento NoSQL, per poi proseguire con l’introduzione dei database di nuova generazione dei quali
verranno prima descritte le caratteristiche tecnologiche. Infine, i DBMS NoSQL verranno categorizzati per
tipologia.
3
1.1 − Dal modello relazionale al movimento NoSQL 4
fisica sul disco fisso, permette di definire una metodologia di progettazione con un alto livello
di astrazione.
Come si può vedere in Figura 1.1, il modello logico relazionale è semplicemente una
rappresentazione a più basso livello del modello entità/relazione. In esso, le entità sono
rappresentate come dei rettangoli e le relazioni come collegamenti tra entità. Il modello
non fornisce alcuna indicazione su come tali informazioni debbano essere rappresentate in
memoria o su come un DBMS deve operare per manipolare i dati.
Lo schema definisce delle entità, ovvero oggetti del mondo fisico e, di questi oggetti,
definisce degli attributi che li caratterizzano. Le entità sono, poi, collegate tra loro da relazioni,
che evidenziano dei legami logici. In Figura 1.1, ad esempio, è possibile vedere come l’entità
Rack sia collegata all’entità Server con una relantionship uno a molti. Questo, nel linguaggio
naturale, vuol dire che per ogni oggetto Rack possono esserci uno o più oggetti di tipo Server
Il modello relazionale fu una vera e propria rivoluzione nell’ambito delle basi di dati e
diventò in breve tempo il modello logico predominante dei DBMS dell’epoca. A conferma
della sua robustezza e utilità, tutt’oggi questo modello risulta largamente utilizzato, oltre che
nei sistemi legacy, anche per nuove implementazioni di basi di dati.
maggiori con sistemi di calcolo parallelo che riescono ad operare su più porzioni di un
singolo database contemporaneamente. I classici database relazionali furono progettati per le
architetture mainframe dell’epoca e, seppur tutt’oggi validissimi, presentano delle complessità
aggiuntive quando si cerca di usarli per tipologie di dati non strutturati (es. immagini, video
e audio), oppure di farli lavorare all’interno delle moderne architetture di calcolo distribuito.
Figura 1.2: Una comparazione tra dati strutturati e dati non strutturati
Un punto di incontro tra le due categorie appena descritte sono i dati semi-strutturati.
Questi dati, sebbene presentino una struttura di base, possono essere “personalizzati” per
adattarsi alle esigenze. Ne sono un esempio concreto i documenti in formato XML o JSON.
Questi ultimi, ad esempio, hanno una struttura di base definita da un insieme di coppie
campo-valore, ma questa struttura è modulare e può essere adattata ai diversi casi d’uso. Nel
1.1 − Dal modello relazionale al movimento NoSQL 6
Listato 1.1 è presente un esempio di quanto appena detto, ovvero un documento JSON in cui
alcuni dei campi includono altri al loro interno, formando delle strutture innestate. Il campo
“profile_image” ne è un chiaro esempio. Esso, infatti, contiene al suo interno un’immagine
(specificata tramite la sua posizione sul disco fisso), il nome dell’immagine e il metodo di
allineamento per la visualizzazione. Risulta chiaro, dunque, come rappresentare dati di
questo tipo in uno schema relazionale non sia impossibile, ma comunque molto complesso.
1 {"user": {
2 "name": "Marco",
3 "surname": "Rossi",
4 "profile_image": {
5 "src": "./DB/images/Marco.png",
6 "name": "Marco",
7 "alignment": "center"
8 },
9 "biography": {
10 "data": "My name is Marco",
11 "size": 36,
12 "style": "bold",
13 "alignment": "center"
14 }
15 }}
Il significato di NoSQL
L’ovvia conseguenza del costante aumento dei dati non strutturati e semi-strutturati è
la necessità di memorizzare ed elaborare queste enormi quantità di dati. Tuttavia, come già
spiegato nel precedente paragrafo, l’utilizzo dei rigidi schemi impiegati dai DBMS relazionali
non è la strada migliore. Si è venuta a creare, quindi, l’esigenza di soluzioni nuove, flessibili e
scalabili, progettate fin dal principio per lavorare con informazioni non strutturate o semi-
strutturate. Per rispondere, dunque, a questa esigenza sono cominciate a nascere le prime
basi di dati non-relazionali. Ad oggi, la crescente fama dei Big Data e del Cloud Computing è
il motore che più spinge le aziende nella loro transizione dai classici database relazionali a
soluzioni non-relazionali, anche dette soluzioni NoSQL. Tramite la piattaforma Google Trends è
possibile visualizzare l’interesse nel tempo per le soluzioni NoSQL rispetto ai classici RDBMS
negli ultimi 5 anni. Il risultato di tale ricerca è presentato in Figura 1.3.
Figura 1.3: Evoluzione dell’interesse nel tempo per le soluzioni NoSQL e RDBMS
1.2 − NoSQL database 7
Il termine NoSQL vuole, appunto, indicare il distacco dalle vecchie soluzioni relazionali,
le quali, solitamente, utilizzano il linguaggio SQL (Structured Query Language). Il termine,
dunque, non indica delle soluzioni che non fanno uso del linguaggio SQL in modo assoluto,
ma piuttosto soluzioni che non seguono il rigido schema relazionale.
Nonostante il termine NoSQL non è mai stato formalmente definito, recentemente, dalla
maggior parte dei professionisti del settore, viene accettata come traduzione la dicitura
“Not Only SQL”. Il significato di questa dicitura esprime chiaramente come il movimento
NoSQL non sia affatto un movimento che vada contro i classici sistemi relazionali. Difatti, è
sempre più comune trovare queste nuove soluzioni affiancate a sistemi relazionali preesistenti,
potenziandone le capacità e colmandone le lacune.
Le basi di dati che adottano la filosofia NoSQL prendono generalmente il nome di New
Generation Database oppure Next Generation Database.
• Alta disponibilità: qualsiasi dato conservato su un database NoSQL deve essere dispo-
nibile, sia in lettura che scrittura, in tempi brevissimi. Per garantire questa proprietà,
così come per la tolleranza ai guasti, ci si avvale della replicazione del dato. Quando
un client richiede un dato, è il nodo con la maggior disponibilità in quell’istante a
rispondere con la sua copia del dato. Questo meccanismo riduce il tempo richiesto per
inviare una risposta ad un client permettendo, inoltre, di servire molte richieste dello
stesso dato contemporaneamente.
• Distribuiti e cloud-oriented: i sistemi NoSQL sono progettati fin dal principio per operare
in architetture distribuite, organizzando i dati sui vari nodi della rete in maniera molto
elastica. Ciò si sposa molto bene con le architetture cloud, poiché esse sono per natura
distribuite e scalabili, permettendo di bilanciare il carico di lavoro tra tutti i nodi
disponibili.
• Schema dei dati flessibile: in netto contrasto con le basi di dati relazionali, dove è presente
uno schema logico rigido, i sistemi NoSQL offrono uno schema flessibile, se non del
tutto assente.
1.2 − NoSQL database 8
Il problema principale di conservare diverse copie di un dato nasce quando sono ne-
cessarie operazioni di scrittura. Solamente quando tutte le copie del dato sono conservate
in maniera consistente si possono raggiungere le prestazioni massime in lettura. I sistemi
NoSQL sono caratterizzati da due approcci principali a questo problema:
• scrittura sincrona: quando viene effettuata una scrittura, si attende che quest’ultima sia
correttamente propagata a tutti i nodi replica;
• scrittura asincrona: quando viene effettuata una scrittura, si garantisce che quest’ultima
venga propagata a tutti i nodi replica, ma non si conosce il momento esatto in cui questo
avverrà.
disponibilità della base di dati distribuita. La differenza tra i due approcci viene evidenziata
meglio con il CAP Theorem di Brewer.
Il CAP Theorem
Per meglio definire alcune caratteristiche dei database NoSQL è necessario introdurre il
CAP Theorem.
Il teorema in questione fu introdotto per la prima volta da Brewer nel 2000 e consiste di un
semplice concetto: è impossibile per un sistema distribuito garantire consistenza, disponibilità
e partition-tolerance allo stesso tempo.
Il teorema si dimostra molto facilmente per assurdo; difatti, se abbiamo un sistema
perfettamente resistente al partizionamento, e in ciascuna partizione si può leggere senza
interruzione (completa disponibilità), non possiamo avere anche la perfetta consistenza del
dato; questo perchè gli aggiornamenti non possono propagarsi. Tutte e tre queste proprietà
sono, al giorno d’oggi, desiderate. Esse possono essere definite come segue:
• Consistenza: tutti i nodi forniscono la stessa risposta alla stessa richiesta fatta nello stesso
istante. Significa che tutte le copie del dato devono essere sempre aggiornate al valore
più recente;
• Disponibilità: ad ogni richiesta verrà sempre fornita una risposta, ovvero ogni interroga-
zione alla base di dati distribuita deve essere completata;
In Figura 1.5, il risultato del CAP Theorem è ben riassunto, ovvero non è possibile avere
un sistema distribuito che garantisca contemporaneamente tutte e tre le caratteristiche, ma
bisogna trovare dei compromessi in base alle esigenze. Le tre combinazioni possibili sono,
infatti, CA (Consistency e Availability), CP (Consistency e Partition-tolerance), oppure AP
(Availability e Partition-tolerance).
Le proprietà BASE
Risulta chiaro ormai che le proprietà ACID (Availability, Consistency, Isolation e Durabi-
lity) delle soluzioni relazionali perdono di significato nel dominio NoSQL. Viene definito,
dunque, un nuovo insieme di proprietà, meno ”stringenti” rispetto alle precedenti. Queste
proprietà prendono il nome di proprietà BASE, ovvero:
• Soft state: significa che in un determinato istante il sistema può trovarsi in uno stato in
cui non tutte le copie di un dato sono consistenti.
• Eventually consistent: indica che anche se non tutti i dati sono consistenti in un preciso
instante, prima o poi lo diventeranno (solitamente si tratta di millisecondi).
Le proprietà appena descritte sono tipiche dei sistemi NoSQL che “scelgono” l’opzione
AP dal CAP Theorem, sacrificando, di fatto, la completa proprietà di consistenza. Sistemi
basati su queste proprietà sono alla base di Twitter, Google, Amazon, YouTube, etc. che le
persone in tutto il mondo usano quotidianamente. Questi servizi, infatti, devono garantire
per prima cosa la massima disponibilità, anche a discapito della consistenza del dato.
• Key-Value database;
• Column-oriented database;
• Document database;
• Graph database.
Nelle prossime sotto-sezioni viene dettagliata ognuna di queste quattro categorie, di cui,
in Figura 1.6, è possibile osservarne una schematizzazione grafica.
1.2 − NoSQL database 11
Key-Value database
Con questa tipologia di modello dei dati tutte le righe che compongono il database sono
memorizzate tramite una qualche forma di associazione tra chiavi e valori. Memorizzare le
informazioni con questo metodo permette di scrivere enormi quantità di dati, anche di vario
tipo, in maniera semplice ed efficiente. Un altro vantaggio chiave è la facilità con cui questo
tipo di database può essere partizionato orizzontalmente, permettendone la distribuzione su
più nodi.
Nella stragrande maggioranza dei casi, le basi di dati key-value sono completamente
prive di modello dei dati, e le operazioni che si possono compiere sui dati, sono generalmente
solo tre: put (inserimento del dato), get (selezione del dato) e delete (cancellazione del
dato). Nella Figura 1.7 viene riportata una schematizzazione del modello chiave-valore.
Column databases
I database column-oriented, o semplicemente column database, sono in parte simili ai
database key-value dato che anch’essi conservano i dati mediante una chiave. Possono gestire
e distribuire enormi quantità di record su differenti macchine fisiche.
Questa categoria di database è l’ideale per la scalabilità e la gestione di grandi volumi di
dati; difatti, permettono di partizionare la base di dati sia in orizzontale (rispetto alle righe)
sia in verticale (rispetto alle colonne.
Il modello di dati utilizzato è quasi sempre ispirato a Google Big Table, ovvero vengono
create delle collezioni di una o più coppie key-value che corrispondo ad un determinato
record.
Queste collezioni prendono il nome di column families e contengono colonne di dati
correlati. Ogni record è formato da una o più colonne contenenti le informazioni, come
1.2 − NoSQL database 12
schematizzato in Figura 1.8. Sostanzialmente, queste basi di dati sono molto simili a degli
array bidimensionali dove ogni riga ha una o più coppie chiave-valore associate.
Document database
Questa categoria gestisce i dati sotto forma di documenti. Ogni documento può avere
un insieme di attributi che può differire totalmente da altri documenti della medesima
collezione. Come mostra la Figura 1.9, questi database possono essere visti come delle
collezioni chiave-documento.
Graph database
L’ultima famiglia dei sistemi NoSQL è rappresentata dai database basati su grafo. Questa
tipologia rappresenta le entità tramite una struttura a grafo. Ogni nodo del grafo corrisponde
ad un’entità e ogni arco tra due entità rappresenta una relazione tra esse (Figura 1.10).
1.2 − NoSQL database 13
Questo modello è molto differente dagli altri appena descritti. Nei database basati su
grafo le relazioni vengono considerate parte fondamentale del modello, tale strategia rende
questi database molto potenti per la rappresentazione e l’elaborazione di reti sociali o, più in
generale, per qualsiasi problema facilmente rappresentabile tramite una rete di nodi.
Questa categoria risulta molto utile quando si vogliono rappresentare modelli di dati
complessi con molte connessioni tra entità e vari gradi di nodi indirettamente collegati ad
esse. Inoltre, facendo uso del concetto di relazione, spesso questi sistemi garantiscono le
proprietà ACID nonostante siano database NoSQL.
CAPITOLO 2
In questo capitolo verrà introdotta la tecnologia in-memory, analizzandone alcune caratteristiche chiave.
A seguire, verranno introdotti alcuni esempi di database in-memory con accenni alla loro architettura. Infine,
sarà esposta un’analisi più attenta per il database in-memory SAP HANA
Figura 2.1: Differenza tra i tempi di accesso tipici dei vari componenti
14
2.1 − Overview dei database in-memory 15
In essa, si può notare come il tipico tempo di accesso ad un disco meccanico sia tra i 6 e
gli 8 millisecondi, mentre il tempo medio di accesso ad un SSD è di soli 200 microsecondi, un
intero ordine di grandezza più veloce.
Sebbene gli SSD forniscano un aumento prestazionale notevole rispetto ai dischi magnetici,
sempre in Figura 2.1 si può osservare la drammatica differenza tra i tempi di accesso ad un
SSD rispetto al tempo medio di accesso alla memoria RAM o alla memoria cache. Il tempo di
accesso a quest’ultima è ben due ordini di grandezza inferiore.
Tutto questo per dire come, in concomitanza al declino dei prezzi delle memorie, l’idea di
memorizzare un intero database nella RAM non è più un’utopia. Inoltre, se si considera che i
sistemi moderni sono distribuiti su dei cluster con molti nodi, combinando la RAM di tutti i
nodi il quantitativo totale di memoria disponibile è nell’ordine dei Terabyte.
• salvataggio di intere versioni “cristallizzate” della base di dati (chiamate snapshot oppure
checkpoint) sul disco fisso;
generato un array di attributi con un determinato ValueID; questo valore viene, poi, associato
alle specifiche occorrenze tramite un riferimento, in maniera simile a quanto avviene nelle
tabelle hash. Nel caso sia necessario effettuare una ricerca, il processo si articola come segue:
3. nel risultato della ricerca, si sostituisce il ValueID con il rispettivo valore nel dizionario.
Se si considera che la maggior parte dei dati aziendali ha una bassa entropia, si può
comprendere come questa tecnica possa ridurre la dimensione di una tabella in modo si-
gnificativo. Si pensi ad una tabella contenente i dati dei clienti e in cui una delle colonne
rappresenti la città di residenza. Molti clienti vivranno in una stessa città quindi, invece che
conservare più volte la medesima stringa di caratteri (può occupare diversi byte), si può
memorizzare la stringa una sola volta nel dizionario e usare dei riferimenti (che occupano 4 o
8 byte) per tutte le altre occorrenze.
Parallelismo
Sempre con l’aumento della velocità di elaborazione come obiettivo, i database in-memory
si avvalgono di tecniche di parallelizzazione dei dati e dei processi. Il concetto di parallelismo
è parte integrante dell’architettura dei moderni computer e, nel futuro, questo aspetto diven-
terà sempre più importante. Come si può osservare in Figura 2.2, gli in-memory database
mettono in atto due tipologie di parallelismo: il pipelined parallelism e il data parallelism. Nel
pipelined parallelism, gli operatori successivi possono cominciare ad elaborare porzioni di dati
che l’operatore precedente ha già terminato di elaborare. Il data parallelism consiste nell’ese-
cuzione parallela degli operatori su porzioni di dati partizionate su più nodi, costruendo
il risultato finale come unione dei risultati intermedi. Questi due concetti, seppur semplici,
sono molto complessi da mettere in atto.
Data aging
Spesso non tutti i dati di un database sono rilevanti in dato lasso temporale. In questi casi
può essere superfluo mantenere in memoria centrale la base di dati nella sua interezza. Ad
2.1 − Overview dei database in-memory 17
esempio, i dati di fatturazione di oltre 10 anni saranno meno rilevanti rispetto a quelli attuali;
ciò nonostante non possono essere eliminati. Per incrementare, dunque, le performance si
può usare un sistema di “data aging”, che consiste nel gestire differentemente i dati rilevanti
(hot data) e i dati irrilevanti (cold data).
Questa differenziazione serve ad individuare velocemente gli hot data, evitando di
accedere alle partizioni dove risiedono i cold data, migliorando l’utilizzo della memoria e le
performance delle query. Questa tecnica non modifica lo schema dei dati e i dati irrilevanti
rimangono comunque accessibili.
Tipologia di query
Una sfida che si presenta con i classici DBMS è la separazione tra le query analitiche e
le query transazionali. Le prime vengono indicate con l’acronimo OLAP (Online Analytical
Processing), e le seconde con l’acronimo OLTP (Online Transactional Processing).
Le query OLAP sono utilizzate per analizzare i dati e sono caratterizzate da interrogazioni
complesse ed articolate alla base di dati. Esse lavorano principalmente sui dati storici al fine
di effettuare predizioni, realizzare report e supportare processi di Data Mining. Il loro scopo è
quello di fornire insight a medio e lungo termine sui dati in modo da supportare i dirigenti
nelle loro decisioni.
Le query OLTP, invece, lavorano con i dati transazionali, ovvero tutti quei dati che fanno
parte dei normali processi aziendali giornalieri. Sono query semplici e brevi il cui scopo
può essere, ad esempio, aggiornare un’anagrafica utente, registrare un nuovo utente nel
database, recuperare informazioni o emettere una fattura. Esse rappresentano il cuore dei
DBMS relazionali.
In Tabella 2.1 è presente una sintesi delle differenze tra le query OLTP e quelle OLAP.
Idealmente, le basi di dati devono essere in grado di processare entrambi i tipi di query.
Spesso, con i DBMS relazionali di un tempo, l’elaborazione delle query OLAP veniva delegata
a sistemi ausiliari in modo da non rallentare l’esecuzione delle numerose query OLTP. Nei
database in-memory, grazie alle superiori performance generali del sistema, è possibile
affrontare entrambe le tipologie di query. Nello specifico, memorizzare le informazioni con il
modello column-oriented permette la veloce esecuzione delle interrogazioni OLAP. Nel caso
in cui, invece, siano necessarie maggiori performance per le interrogazioni OLTP, i database
in-memory sono in grado di adottare anche schemi ibridi di rappresentazione del dato.
2.1 − Overview dei database in-memory 18
• Selezione: per le operazioni di selezione, eseguire le query più selettive per prime permet-
te di restringere fin da subito il set di dati da recuperare, migliorando le performance.
Nei sistemi colonnari, ciò si traduce nel selezionare per prime le colonne con cardinalità
minore. La ricerca nel dizionario avviene una volta sola e le comparazioni vengono
fatte sulla base dei valori codificati nel dizionario. Per query semplici, un database or-
ganizzato per righe permette di ottenere risultati più velocemente; invece, se l’obiettivo
sono query complesse che selezionano molte righe rispetto ad uno stesso attributo,
l’organizzazione per colonne risulta vincente. In Tabella 2.2 viene riportato un esempio
della differenza di performance nei due casi.
nale. È necessario, dunque, decidere come trasformare i dati bidimensionali in dati mono-
dimensionali usando un modello basato su righe, basato su colonne oppure uno schema
ibrido.
Nel modello basato su righe (Row Data Layout), come si osserva in Figura 2.3, i dati in
memoria sono memorizzati sotto forma di tuple consecutive. In questo modo, le scansione di
una singola tupla o di più tuple consecutive risulta molto veloce. Tuttavia, questo modello
permette di implementare tecniche di compressione meno performanti.
In Figura 2.4, invece, i dati vengono conservati rispetto agli attributi. La scansione di
un’intera colonna risulta molto veloce e si possono implementare tecniche di compressione
dati molto spinte, come la dictionary encoding. Un aspetto negativo risiede nella ripresa dati
a seguito di un guasto; infatti, la ricostruzione delle colonne a partire dal file di log risulta
complessa.
TimesTen
TimesTen è uno dei primi sistemi in-memory, nato con l’obiettivo di supportare carichi di
lavoro simili ai DBMS relazionali ma con performance migliori. Le prime versioni pubblicate
risalgono al 1995; nel 2005, la società fu acquisita da Oracle. Oracle cominciò ad offrire
TimesTen come soluzione in-memory indipendente, oppure come caching database a supporto
dei propri DBMS relazionali.
In TimesTen tutti i dati risiedono nella memoria centrale. Per garantire la persistenza
viene periodicamente scritta una snapshot dell’intero database sul disco fisso, oltre ad un file
2.1 − Overview dei database in-memory 20
Redis
Mentre TimesTen è un tentativo di costruire un database in-memory compatibile con il
modello relazionale, Redis rappresenta l’estremo opposto. Redis è, infatti, un key-value store
e, in quanto tale, non presenta alcun tipo di schema logico.
Redis (Remote Dictionary Server) si propone come una soluzione in grado di sostenere un
ritmo molto elevato di transazioni al secondo. Esso segue un modello chiave-valore in cui le
chiavi puntano a degli oggetti. Questi ultimi possono essere di vario tipo e, generalmente,
sono costituiti da stringhe di testo, oppure varie “collezioni” di stringhe, ad esempio liste,
liste ordinate, tabelle hash, etc.
Una caratteristica di Redis è che permette di operare con basi di dati più grandi dell’effet-
tiva memoria disponibile; questo è possibile grazie ad un meccanismo di virtual memory che
permette di spostare sul disco fisso le chiavi accedute meno frequentemente. Nell’eventualità
in cui sia richiesta una chiave che è stata spostata su disco fisso, le operazioni di I/O saranno
inevitabili. Questa soluzione rappresenta un approccio ottimistico; infatti, si confida nel fatto
che le chiavi spostate sul disco fisso vengano accedute di rado.
Come si può osservare in Figura 2.6, per quanto riguarda la persistenza dei dati, anche
Redis utilizza il disco fisso. In particolare, vengono generati i seguenti due file:
• RDB File: consiste nella versione cristallizzata ad un preciso istante dell’intero database
Redis. La generazione di questo file può essere configurata ad intervalli regolari di
tempo oppure quando viene raggiunta una certa soglia di scritture.
• Append Only File (AOF): consiste in un registro, aggiornato alla fine di qualsiasi opera-
zione, che permette di effettuare il ripristino del database partendo dal file RDB.
2.2 − SAP HANA 21
VoltDB
VoltDB rappresenta un punto di rottura rispetto a TimesTen e Redis. Questi ultimi fanno
uso di una qualche forma di file su disco per garantire la persistenza dei dati, come registri o
log transazionali. VoltDB, invece, si propone come soluzione puramente in-memory, abolendo
qualsiasi scrittura sul disco fisso.
Per garantire le proprietà ACID e, in particolare, la persistenza, VoltDB si avvale di un
sistema di replicazione su nodi. Un commit di una transazione viene considerato completo
solo quando questo viene propagato a più di un nodo fisico. Il numero di nodi coinvolti
dipende da un parametro denominato K-safety level. Per esempio, un K-safety level pari a 2
garantisce che se due qualsiasi nodi si guastano non ci sarà alcuna perdita dei dati. In questo
caso, per considerare un commit completo, sarà necessario che quest’ultimo venga propagato
correttamente ad almeno 3 nodi.
VoltDB supporta il modello relazionale, tuttavia, la sua architettura multi-nodo funziona
al meglio se questo modello può essere partizionato. Le tabelle del database devono obbliga-
toriamente essere partizionate oppure replicate. Le tabelle partizionate sono distribuite su
più nodi, mentre quelle replicate vengono duplicate in ogni partizione. Le tabelle replicate
sono più costose da gestire per le transazioni di tipo OLTP, dovendo ripetere le operazioni
per ognuna delle partizioni.
Inoltre, VoltDB, impiega un meccanismo per cui ogni partizione del database viene
associata ad una sola CPU che avrà accesso esclusivo ad essa. Questa soluzione permette di
tamponare il costo in performance causato dai meccanismi di locking; tuttavia, richiede che le
transazioni vengano eseguite in breve tempo al fine di evitare una serializzazione eccessiva
di richieste.
Come TimesTen e Redis, l’architettura per la persistenza dei dati di HANA si avvale
dell’uso di snapshots e file di registro salvati su disco fisso. Il rispetto delle proprietà ACID
da parte delle transazioni è garantito da un file di log, chiamato redo log. Per minimizzare
l’impatto delle scritture su questo file di log presente su disco, SAP HANA impone che il
esso sia posizionato su un SSD HANA-certified.
L’architettura colonnare di HANA include un’implementazione di un write-optimized
delta store (in breve delta store). Il delta store è un’area del database ottimizzata per scritture
frequenti. Infatti, come visto nella precedente sezione, le scritture sul modello colonnare
possono risultare più costose rispetto al modello row-oriented. Il delta store è un’area di
memoria generalmente row-oriented, non ordinata e che non utilizza tecniche di compressione
al fine di garantire alte performance in scrittura.
Come si osserva in Figura 2.7, la gestione della memoria da parte di SAP HANA risulta
abbastanza intricata.
Figura 2.7: Schema della gestione della memoria da parte di SAP HANA
3. Gli aggiornamenti da eseguire su tabelle colonnari vengono prima effettuati nel delta
store, inizialmente nel row-oriented L1 store.
2.2 − SAP HANA 24
4. Quando il sistema lo ritiene opportuno, i dati presenti nell’L1 store vengono “promossi”
nell’L2 store, che impiega tecniche di compressione moderate e non ordina i dati. Infine,
i dati migrano nelle effettive tabelle column-oriented che sono altamente compresse e
ordinate.
7. Ad intervalli regolari, i vari SavePoint, vengono integrati con il database file presente
sul disco in modo da mantenerlo aggiornato.
8. Quando una transazione richiede il commit, un record transazionale viene scritto nel
redo log per garantire la proprietà di Durability.
Come visto, HANA, così come altri database in-memory (TimesTen o Redis), presenta
situazioni in cui la scrittura sul disco fisso risulta inevitabile. Le prestazioni delle soluzioni in-
memory sono comunque molto elevate rispetto ai classici database su disco e, per le aziende,
la persistenza del dato risulta più importante di qualche millisecondo in più per completare
le transazioni. Per questo motivo, il compromesso di avere una soluzione in-memory che,
ogni tanto, deve rallentare le sue performance per scrivere sul disco, è ben accettata.
CAPITOLO 3
• Finance (FI): è il modulo dedicato alla gestione e all’elaborazione dei dati relativi alle
transazioni finanziarie nelle imprese di piccole, medie e grandi dimensioni. Esso pre-
senta diversi sotto-moduli che integrano funzioni per gestire la contabilità generale,
la contabilità dei fornitori e la contabilità dei clienti. Il modulo per la contabilità gene-
rale permette di tenere traccia dello stato patrimoniale, delle entrate e delle uscite. Il
modulo per la contabilità dei fornitori gestisce, invece, i pagamenti delle aziende o dei
liberi professionisti che offrono servizi e/o prodotti fondamentali per l’azienda. Infine,
l’ultimo modulo gestisce tutte le attività riguardanti le transazioni dei clienti, studiando
oltretutto il rischio di insolvenza.
• Controlling (CO): è il modulo che si occupa, principalmente, di generare report in tempo
reale a supporto della pianificazione aziendale sulla base di dati concreti e tangibili. Esso
si occupa, dunque, di fornire informazioni a manager e direttori su come, e dove, viene
allocato il budget aziendale. Esso garantisce, inoltre, le funzionalità per la contabilità per
centro di costo, la contabilità per centro di profitto, l’Activity Based Costing e l’analisi
della profittabilità.
• Material Management (MM): è il modulo che copre tutta la parte di gestione dei materiali
e del magazzino in ottica di maggiore efficienza e produttività. La gestione dei materiali
25
3.1 − Situazione aziendale attuale 26
è un aspetto cruciale per tutte le aziende che producono beni e può determinare, nel
lungo periodo, la sopravvivenza o meno di un’azienda sul mercato. Saper gestire in
maniera efficiente i materiali significa coordinare al meglio le scorte in magazzino,
evitando inutili giacenze nei depositi e offrendo all’azienda la possibilità di investire
il proprio capitale in modo più fruttuoso. In aggiunta a ciò, anche la qualità della
produzione dipende, in buona parte, da come vengono gestite materie prime e risorse
lungo tutta la linea produttiva.
• Sales & Distribution (SD): grazie a questo modulo è possibile gestire e monitorare l’intero
processo che che va dalla richiesta di un eventuale preventivo all’effettiva consegna
del prodotto al cliente. È uno strumento utile per l’elaborazione dei dati e la creazione
di report specifici per le seguenti aree: prezzo e tassazione, verifica della disponibilità
del materiale, ordini di vendita, organizzazione del processo produttivo, spedizione e
consegna del prodotto e fatturazione.
• Production Planning (PP): è un modulo con molti punti di contatto con il Production
Planning e Material Management (MM). Esso permette di pianificare la produzione in
base alla domanda di mercato e alla propria capacità produttiva effettiva. Oltre alla
pianificazione dei processi di produzione, esso consente anche di pianificare l’approv-
vigionamento dei materiali necessari alla produzione tramite il sotto-modulo MRP
(Material Requirements Planning) nonché di pianificare gli acquisti dei materiali necessari
tenendo conto dei tempi di consegna stimati. Risulta essere un modulo fondamentale
per un’azienda manifatturiera.
• Plant Maintenance (PM): è il modulo utilizzato per la gestione di tutte le attività di
manutenzione dell’azienda. Esso è composto da molte funzionalità come, ad esem-
pio, gestione delle ispezioni, sistema di notificazione, strumenti per la manutenzione
correttiva e preventiva e pianificazione degli interventi di manutenzione.
Oltre ai moduli funzionali appena descritti, l’azienda utilizza molti moduli tecnici. Tra i
più importanti troviamo:
• SAP Basis: modulo per la gestione e amministrazione dei sistemi SAP.
• SAP SRM: modulo che contiene molti strumenti per l’area Sourcing and Procurement,
ovvero quell’area aziendale che si occupa di identificare i fornitori da cui approvvigio-
narsi.
• SAP ABAP: modulo contenente tutto il necessario per sviluppare applicazioni e report
“custom” tramite il linguaggio ABAP al fine di estendere le funzionalità standard di
SAP.
Nonostante la suite SAP sia il sistema principale tramite il quale l’azienda conduce i
propri affari, vengono utilizzati molti altri software ausiliari denominati “sistemi satellite”.
Ne sono un esempio i tool di Business Intelligence; infatti, tool quali Qlik e Salesforce vengono
usati attivamente in azienda.
Nonostante questi sistemi satellite non sono impattati dal progetto di migrazione in
modo diretto, spesso si sono rese necessarie attività di manutenzione al fine di garantirne la
compatibilità con il nuovo sistema SAP S/4HANA.
• Elaborazione dei dati più veloce ed efficiente: SAP S/4HANA offre una scalabilità maggiore
rispetto alle precedenti versioni garantendo un maggiore supporto alle attività di
memorizzazione e analisi dei dati. Grazie all’architettura in-memory del database
HANA lo scaling verticale del sistema non impatta eccessivamente le performance di
elaborazione. Difatti, SAP S/4HANA permette la pianificazione, l’esecuzione, l’analisi
e la generazione di report sui dati in tempo reale. Questo aumento di performance
consente alle aziende di prendere delle decisioni data-driven in maniera veloce ed
efficace.
• Semplificazione dei processi di business: con S/4HANA, SAP, ha spinto molto sulla standar-
dizzazione delle funzionalità e sulla consistenza dell’interfaccia grafica nelle varie aree
della piattaforma (punto dolente delle precedenti implementazioni). Ciò può sembrare
un aspetto banale ma, nel concreto, permette alle aziende di implementare e integrare
nuove soluzioni in maniera più semplice.
• Design user-friendly: uno degli aspetti più significativi e visibili di S/4HANA è il design
user-friendly che SAP si è impegnata a garantire ai suoi clienti. Negli anni, infatti, sono
state molteplici le critiche mosse a SAP per via dell’interfaccia utente molto arretrata e
complicata da usare, specialmente per quella fetta di utenti che non possiede conoscenze
informatiche. Ci sono stati miglioramenti anche sull’utilizzo dell’interfaccia tramite
tablet e smartphone, garantendo un’interfaccia consistente tra i vari dispositivi.
• Ottimizzazione del Total Cost of Ownership: SAP dichiara che le aziende che adottano
S/4HANA ottengono dei benefici grazie all’infrastruttura tecnologica semplificata. Il
nuovo sistema permette di gestire, tramite un’unica soluzione, sia i carichi di lavoro
transazionali che i carichi di lavoro tipici della Business Intelligence. Ciò vuol dire che
le aziende possono ottenere di più investendo di meno, riducendo, di fatto, i costi
operazionali. Specialmente nella sua versione basata sul cloud, S/4HANA permette di
evitare costosi investimenti in hardware e infrastruttura di rete.
• Tecnologie innovative: uno dei punti chiave nella strategia di marketing adottata da SAP
per S/4HANA è l’adozione delle più recenti tecnologie in ambito IT. In particolare, la
nuova versione integra sistemi di intelligenza artificiale, machine learning e analisi
predittiva in tempo reale nonché strumenti integrati per i Big Data, per la Data Science
e per l’Internet of Things.
In conclusione, i benefici della migrazione sono molti ma, d’altro canto, sono molte anche
tutte le potenziali implicazioni riguardo i processi di business aziendali. Queste implicazioni
3.1 − Situazione aziendale attuale 28
rendono la transizione ad S/4HANA una decisione importante e significativa che non deve
essere presa con leggerezza. Per le aziende che vogliono, invece, effettuare un’implementa-
zione ex-novo, la sfida da affrontare risulta decisamente minore e la moltitudine di vantaggi
apportati ai processi aziendali può effettivamente essere un aspetto allettante.
Oltre ai vantaggi appena descritti, in Figura 3.1 è possibile osservare un panoramica
riassuntiva di tutte le caratteristiche e gli aspetti aziendali impattati da SAP S/4HANA.
Alla luce di queste sfide, è interessante una ricerca svolta dalla società Nucleus Research
al fine di analizzare l’esperienza utente dei clienti SAP. Dalla ricerca emerge che 6 clienti su
10, potendo tornare indietro, non riacquisterebbero una soluzione SAP e, dato ancora più
preoccupante, 9 clienti su 10 non vogliono effettuare la migrazione. Come si può osservare in
Figura 3.2, il deterrente principale è rappresentato dall’alto costo di implementazione.
Figura 3.2: Panoramica delle motivazioni per cui le aziende evitano la transizione a SAP S/4HANA
Per meglio comprendere l’impatto dei possibili rischi associati alla migrazione a SAP
S/4HANA, nelle seguenti sotto-sezioni, sono presentati alcuni esempi reali di progetti di
migrazione falliti.
Caso LeasePlan
Nel 2019, LeasePlan, un compagnia tedesca che si occupa di soluzioni per il leasing ed
il noleggio a lungo termine di automobili, fu costretta a terminare la propria implementa-
3.1 − Situazione aziendale attuale 30
zione di S/4HANA. La compagnia opera tramite molteplici sedi in tutto il mondo, con una
infrastruttura digitale composta da oltre 35 sistemi differenti.
L’idea di consolidare e allineare tutti questi sistemi sotto un unico, grande e monolitico si-
stema SAP S/4HANA sembrava inizialmente un’ottima strategia di innovazione che avrebbe
permesso di standardizzare e di ridurre la complessità dei sistemi utilizzati. Inoltre, si volle
approfittare dell’occasione per riprogettare alcuni dei processi e delle strategie aziendali. La
visione di SAP S/4HANA, tuttavia, difficilmente si allinea a repentini cambi del modello di
business e, in aggiunta, l’azienda, invece che scaglionare il processo di migrazione, decise di
effettuare la migrazione in tutte le sedi contemporaneamente.
Una scarsa valutazione dei rischi e una scarsa strategia di risposta ai rischi si scontrò
con la complicata e massiccia operazione di migrazione intrapresa dall’azienda. Inoltre, ci
furono problemi nella pianificazione delle sessioni di training agli utenti finali. Questi ultimi,
utilizzando il solito sistema per anni, rigettarono il nuovo sistema per via della sua massiccia
differenza rispetto alle precedenti soluzioni aziendali.
In conclusione, il progetto fu un fallimento totale e fece perdere all’azienda oltre 100
milioni di dollari.
Caso Lidl
Lidl, nota catena di supermercati, fece ritorno ai propri sistemi legacy di gestione dell’in-
ventario dopo il fallimento del progetto di migrazione a S/4HANA. La compagnia investì
circa 500 milioni di euro e 7 interi anni cercando di implementare il nuovo ERP.
I problemi implementativi furono largamente causati dall’incompatibilità tra le gestione
dei processi di business e la gestione del magazzino adottata da Lidl e S/4HANA. Nonostante
gli incessanti sforzi nel cercare di personalizzare e adattare il sistema alle proprie necessità,
S/4 HANA risultava semplicemente incompatibile con la visione di Lidl.
Un’altra problematica fu la fede cieca che il reparto Executive della compagnia ripose
nei consulenti, affidando loro completamente l’intero processo di migrazione. In aggiunta,
durante il processo di implementazione, ci fu una notevole riorganizzazione del personale
Executive creando ulteriore confusione riguardo le ownership dei task di progetto.
• Descrizione del processo aziendale: un documento che descrive il processo in forma grafica
(diagrammi di flusso) e testuale.
• Master Data: dei dati di esempio di una cosiddetta “società modello”, con una struttura
organizzativa tipica da cui partire per configurare la best practice nel contesto della
propria struttura.
• Casi di test: dei test pronti all’uso utili per verificare il corretto funzionamento dell’in-
stallazione.
L’utilizzo delle SAP Best Practices aiuta le aziende a disegnare dei processi aziendali che:
Figura 3.4: Aree toccate dalla raccolta di best practice per SAP S/4HANA
Una volta selezionata una particolare best practice, come si può osservare in Figura
3.5, è possibile leggere una sua breve descrizione ed accedere alla pagina dove sarà pos-
sibile effettuare il download. Nella pagina di download, inoltre, saranno presenti una de-
scrizione estesa della soluzione, i requisiti necessari ed una guida dettagliata a supporto
dell’implementazione.
Figura 3.5: Dettaglio della libreria delle best practice per SAP S/4HANA
1. Discover;
2. Prepare;
3. Explore;
4. Realize;
5. Deploy;
6. Run.
Discover
La fase “Discover” ha inizio quando il cliente si rende conto che c’è bisogno di una
soluzione per soddisfare un requisito di business aziendale e inizia a cercare la soluzione
SAP che risulta essere più conforme ai propri requisiti. Durante questa fase, i clienti possono
richiedere una soluzione di prova gratuita, se applicabile, e provarla personalmente per
verificare le sue caratteristiche e le funzionalità. I clienti possono, inoltre, rivolgersi ai partner
per ottenere consigli di consulenza basati su anni di esperienza nel settore e sui prodotti SAP.
Entro la fine di questa fase, i clienti decidono se procedere o meno con la soluzione SAP
richiesta e passare alla fase successiva del ciclo di vita dell’implementazione.
Prepare
Come suggerisce il nome, la fase “Prepare” è cruciale sia per i clienti che per i partner
in quanto ci si prepara ad affrontare le attività fondamentali per il successo del progetto.
Il sistema da implementare viene fornito al cliente dopo la firma del contratto con SAP
e il partner. Allo stesso tempo, le risorse chiave vengono identificate dal lato del partner
in termini di on-boarding e abilitazione dei consulenti SAP. Dal lato del cliente, vengono
identificati i proprietari dei processi aziendali per fornire i giusti requisiti ai consulenti che
implementano il progetto. Insieme al team di progetto viene finalizzato un piano di progetto
3.2 − Processo di migrazione a SAP S/4HANA 35
Explore
La fase “Explore” pone le fondamenta per il successo del progetto. Durante questa
fase, clienti e partner collaborano tra loro per il raggiungimento di un unico, fondamentale,
risultato: consolidare il processo di business da seguire nel nuovo sistema SAP. Questo
viene fatto attraverso diverse sessioni denominate Fit-to-Standard Analysis, in cui le soluzioni
presenti nelle SAP Best Practice che, secondo i partner, meglio combaciano con la visione
dell’azienda cliente, vengono presentate agli owner di progetto. Vengono effettuate, a questo
punto, una serie di incontri tra il team di progetto e i consulenti partner finché entrambe le
parti si accordano sul disegno di implementazione da seguire.
Verso la fine di questa fase vengono formalizzati tutti i requisiti richiesti dal cliente in
termini di worflow, report, integrazioni, conversioni ed enhancements, nonché tutti parametri
di configurazione in un documento di backlog. Il documento di backlog conterrà, dunque,
tutte le funzionalità che dovranno essere presenti sul nuovo sistema SAP per permettere
agli utenti aziendali di svolgere le loro attività quotidiane. Sempre da tale documento, i
consulenti partner pianificano le attività da svolgere nella fase di Realize in base alle priorità
e alla fattibilità. Viene, inoltre, svolta un’analisi degli impatti sul sistema al fine di pianificare
sessioni di trainining per gli utenti finali.
Realize
Una volta terminata la fase di Explore, il team di progetto può iniziare a lavorare sul
server contenente il sistema di qualità fornito da SAP. In questa fase, i consulenti iniziano
a configurare il sistema sulla base del documento di backlog. Ciò avviene con un approccio
iterativo in cui il team di progetto pianifica diversi sprint in ottica Agile. Lo scopo di ogni
sprint è quello di scomporre il documento di backlog in deliverable. Questi ultimi andranno
presentati al team che, valutandone la correttezza, deciderà se approvarli o meno.
Durante questa fase, inoltre, verranno condotte diverse tipologie di test, tra cui: gli unit
test, gli integration test e gli UAT (User Acceptance Test). Lo scopo di questi test è garantire
che il comportamento atteso dal sistema e quello effettivo combacino.
Deploy
Una volta che tutti i deliverables sono stati consegnati, si passa alla fase di Deploy. L’a-
zienda, in questa fase, va incontro ad una temporanea interruzione della propria soluzione
SAP per permettere la migrazione dei dati nel database dalla vecchia versione alla nuova.
Questo processo viene chiamato cutover e, tipicamente, viene svolto durante il week-end per
minimizzare l’impatto sui processi aziendali.
Run
Terminato il processo di cutover, ci si ritrova nella fase di Run. Durante questa fase
l’azienda inizia ad utilizzare il nuovo sistema, e l’attività principale da svolgere è l’Hyper-Care
agli utenti finali. Queste attività di supporto agli utenti risultano di fondamentale importanza
3.2 − Processo di migrazione a SAP S/4HANA 36
per assicurarsi che i dipendenti dell’azienda non incontrino problemi durante l’utilizzo del
nuovo sistema.
Come si può osservare in Figura 3.8, la Custom Code Remediation inizia con il Custom
Code Scoping, ovvero con un’analisi dell’utilizzo dei programmi custom al fine di ricavarne il
numero di esecuzioni in un determinato periodo. Difatti, se vengono individuati programmi
che non sono più utilizzati o con un numero di esecuzioni molto basso, si può pensare di
renderli obsoleti ed evitare di adattarli. Fatto ciò, si passa alla Custom Code Analysis con
lo scopo di identificare gli interventi da effettuare nel codice. Questi ultimi possono essere
semplici modifiche alle query SQL così come profonde riprogettazioni dell’intera logica del
programma.
Sempre in riferimento alla Figura 3.8, arrivati alla fase di Realization, tutte le modifiche
precedentemente identificate vengono implementate e testate. Durante questa fase, inoltre,
è possibile sostituire alcune vecchie funzionalità del codice ABAP con altre più moderne
presenti in S/4HANA. Tali sostituzioni, oltre che a rendere il codice più moderno, permettono
alle applicazioni di sfruttare appieno la velocità del database HANA.
3.3 − Strategia di migrazione adottata 37
• Warehouse Management: area che si occupa della gestione e della logistica del magazzino.
• Transportation Management: area che si occupa della gestione della logistica dei trasporti.
• Plan to Product: area che si occupa della gestione del processo manifatturiero.
Al nostro arrivo in azienda, il progetto si trovava a cavallo tra la fase di Explore e la fase
di Realize e siamo stati inseriti a supporto del pillar Procure to Pay.
al fine di allineare tutti i team sull’evoluzione complessiva del progetto. Infine, ogni sei
settimane avviene l’incontro con il consultivo aziendale, in cui il Project Manager riferisce lo
sviluppo del progetto mentre, ogni due mesi, oppure su richiesta, si esegue una riunione con
i dirigenti aziendali.
L’approccio Brownfield, invece, consiste nella conversione del vecchio sistema SAP ECC a
SAP S/4HANA. I processi esistenti, i dati e tutti i programmi custom implementati vengono
trasferiti nel nuovo sistema così come sono. Tale approccio è quello più utilizzato dalle
aziende dato che mantiene i costi di implementazione contenuti e non stravolge la struttura
dei processi aziendali.
I vantaggi dell’approccio Brownfield sono:
Oltre ai due approcci appena descritti è possibile anche adottare uno schema ibrido.
L’azienda oggetto della presente tesi, infatti, adotta un approccio Greenfield per alcuni pillar
aziendali e l’approccio Brownfield per altri.
In questo capitolo verrà brevemente introdotto l’obiettivo del tool per la gestione delle tolleranze. Inizial-
mente verrà introdotto il processo aziendale nel quale il tool si colloca e, successivamente, verranno esposti i
principali dettagli implementativi.
41
4.1 − Analisi dei requisiti di business 42
Per ragioni di privacy, il reale processo aziendale non può essere mostrato. Tuttavia, in
Figura 4.3, viene presentata una versione semplificata del processo di riferimento. Come si
osserva, il processo parte dal planner che effettua una pianificazione dei materiali necessari
per la produzione, indicandone il magazzino di consegna ed eventuali tolleranze. Successi-
vamente, le pianificazioni effettuate dai planner vengono elaborate dal modulo MRP. Tale
modulo si occupa, tramite l’omonimo algoritmo, di calcolare come e quando effettuare gli
acquisti, tenendo conto di molti fattori tra cui i tempi di consegna e la capacità produttiva
dell’azienda. Dal modulo MRP verranno, dunque, generate delle “Richieste d’Acquisto”
(spesso denominate “RdA”) che, dopo un processo di approvazione, vengono trasformate in
“Ordini d’Acquisto” (spesso denominati “OdA”). Un’OdA è l’effettivo acquisto di una lista di
articoli e contiene al suo interno molti parametri, tra cui i valori delle tolleranze, il magazzino
di consegna e la divisione. Il processo termina quando il fornitore effettua la consegna della
4.1 − Analisi dei requisiti di business 43
In conclusione, definiti tutti i requisiti tecnici del tool, è stato realizzato il diagramma
presentato in Figura 4.5 che ne riassume il funzionamento. In maniera completamente tra-
sparente all’utente, per l’effettivo aggiornamento dei contratti, si è scelto di sviluppare un
tool secondario al fine di semplificare la logica del programma. Al tool per la gestione delle
tolleranze e a quello per l’aggiornamento dei contratti, sono stati assegnati, rispettivamente, i
nomi tecnici ZMRPE_GP e ZUPD_CONTR.
4.2.1 ZMRPE_GP
Il codice dell’intero tool risulta molto articolato e prolisso, motivo per cui verranno
evidenziati soltanto i passaggi chiave, in accordo con quanto visto nel diagramma in Figura
4.5.
Il primo step consiste nel permettere al planner di selezionare il gruppo prodotto di
interesse. Per fare ciò, in ABAP, è possibile generare delle schermate di selezione in cui
l’utente può inserire tutti i dati necessari. Nella maggior parte dei casi, i parametri inseriti
4.2 − Implementazione dei requisiti 45
nella schermata di selezione vengono utilizzati per effettuare le query sul database SAP;
tuttavia, nulla impedisce di usare questi parametri come normali variabili all’interno del
programma.
Tramite il codice presente nel Listato 4.1 è possibile definire la schermata di selezione
mostrata in Figura 4.6. Tale schermata permette al planner di inserire il gruppo prodotto di
interesse e la rispettiva divisione; difatti, uno stesso gruppo prodotto può essere definito per
più divisioni.
tipologie di dati. Nella maggior parte dei casi le liste ALV vengono utilizzate per mostrare
dati tabellari in modo interattivo come, ad esempio, il risultato delle query.
In Figura 4.8 è possibile osservare un dettaglio della ALV per l’inserimento dei dati da
parte del planner. Nello specifico, evidenziati in viola, sono presenti i campi per inserire le
tolleranze in eccesso e in difetto ed, evidenziato in verde, il campo per l’inserimento del
magazzino. Evidenziati in giallo, invece, sono visualizzati due campi di controllo per l’utente
che indicano, rispettivamente partendo da sinistra, la data dell’ultima modifica e una sigla
che notifica lo stato di aggiornamento dei contratti (S: tutti i contratti sono aggiornati, W:
aggiornamento pianificato).
Sempre in riferimento alla Figura 4.8, evidenziati in rosso sono presenti tre pulsanti che
permettono di gestire i materiali in eccezione. Partendo da sinistra, il pulsante “Aggiun-
gi eccezione” permette al planner di definire un materiale in eccezione per quel gruppo
4.2 − Implementazione dei requisiti 47
prodotto, come mostrato in Figura 4.9. Per i codici materiale in eccezione, quando avverrà
l’aggiornamento dei contratti tramite ZUPD_CONTR, verranno considerati gli specifici valori
inseriti dal planner invece che i valori globali del gruppo prodotto di riferimento.
I pulsanti “Mostra mat. eccezione” e “Rimuovi eccezione”, invece, permettono, rispetti-
vamente, di mostrare i materiali in eccezione già inseriti per il gruppo prodotto selezionato
e di rimuovere un’eccezione. In Figura 4.10 sono presentate le schermate generate dai due
pulsanti appena descritti.
Figura 4.10: Schermate generate dai pulsanti “Mostra mat. eccezione” e “Rimuovi eccezione”
Il planner, una volta inseriti i valori desiderati, tramite il tasto “Salva”, procede all’effettiva
4.2 − Implementazione dei requisiti 48
memorizzazione dei nuovi valori sul database. Tramite il codice presente nel Listato 4.3,
dunque, viene generato un timestamp in formato UTC (righe 1-3), dopodiché, dalla riga 5
alla riga 7, vengono “valorizzati” i campi della tabella interna lt_zmcoduss con i valori del
timestamp appena generato; inoltre, viene impostato a “W” il campo relativo all’aggiornamento
dei contratti (dato che tale attività avviene in modo asincrono). Nelle restanti righe del listato,
invece, si effettua la modifica alle tabelle del database zmcoduss e zmcoduss_eccez e, se
non sono state sollevate eccezioni, si procede al commit delle modifiche.
4.2.2 ZUPD_CONTR
Una volta che le modifiche effettuate dal planner, tramite il tool ZMRPE_GP, sono state
salvate sul database, è necessario propagare i nuovi valori delle tolleranze e del magazzino
nei contratti. L’aggiornamento avviene tramite il tool ZUPD_CONTR che, come accennato in
precedenza, opera in modo asincrono rispetto all’inserimento dei valori in ZMRPE_GP. Si
è scelto di gestire l’aggiornamento dei contratti in modo asincrono per evitare di bloccare
i contratti. Difatti, in SAP, quando si vogliono effettuare delle modifiche ad un oggetto, è
necessario acquisire un lock in scrittura. L’aggiornamento di un solo gruppo prodotto può
scatenare delle modifiche su diversi contratti e, spesso, i planner aggiornano molti gruppi
prodotto in una sola sessione. Aggiornando in maniera sincrona, dunque, un’eccessiva
quantità di contratti verrebbe bloccata proprio nell’orario lavorativo aziendale, ostacolando
chi lavora su di essi. Difatti, per evitare di causare disagi, l’aggiornamento è schedulato per
avviarsi autonomamente durante le ore notturne.
L’aggiornamento asincrono automatico genera, tuttavia, un’altra problematica, ovvero la
selezione dei gruppi prodotto per cui propagare le modifiche. Per aggiornare le tolleranze
ed il magazzino è necessario selezionare dal database tutte le posizioni di contratto il cui
codice materiale è contenuto nel gruppo prodotto modificato. Le posizioni di contratto sono
conservate in una nota tabella standard SAP chiamata EKPO. In azienda, tale tabella contiene
svariati milioni di record e, se i gruppi prodotto modificati sono tanti, la query di selezione
potrebbe andare in timeout ed essere interrotta dal gestore SQL di SAP. Per far fronte al
problema viene effettuato un controllo basato su timestamp.
Nello specifico, quando un planner effettua il salvataggio dei dati in ZMRPE_GP, nella ta-
bella zmcoduss viene registrato il timestamp del salvataggio, chiamato “last mod. timestamp”.
4.2 − Implementazione dei requisiti 49
Listato 4.4: Query per la selezione dei gruppi prodotto recentemente modificati
A questo punto, tramite la query presente nel Listato 4.5, verranno selezionate le posizioni
di contratto che, in ordine:
• appartengono a contratti in corso di validità, ovvero la cui data di validità del contratto
sia maggiore della data di esecuzione del tool di aggiornamento;
• hanno un codice materiale appartenente ad uno dei gruppi prodotto selezionati tramite
la query precedente (Listato 4.4);
• hanno una source list in corso di validità, ovvero un fornitore da cui poter effettuare
l’approvvigionamento.
Sempre nel Listato 4.5, alla riga 8, si può notare un particolare comando SQL disponibile
solo in SAP, ovvero: FOR ALL ENTRIES IN <tab. interna> WHERE. In SAP, specifican-
do FOR ALL ENTRIES davanti alla clausola WHERE di una SELECT, è possibile confrontare
i campi di una tabella del database con quelli di una tabella interna utilizzando gli operatori
relazionali. Una tabella interna viene definita tramite codice ABAP ed è, quindi, una normale
variabile del programma che la definisce. Tramite i tradizionali comandi SQL, infatti, non
sarebbe possibile confrontare un oggetto esterno con gli elementi di una tabella del database.
In questo modo, inoltre, le condizioni logiche espresse nella clausola WHERE vengono con-
frontate individualmente con ogni riga della tabella interna. Il risultato finale della SELECT
sarà, quindi, l’unione di tutte le righe selezionate dai singoli confronti. Nel Listato 4.5, nello
specifico, il comando viene utilizzato per effettuare la medesima selezione per ogni gruppo
prodotto presente nella tabella interna gt_zmcoduss_data. Tale tabella viene “valorizzata”
tramite la query di selezione dei gruppi prodotto presente nel Listato 4.4.
Conclusa la fase di recupero dei dati dal database, il programma procede all’effettivo
aggiornamento delle posizioni di contratto. Infine, viene aggiornato il timestamp relativo
all’ultima elaborazione del programma di aggiornamento e l’esecuzione del programma può
proseguire in due modi differenti. Nel caso in cui tutte le posizioni di contratto selezionate
vengono aggiornate correttamente il programma genera un registro delle modifiche effettuate
e termina. Altrimenti, se si sono verificati degli errori in fase di aggiornamento per almeno
una posizione di contratto, il programma genera il registro delle modifiche effettuate ed un
registro di errore, invia una mail automatica con il registro degli errori in allegato ad un
buyer dell’azienda e termina. Il buyer, ricevuta la mail di avviso, potrà consultare il registro
degli errori in allegato ed, eventualmente, procedere ad una correzione manuale delle sole
posizioni in errore.
CAPITOLO 5
Nel presente capitolo verrà introdotto il processo aziendali in cui si colloca il tool PLM, descrivendone
brevemente la versione attuale. Successivamente verrà descritto il processo di porting tecnologico, analizzando
i requisiti e discutendo l’implementazione.
51
5.1 − Analisi dei requisiti di business 52
• riprogettare il processo eliminando le parti custom, facendo ritorno allo standard SAP;
La modernizzazione del tool PLM ricade proprio in quest’ultima casistica. Difatti, essendo
il processo ben consolidato da anni, un suo sostanziale re-engineering creerebbe soltanto
confusione. A monte di una Richiesta di Acquisto (RdA) c’è il modulo MRP. Tale modulo,
individua i materiali necessari, effettua una stima delle quantità, stabilisce il momento
in cui i materiali saranno necessari per rispettare la programmazione della produzione e
gestisce la tempistica di consegna, con l’obiettivo di soddisfare la domanda e migliorare la
produttività nel suo complesso. Il flusso elaborativo dell’MRP è presentato in Figura 5.2.
Come si può notare, il tutto parte da un Master Production Schedule (MPS), generato a partire
dalle previsioni della domanda di mercato, dalle risorse già disponibili in magazzino e dalle
risorse da acquistare. L’MPS contiene il piano di produzione per un determinato periodo e
rappresenta l’input principale dell’algoritmo dell’MRP che, a questo punto, genera delle Bill
of Materials, ovvero delle “liste della spesa” di componenti necessari alla produzione. Infine,
viene generato il Material Requirements Plan a cui seguono varie Richieste di Acquisto e Ordini
di Acquisto.
In Figura 5.3 viene presentato, con alcune semplificazioni, un diagramma di flusso che
descrive il processo per l’acquisto dei materiali in azienda. Nello specifico, in presenza di
una richiesta di materiale, frutto dell’elaborazione del modulo MRP, si procede alla creazione
automatica delle Richieste di Acquisto da parte di un tool custom aziendale. A questa fase
segue la trasformazione delle Richieste di Acquisto in Ordini di Acquisto. Una Richiesta di
Acquisto, infatti, è soltanto un documento interno il cui scopo principale è gestire il workflow
5.1 − Analisi dei requisiti di business 53
• Contract Management: è la fase di gestione del contratto, spesso la più critica, essendo
necessaria per confermare che i termini contrattuali (tempistiche, qualità, termini di
pagamento, etc.) vengano rispettati dal fornitore.
Tramite SAP SRM, dunque, i buyer aziendali avevano la possibilità di inserire i listini dei
fornitori, specificando il codice del contratto SAP di riferimento e compilando uno Shopping
Cart. Quest’ultimo prende sostanzialmente la forma di una tabella in cui sono definiti i vari
codici materiali e le varie componenti del prezzo. I dati dello Shopping Cart vanno compilati
dal buyer manualmente, oppure tramite un caricamento massivo dei codici tramite file in
formato CSV. Per questa motivazione il tool risulta molto scomodo e macchinoso da usare
e, anche se il caricamento tramite file CSV permette di caricare molti codici alla volta, basta
qualche errore di formattazione per mandare in errore il programma. Alla frustrazione dei
buyer, dovuta alla lentezza e alla difficoltà di utilizzo del tool, si aggiunge l’interfaccia utente
decisamente obsoleta, di cui ne viene riportato un esempio in Figura 5.4.
Nel tool, un buyer, dopo aver creato un listino e averlo associato ad un contratto SAP,
deve creare una famiglia di materiali oppure utilizzarne una preesistente. La famiglia di
materiali è un concetto simile ai gruppi prodotto visti nel capitolo precedente. Infatti, essa
contiene dei codici materiale al suo interno e definisce alcune proprietà e parametri generali
che si applicano a tutti i materiali contenuti. In Figura 5.5 viene presentata una videata di
esempio della gestione famiglie. In tale schermata si possono osservare, nell’area evidenziata
in verde, due famiglie di materiali e, di fianco, nell’area evidenziata di giallo, le rispettive
unità di misura e unità di prezzo.
In Figura 5.6, invece, è possibile osservare una videata di esempio che mostra la gestione
dei singoli materiali nel listino. Difatti, una volta creata (o scelta) la famiglia di materiali
appropriata, il buyer deve riempire il listino con i codici materiale di interesse (evidenziati in
verde), definire le componenti di prezzo (evidenziate in giallo), tra cui importo commodity,
importo converting, etc. e, infine, inserire il plant di riferimento, le date di validità del
contratto e le date di validità della source list (evidenziate in viola).
A questo punto il listino è completo e deve essere mandato in approvazione ad un approver
(solitamente un direttore del reparto acquisti). Una volta approvato il listino, i suoi valori
verranno propagati nel rispettivo contratto SAP aggiornando i prezzi e la source list per le
singole posizioni del contratto.
5.2 − Implementazione dei requisiti 55
Per il porting tecnologico di PLM, essendo un tool molto complesso e di vitale importanza,
l’azienda si è fatta affiancare da una società di consulenza. Il team di progetto interno ha,
quindi, collaborato con i consulenti per completare il porting. Per questo motivo, il codice del
tool, così come i dettagli tecnici di implementazione, sono privati. La metodologia adottata
per l’implementazione è di tipo agile, ovvero sono state fatte periodicamente delle riunioni
con i key user della direzione acquisti durante le quali emergevano i vari requisiti e le migliorie
desiderate e, successivamente, venivano pianificati degli sprint. In ogni sprint si è cercato
5.2 − Implementazione dei requisiti 56
Dopo alcune riunioni preliminari con la direzione acquisti, insieme ai consulenti sono
state individuate due aree di intervento per il tool, ovvero:
• New Functionality: comprende tutti gli sviluppi delle nuove funzionalità richieste.
• utilizzo del formato Excel al posto dei file CSV per il caricamento dei listini;
• rimozione dei campi relativi alle tolleranze, ora in carico al nuovo tool ZMRPE_GP;
Invece, per l’area di sviluppo New Functionality, i punti rilevati sono i seguenti:
• implementazione di una web app per gestire le approvazioni da parte dei direttori.
5.2 − Implementazione dei requisiti 57
Figura 5.9: Esempio del template adottato per l’upload tramite file Excel
Nei successivi sprint è stata progettata ed implementata l’interfaccia generale del tool
della quale, in Figura 5.10, è possibile osservarne la schermata principale.
In tale schermata, nello specifico, si distinguono due aree. La prima, evidenziata in verde,
è una schermata di selezione che permette di filtrare i vari listini presenti secondo molti
parametri differenti. Un buyer, solitamente, filtrerà utilizzando il campo “Buyer di riferimento”
in modo da vedere soltanto i listini di sua competenza. Inoltre, si rende disponibile anche
la selezione dei listini obsoleti o scaduti tramite i due checkbox appositi. Nell’area in basso,
evidenziata in giallo, è possibile visualizzare i listini selezionati con un riepilogo di varie
informazioni. In particolare, si hanno informazioni riguardo la tipologia di listino, la società
5.2 − Implementazione dei requisiti 58
di interesse, il buyer che ha creato il listino, il codice fornitore associato, lo stato del listino, la
scadenza e il log delle operazioni.
Come si può osservare in Figura 5.11, anche l’interfaccia per la creazione di un nuovo
listino è stata aggiornata e resa consistente con il resto del tool. In questa schermata il buyer
che vuole creare un listino deve inserire alcuni dati di testata, tra cui il contratto associato
al listino (evidenziato in rosso) e l’approvatore (evidenziato in giallo). Per facilitare i buyer
nella compilazione dei dati di testata, non appena viene “valorizzato” il campo “Contratto”,
molti dei campi presenti vengono “valorizzati” automaticamente; ciò accade, ad esempio,
per il campo “Fornitore” (essendo fissato per un dato contratto e non modificabile).
Dalla schermata principale del tool, una volta entrati in uno specifico listino, si possono
inserire i codici dei materiali di interesse e modificare quelli esistenti, come si può osservare
in Figura 5.12. Per farlo, tramite i pulsanti presenti nell’area evidenziata in verde, è possibile
caricare un file Excel contenente tutte le informazioni necessarie (come visto in Figura 5.9)
oppure, tramite l’area evidenziata in viola, è possibile eseguire l’inserimento e la modifica
manuale del listino. Tramite i tasti presenti nell’area evidenziata in rosso, invece, è possibile
marcare un materiale obsoleto, oppure ripristinarne che prima era stato marcato come
obsoleto. Marcare un materiale come obsoleto imposta automaticamente la sua data di fine
validità della source list alla data odierna, di fatto impedendo la creazione di nuove Richieste
di Acquisto per esso.
Infine, tramite i pulsanti presenti nell’area evidenziata in giallo, è possibile modificare in
modo massivo le date di validità delle source list. Terminata la modifica del listino, cliccando
sul tasto “Salva”, il buyer viene riportato nella schermata principale.
In ZPLM, un listino può trovarsi in tre stati diversi, ovvero in bozza, in approvazione e
approvato. Una bozza è un listino appena creato, oppure modificato di recente; in questo
stato, esso non può propagare alcuna modifica al contratto SAP di riferimento. Quando
5.2 − Implementazione dei requisiti 59
Selezionando un listino viene aperta una schermata di dettaglio (al centro in Figura 5.15)
dove sono indicati i materiali del listino con il loro prezzo totale. Infine, in Figura 5.15, sulla
destra, è presente un’ulteriore schermata che mostra il delta dell’importo totale nel caso di
listini che hanno subito modifiche. In questo modo quando un direttore deve approvare il
5.2 − Implementazione dei requisiti 61
listino, invece che controllare ogni singolo prezzo dei materiali, può semplicemente guardare
i delta per rendersi conto della situazione.
Per quanto riguarda il fornitore, l’utilità del suo coinvolgimento nel processo risiede nella
possibilità di applicare piccole modifiche ad un listino senza necessità di rimandare quest’ul-
timo in approvazione ad un approver. Nello specifico, se un buyer nota delle inconsistenze
o degli errori nei prezzi del listino può decidere di inviare il listino al fornitore che, a quel
punto, agirà come un buyer e potrà entrare in modifica nel listino. Non appena il fornitore
conferma le modifiche, il listino, invece che andare in approvazione all’approver, andrà in
approvazione al buyer. Il buyer può verificare le modifiche effettuate dal fornitore e, se con-
fermate, viene immediatamente aggiornato il contratto di riferimento, evitando di riempire
inutilmente la casella di posta del direttore incaricato dell’approvazione. Ovviamente, per
evitare che il fornitore possa impostare dei prezzi a suo piacimento, questa operazione viene
resa disponibile solo per i fornitori di fiducia con cui l’azienda ha instaurato accordi a lungo
termine. Inoltre, se il prezzo iniziale e il prezzo inserito dal fornitore presentano un delta
troppo alto, il listino dovrà essere comunque sottoposto al normale processo di approvazione.
CAPITOLO 6
In questo capitolo proporremo una discussione in merito al lavoro svolto. In particolare, dapprima
elencheremo un insieme di lezioni da noi apprese nel portare avanti il presente lavoro. Successivamente,
daremo uno sguardo alle possibili estensioni dell’approccio proposto ad altri casi.
Qualsiasi attività di migrazione risulta, nella maggior parte dei casi, un processo lungo,
articolato e insidioso. Nel caso esposto nella presente tesi, tuttavia, la transizione dal vecchio
al nuovo sistema presenta delle notevoli difficoltà aggiuntive per via della modifica al model-
lo dei dati. Il modo in cui i dati sono rappresentati e manipolati, spesso, getta le fondamenta
per qualsiasi software si voglia implementare. Nel caso della migrazione da SAP ECC a SAP
S/4HANA si assiste ad un passaggio dal classico modello relazionale al modello colonnare
e, inoltre, la transizione da un DBMS tradizionale ad una soluzione in-memory rappresenta
un’evoluzione tecnologica non indifferente. Per questi motivi, il processo di migrazione non
consiste semplicemente nello spostamento dei dati dal vecchio sistema al nuovo sistema,
ma in una serie di attività di re-engineering in cui bisogna tradurre la precedente rappresen-
tazione dei dati nella nuova. Inoltre, la notevole differenza tecnologica dell’architettura di
SAP S/4HANA rispetto a SAP ECC costringe ad una modifica dell’infrastruttura hardware
aziendale, con il conseguente significativo aumento dei costi di progetto.
SAP, annunciando la fine del supporto a SAP ECC, ha forzato indirettamente molte azien-
de ad intraprendere il processo di migrazione. Ciò ha messo in risalto l’impatto che il vendor
lock-in può avere nelle decisioni aziendali. Questa problematica si presenta ogniqualvolta
62
6.1 − Lezioni apprese 63
Conclusioni
65
66
AYRES , F., AYRES , F. e B ARÃO , A. (2019), «Methodologies for Large SAP ERP Projects Imple-
mentation», in «International Conference Europe Middle East & North Africa Information
Systems and Technologies to Support Learning», p. 243–247, Springer.
F ÄRBER , F., M AY, N., L EHNER , W., G ROSSE , P., M ÜLLER , I., R AUHE , H. e D EES , J. (2012),
«The SAP HANA Database–An Architecture Overview.», IEEE Data Eng. Bull., vol. 35 (1),
p. 28–33.
F LEIG , C., A UGENSTEIN , D. e M AEDCHE , A. (2018), «Process Mining for Business Process
Standardization in ERP Implementation Projects-An SAP S/4 HANA Case Study from
Manufacturing.», in «BPM (Dissertation/Demos/Industry)», p. 149–155.
K HAN , W., K UMAR , T., C HENG , Z., R AJ , K., R OY, A. M. e L UO , B. (2022), «SQL and NoSQL
Databases Software architectures performance analysis and assessments–A Systematic
Literature review», arXiv preprint arXiv:2209.06977.
L EE , J., M UEHLE , M., M AY, N., FAERBER , F., S IKKA , V., P LATTNER , H., K RUEGER , J. e
G RUND , M. (2013), «High-Performance Transaction Processing in SAP HANA.», IEEE Data
Eng. Bull., vol. 36 (2), p. 28–33.
M AGAL , S. R. e W ORD , J. (2011), Integrated business processes with ERP systems, Wiley
Publishing.
M ISSBACH , M., S TAERK , T., G ARDINER , C., M C C LOUD , J., M ADL , R., T EMPES , M.,
A NDERSON , G. e OTHERS (2016), SAP on the Cloud, Springer.
67
BIBLIOGRAFIA 68
S CHNEIDER , T., G AHM , H. e W ESTENBERGER , E. (2014), ABAP Development for SAP HANA,
SAP PRESS.
S INGH , V. (2017), Manage Your SAP Projects with SAP Activate: Implementing SAP S/4HANA,
Packt Publishing Ltd.
S TRAUCH , C., S ITES , U.-L. S. e K RIHA , W. (2011), «NoSQL databases», Lecture Notes, Stuttgart
Media University, vol. 20 (24), p. 79.
V ENKATRAMAN , S., FAHD , K., K ASPI , S. e V ENKATRAMAN , R. (2016), «SQL versus NoSQL
movement with big data analytics», International Journal of Information Technology and
Computer Science, vol. 8 (12), p. 59–66.
Siti consultati
• NoSQL – https://en.wikipedia.org/wiki/NoSQL
• What You Need to Know About SAP S/4 HANA Migration – https://www.
outsystems.com/blog/posts/sap-s4hana-migration
70