Cerca nel blog

mercoledì 27 luglio 2016

SAP HANA: Mini Corso per le problematiche relative alla migrazione a Sap Hana

Mini Corso per le problematiche relative alla migrazione a Sap Hana

PREMESSE:


Nella programmazione Colonnare, è fondamentale specificare le colonne (campi della tabella) da selezionare nella SELECT.
Su SAP HANA tutte le colonne delle tabelle sono INDICIZZATE.

In Eclipse, sono stati sviluppati dei Tools ABAP che contengono dei Packages di SAP detti anche “Perspectives” e che sono organizzati in VIEWS.


SOFTWARE DA INSTALLARE: Eclipse versione MARS 2 e Java versione 1.8

1.   Connessione al DB HANA tramite eclipse

Per connettersi al DB SAP HANA tramite eclipse:
1.     Eseguire Eclipse
2.     Premere il pulsante selezione Perspective in alto a dx
 

3.     Selezionare Sap Hana Modeler.



4.     Nella View System, premere tasto dx del mouse e selezionare Add System 
      Inserire Host name; Instance Number e premere il pulsante NEXT.



 
5.     Inserire utenza e password del DB (E’ DIVERSO DA QUELLO DI R3)e premere il pulsante FINISH.

Dopo essersi connessi al DB SAP HANA, nella view SYSTEM vengono visualizzati i seguenti
FOLDER:

           1.     CATALOG: contiene gli schemi con gli oggetti tecnici del DB (quando viene installato
            SAP HANA, si crea un’utenza e schema di questo tipo: SAP<SID>) 
     2.     CONTENT: oggetti specifici del DB HANA; in particolare questi oggetti sono organizzati
           in Package. Questi oggetti sono detti ARTIFACT. Che sono dei disegni non oggetti fisici. 
     3.     PROVISIONING: permette di importare dati dai sistemi esterni (attività sistemistica) 
     4.     SECURITY: Ruoli e profili del DB HANA. 

2.   TOOL SAP – Plug IN

Tra i tools SAP HANA da installare in Eclipse ci sono:
ADT  (Abap development Tool) che consente di connettersi ad un sistema R3, al posto della SAP GUI. (NOTA: prima di lanciare il tool, è consigliato aprire anche la SAP GUI).
Per creare una connessione al sistema SAP, mediante Eclipse:
1.     Eseguire Eclipse
2.     Premere il pulsante selezione Perspective in alto a dx
3.     Selezionare ABAP.



4.     Nella Project Explorer, premere tasto dx del mouse e selezionare New-> Add Project.


3.   Progetti Migrazione in SAP HANA DATABASE

Identificare 2 tipologie di software:
·       Performance del software
·       Migrazione al DB HANA. Software che può avere problemi dal punto di vista funzionale.

3.1.             Migrazione al DB HANA

Programmi che hanno le seguenti caratteristiche:
·       Software che hanno all’interno SQL NATIVO, cioè EXEC SQL. Questo tipo di errore non va in DUMP, ma la select non restituisce record)
·   Software che usa gli HINT, esempio: %_HINTS MSSQLNT (In questo caso bisogna commentare l’istruzione di HINTS)
·       Su HANA non esistono più tabelle di tipo POOL o CLUSTER (esempio: BSEG), ma sono tutte TRASPARENTI. Il problema è che il risultato della select non è più quello di prima perché le tabelle non sono ordinate. Per risolvere questo problema si possono usare 2 metodi:
o   Se result_set < 10000 record. Usare la ORDER BY nella SELECT
o   Se result_set >= 10000 record. Usare la SORT TABLE prima della read table.
·       Tutti i software che utilizzano la lettura di queste tabelle CLUSTER tipo:
o   DELETE….. WHERE timestamp < ‘01012000’;
·       Tutti i software che hanno il controllo sull’indice secondario

3.1.1.       Identificazione dei software che possono avere problemi nella migrazione

Usare la transazione SCI, con la variante esistente (FUNCTIONAL_DB), e selezionare come Object_SET, tutti i programmi da verificare. L’OBJECT_SET si crea di tipo GLOBALE.





