Capitolo 11 Il Data Modeler 11.1 Introduzione Quando si costruisce un programma utilizzando diverse tabelle (eventualmente collegate tra loro con chiavi esterne), potrebbe essere utile avere a disposizione una rappresentazione grafica delle relazioni intercorrenti tra le tabelle utilizzate nel programma stesso. Questo è possibile grazie all ABAP/4 Workbench s Data Modeler, un applicativo di ABAP/4 in grado di creare una rappresentazione grafica di quanto sopra descritto. Figura 114 Un data model consiste di due elementi chiave (figura 114): i box (chiamati entity types) rappresentanti le tabelle utilizzate le frecce necessarie per mostrare i collegamenti intercorrenti tra queste tabelle. 156
Un data model si basa sul dizionario dati, quindi un cambiamento in una tabella si riflette automaticamente sul model stesso. 11.2 Creazione di un data model Per visualizzare la initial screen del data modeler si deve selezionare la voce corrispondente dal menu Development, come da figura 115. Figura 115 Una volta entrati nella Initial screen si deve digitare il nome del modello da creare (ad esempio ZTRAVEL) e premere il pulsante di creazione, dopo avere selezionato l opzione data model (figura 116). In questo modo si apre una finestra di dialogo che ci permette di inserire tutte le caratteristiche del nostro data model (si veda la figura 117). Dopo aver salvato il tutto (indicare come al solito la classe di sviluppo locale $TMP), possiamo passare alla creazione della struttura del data model. Dovremo come prima cosa costruire gli entity type riguardanti gli elementi del dizionario dati presenti nel nostro programma, e in secondo luogo dovremo definire le relazioni intercorrenti tra loro. 157
Figura 116 Figura 117 158
11.2.1 Definizione degli entity type Per inserire il primo entity type all interno del data model si deve aprire il model s hierarchy (scegliere dal menù Modeling object la voce Data Model hierarchy) e da qui selezionare le voci Modeling object Insert subordinate (si veda la figura 118). Nota Bene: nel caso in cui si voglia inserire un nuovo entity type il percorso da seguire è il seguente: Modeling object Insert On same level Figura 118 A questo punto si deve scegliere l opzione entity type dalla finestra di dialogo. In questo modo si apre la finestra delle proprietà degli entity type; assegnamo un nome (ad esempio ZCUSTOMERS) e definiamo le sue principali caratteristiche (figura 119). 159
Figura 119 Per collegare il nostro entity type con il dizionario dati, dopo aver salvato, clicchiamo sul bottone DICT (figura 119) e selezioniamo (figura 120) la tabella CUSTOMERS a cui associare il nuovo elemento. Figura 120 160
Ovviamente è possibile inserire più entity type in uno stesso data model; ad esempio si può raggiungere una struttura simile a quella di figura 121, in cui sono stati inseriti tutti i dati relativi a tabelle riguardanti le prenotazioni di una agenzia viaggi. Osservazione: nel caso in cui si renda necessario visualizzare le proprietà di un entity type, è sufficiente andare sulla sua schermata di definizione e selezionare l opzione ATTRIBUTES (figura 122). Figura 121 161
Figura 122 11.2.2 Definizione dei collegamenti tra entity type Al fine di completare il data model è necessario creare tutte le relazioni tra le tabelle considerate finora. Si deve aprire la finestra di definizione di ogni singolo entity type e seguire il percorso indicato in figura 123. Dato che non esiste ancora nessun collegamento, si deve digitare il bottone di creazione ed indicare il secondo entity type a cui fare riferimento (figura 124). Dopo aver creato questa relazione si apre una videata in cui si dovranno inserire alcune informazioni molto importanti. Si dovrà indicare la categoria dell entity type (si può scegliere tra referenziale, gerarchica, aggregata o relazione esterna) e la cardinalità, ovvero i rapporti tra la tabella sorgente e la tabella dipendente (i rapporti possibili sono 1:CN, 1:1 e 1:C si veda la figura 125 e le pagine successive). 162
Figura 123 Figura 124 163
Figura 125 Le possibili categorie da indicare sono: AGGREGATING: HIERARCHICAL REFERENTIAL: A H R E un tipo di relazione tra campi chiave, in cui il campo chiave della tabella master contiene il campo chiave della tabella detail. E un tipo di relazione tra campi chiave, in cui il campo della tabella detail è considerato un subobject della tabella master. Ad esempio si può considerare la relazione tra planfli-carrid e carriers-id (si considerino le tabelle a dizionario dati), in cui ogni record della tabella PLANFLI dipende dall esistenza di un record di riferimento nella tabella CARRIERS. Sono corrispondenze tra campi che non sono campi chiave nelle tabelle detail. Ad esempio la relazione tra planfli-cityfrom e geocity-city. EXTERNAL: X Per corrispondenze con oggetti esterni al sistema R/3 164
Tra le cardinalità, possiamo scegliere i seguenti dive rsi tipi 1 : 1 quando ad ogni elemento appartenente alla sorgente ne corrisponde uno ed uno solo appartenente alla tabella dipendente. 1 : CN quando ad un elemento appartenente alla sorgente possono corrispondere più elementi appartenenti alla tabella dipendente. Ad esempio nella corrispondenza carriers-id e planfli-carrid, ogni compagnia della tabella CARRIERS può essere associata a più connessioni della tabella PLANFLI. 1 : C quando ad un elemento della tabella sorgente posso associare al massimo un elemento della tabella dipendente. Una volta create tutte le corrispondenze, sarà possibile avviare il programma: dal Data Model Hierarchy si devono prima selezionare tutti gli oggetti a nostra disposizione (con i tasti node e subtree) e quindi premere il pulsante Graphics; il risultato sarà quello di figura 126. Figura 126 165
Osservazioni: 1. si deve notare che dalla pagina Graphics del nostro data model è anche possibile accedere alle proprietà ed alle definizioni dei nostri entity type, selezionando i bottoni della toolbar, oppure facendo doppio click su di essi. 2. le relazioni che abbiamo considerato in questo esempio sono outgoing (ovvero uscenti), è anche possibile creare relazioni di tipo ingoing. 166