Usare la transazione ATC(Abap test Cockpit), che mette insieme l’Object_SET + Check VARIANT. Questa transazione a differenza della SIC, consente di specificare le EXCEPTION (i falsi errori) Per eliminare questi falsi errori, si dovrebbero inserire le istruzioni di tipo PRAGMA (#EC__XXXXX). Per evitare di modificare il codice sorgente e quindi di inserire le istruzioni di tipo PRAGMA, bisogna specificare le ESENZIONI (EXCEPTION).

ATC(Abap test Cockpit) (NOTA: DEVE ESSERE ESEGUITO IN AMBIENTE DI SVILUPPO)
o   Configurare ATC, qui è possibile abilitare/disabilitare le esenzioni e di specificare il sistema in cui richiedere l’approvazione delle esenzioni, Premere il pulsante SALVATAGGIO.


o   Schedule RUN, premere il pulsante “CREATE”, inserire il nome, inserire il check variant FUNCIOTNAL_DB, e l’OBJECT_SET. SALVARE.
  

Schedule RUN:  Selezionare lo Schedule Creato e premere il pulsante “SCHEDULE”.
 

Settare i seguenti parametri:


Eseguire la schedulazione mediante job, quindi Program-> esegui in background.  

o   Monitor and control Run, per verificare l’output, Pulsante RESULT.


Pulsante il pulsante RESULT, per vedere i messaggi di errore.


Selezionando sull’Object Name, e possibile vedere il consiglio che da la Sap per correggere l’errore:

 

In questo caso, consiglia di sostituire a SELECT * , con la select del campo MATNR.

o   Exemption -> Maintain Approvers, si specifica l’utente che deve approvare le esenzioni.

3.2.             Performance del software

Il problema della performance del software viene gestito nella parte finale di un progetto di migrazione, perché è l’unione del controllo statico del codice + la fotografia sql fatta quando l’utente opera nell’ambiente di produzione.
Per l’individuazione e la soluzione di questa tipologia di problema si utilizzano i tools:
1.     SCI
2.     ATC
3.   Sql Monitor che consente di fare una fotografia delle interrogazioni SQL. Traccia tutte le chiamate al DB (NOTA: Questa attività viene attivata sugli ambienti di produzione per almeno 2 SETTIMANE).
4.     SWLT

Usare la transazione SCI, con la variante esistente (PERFORMANCE_DB), e selezionare come Object_SET, tutti i programmi da verificare. L’OBJECT_SET si crea di tipo GLOBALE.

Usare la transazione ATC(Abap test Cockpit), che mette insieme l’Object_SET + Check VARIANT PERFORMANCE_DB. (NOTA: PER QUESTA TIPOLOGIA, NON E’ POSSIBILE GESTIRE LE ESENZIONI)


Fare gli stessi passi eseguiti in precedenza per l’ATC.
 
SQL Monitor è un tool traccia tutte le chiamate al DB e queste informazioni vengono scaricare su tabelle SAP (i cui nomi iniziano tutti per SQLM*), tramite un job che è schedulato ogni ora (può essere modificato o eseguito immediatamente). Per eseguire l’SQL Monitor eseguire la transazione SQLM.
Per attivare il trace premere sul pulsante “All Servers” per tutti gli application service, oppure “Select Servers” per il singolo application server. In questo modo si avrà uno SNAPSHOT (fotografia) delle chiamate SQL, che deve essere esportata da produzione ed importata in sviluppo

 
Nella Pop-up successiva, inserire per quanto tempo deve essere attivato il trace, quindi si specifica il giorno e l’ora in cui si deve disattivare, oppure il numero di record aggregati.


Oppure si può premere il pulsante DISATTIVA.
Per vedere il risultato della tracciatura delle istruzioni SQL, richiamare la transazione SQLMD.


SWLT  (SQL Perfomance Tuning Worklist) consente di unire il check statico fatto con l’ATC e la tracciatura delle chiamate al DB fatte con SQL Monitor.
Con SWLT,  si importa lo snapshot scaricato da produzione mediante SQLM.
Eseguire la transazione SWLT, selezionare il tab “Static Checks” e selezionare i seguenti parametri
 

Selezionare  il tab “SQL monitor” e selezionare i seguenti parametri

Premere F8.

4.   Regole di programmazione 

4.1.             Con qualsiasi Database

·       Selezionare sempre solo i campi che ci interessano dalla tabella ( NO SELECT *) (NOTA: Non sempre si può sostituire la select single con select campo, dipende dal programma che si sta analizzando)
·       Usare sempre la clausola WHERE e per evitare duplicati usare la DISTINCT.
·       Al posto della SELECT… ENDSELECT usare la SELECT -> INTO TABLE
·       Invece della select SUM usare la SELECT -> into Table e successivamente la COLLECT.

4.2.             Con DataBase HANA

·       Selezionare sempre solo i campi che ci interessano dalla tabella ( NO SELECT *)
·       Al posto delle FOR ALL ENTRIES usare le JOIN tra tabelle (a volte non si può sostituire la FOR ALL ENTRIES, in questo caso usarla con la HINTS)
·       Al posto della SELECT… ENDSELECT usare la SELECT -> INTO TABLE

5.   Paradigma del Code To Data (Ottimizzazione codice)

Esistono 6 tecniche di ottimizzazione:
1.     Sql Nativo Hana
2.     Information View
3.     Stored Procedure
4.     Advanced open sql (QUELLO MAGGIORMENTE USATO)
5.     Core Data Services (CDS) in ABAP
6.     AMDP = Abap managed Database PRocedure

5.1.             Sql Nativo Hana

In Sql Nativo, non bisogna usare EXEC SQL .. END SELECT, perché non c’è visibilità dei dati che ritornano in ABAP.
Per usare l’Sql Nativo si usano determinate classi tra cui:
·       CL_SQL_CONNECTION
·       CL_SQL_STATEMENT
·       CL_SQL_RESULT_SET

Le  operazioni da compiere per un interrogazione sono le seguenti:
1.     Aprire la connessione al DB (Classe: CL_SQL_CONNECTION metodo: get_connection( xxxx ), dove XXXX lo si può omettere se è il DB principale, altrimenti si deve specificare se è il DB secondario )
2.     Preparare lo statement Sql (Classe: CL_SQL_STATEMENT, instanziare la classe )
3.     Lo statement Sql viene passato alla Classe: CL_SQL_STATEMENT metodo: execute_query().
4.     Preparo la variabile che conterrà il Result SET (Classe: CL_SQL_RESULT_SET chiamo prima il  metodo: SET_PARAM_TABLE e poi chiamo il secondo metodo NEXT_PACKAGE che esegue la query).
5.     Chiusura della connessione (Obbligatoria) (Classe: CL_SQL_RESULT_SET metodo: CLOSE).


NOTE:
·       Nel Sql Nativo (query) è necessario specificare il mandante.
·    Nel Sql Nativo conviene creare tutti gli oggetti tecnici in maiuscolo, perché le query sql vengono trasformate tutte in maiuscolo
·       Nel Sql Nativo, per interrogare una tabella bisogna specificare lo SCHEMA.
·       Nel Sql Nativo, quando c’è una JOIN tra tabelle bisogna specificare anche il Mandante oltre alle colonne che mettiamo in join.


5.2.             Information View

Usare le information View che sono dei disegni di interrogazione dei dati (Queste si trovano nel SAP HANA Modeler -> Content)
NOTA: Quando si crea un’information View si deve creare una CR per il trasporto nei vari ambienti.
Ci sono 3 tipologie di Information Model:
·       Attribute View: mette in relazione tabelle di DB. (NOTA: non si usano le VIew di DB)
NAMING CONVENTION: AT_XXXXXXX
·       Analytic View: sono paragonati ai cubi di BW. Mette in relazione la tabelle numeriche con gli Attribute View. (NOTA: non si usano le View di DB)
NAMING CONVENTION: AN_XXXXXXX
·       Calculation View: mette in relazione Attribute View, Analytic View e le tabelle di DB.
NAMING CONVENTION: CA_XXXXXXX
Le Calculation View possono essere create in 2 modi:
o   Grafiche, disegno come voglio effettuare la mia interrogazione
o   Script, devo specificare la mia istruzione SQL script

Le Information View quando vengono attivate, vengono salvate in uno schema di sistema chiamato _SYS_BIC.
Per interrogare le information View, bisogna specificare lo schema di sistema + il path del package + ed infine il nome dell’Information view. Esempio:

_SYS_BIC.”ha400.demo/AT_BOOKING_COUNT”

Se la calculation view, presenta dei parametri di input, per richiamarlo nel SQL NATIVO si usa

(‘PLACEHOLDER’ = (‘$$from_in$$’, ‘20121201’)


5.3.             Stored Procedure su Hana

La Stored procedure restituisce sempre in output una Tabella, ed in input ha solo variabili (NO TABELLE). Si utilizza come sintassi  SQL Script
NAMING CONVENTION: SP_XXXXXXX
Anche le stored procedure si trovano nel folder CONTENT
Per invocare la stored procedure in SQL Console, si usa la seguente sintassi:

call “_SYS_BIC”.”ha400.demo/AT_BOOKING_COUNT” (‘10’,’800’, null, null)

tra parentesi abbiamo passato i primi due parametri che sono di input ed i secondi sono di output e rapresentano in questo esempio 2 result set.

Per invocare la stored procedure in ABAP, avviene mediante i seguenti passaggi:
1.     Inviare al DB l’istruzione della Stored Procedure
call “_SYS_BIC”.”ha400.demo/AT_BOOKING_COUNT” (‘10’,’800’, null, null)
     WITH OVERVIEW
La With overview prepara un Services Layer, in cui sono presenti tutti I Result Set di ritorno specificati nella stored procedure.

2.     Preparare una tabellina interna con 2 campi di tipo STRING, il primo campo contiene il nome del Result SET ed il secondo contiene il Puntatore al Result SET.

3.     Preparo la select al Result Set di ritorno del punto 2.


5.4.             Advanced Open SQL

Le nuove funzionalità prevedono:
·       Le colonne selezionate nella select sono separate dal “,
·       Le variabili sono anticipate da “@
 

5.5.             Core Data Services (CDS) in ABAP

Le CDS sono definite come delle POWER VIEW. Esse sono oggetti tecnici ABAP (R3TR – DDLS) che si devono creare necessariamente traamite Eclipse per la perspective ADT Abap
Le CDS sono anche chiamate ENTITA’, che possono essere interrogate da più parti.

Esempio:
@AbapCatalog.SqlViewName: ‘HANA_CDS_SB1’   <- NOME DELLA VIEW
Define view ha400.ddl.sb1 as                                     <- NOME DELL’ENTITA’
Select * from sbook

A seconda Open SQL che si utilizza( NEL VECCHIO nella select si richiama il nome della View) (Nel NUOVO nella select si chiama il nome dell’ENTITA’).

Per creare una CDS:
·       Andare in Eclipse
·       Selezionare la Perspective ABAP
·       Selezionare il sistema HANA, ad esempio oggetto in locale
·       $TMP -> tasto destro -> NEW -> Other repository object
·       Selezionare la cartella Core_Data_Services
·       Inserire il nome della CDS.

5.6.             AMDP = Abap Managed Database Procedure

Richiama delle Store Procedure attraverso l’ABAP, attraverso le classi.
A partire dalla 7.40 SP 5, vengono richiamate in modo diverso.
L’AMDP consente anche di creare una Stored Procedure, per fare ciò bisogna implementare una classe globale. (Questa classe deve essere creare in ecplise perpective ADT)

  

6.   Proxy

6.1.     Proxy Object

Il Proxy Object è un oggetto tecnico che sta tra ABAP e SAP HANA, che si chiama EXTERNAL VIEWS e che legge un INFORMATION VIEWS

6.2.     Proxy Procedure

Il Proxy Object è un oggetto tecnico che sta tra ABAP e SAP HANA, che richiama delle Stored Procedure.

Nessun commento:

Posta un commento