Definizioni:
Cosa sono SAP e ABAP? SAP è un motore di database? ABAP è un linguaggio di
programmazione? A cosa serve principalmente?
Risposta:
Ci sono alcuni moduli funzionali che quasi tutte le realtà commerciali usano
indipendentemente dal loro settore specifico:
HR: Risorse umane | PM: Project Management | FI: finanziario | CO: controllori
MM: gestione dei material | SD: vendite e distribuzione | PP: pianificazione della
produzione |
MDM: Master Data Management (che incapsula i dati per cliente/fornitore/ materiale
ecc.)
Cosa è l’HANA?
L’istruzione per creare una *tabella interna da una tabella di database è la seguente:
*MARA è una tabella trasparente il che significa che funziona allo stesso tempo del tipo
di struttura MARA. Questo è il modo in cui funziona SAP.
La tabella DDIC SAP ( tabella trasparente, tabella raggruppata, tabella cluster) funziona
come una struttura . La *tabella interna è un elenco di valori di struttura (= tabella DDIC.)
Nell’esempio che segue di tabella SAP DDIC MARA (Dati materiali generali), possiamo
definirlo come una tabella interna simile:
data: it_mara type STANDARD table of mara. (che crea una tabella interna STANDARD)
data: it_mara type SORTED table of mara. (che crea una tabella interna SORTED)
Qual è il significato del termine "Object Class" in ABAP? Cosa significa “Oggetto di
autorizzazione?” Poiché gli oggetti vengono creati in fase di runtime, come possiamo
creare un oggetto in fase di progettazione?
In SAP, si sente molto spesso il termine "class" e "object". Non significano nulla come i
concetti di OO. Una classe di autorizzazione è solo una descrizione generale di "cosa è
permesso fare" mentre un oggetto di autorizzazione è una descrizione più
particolareggiata di ciò. Gli oggetti di autorizzazione possono essere utilizzati in modo
programmatico per verificare se un utente ha il diritto di "x" e come sviluppatore, è
possibile dimenticare di controllarli, il che può causare problemi di sicurezza.
L'uso delle tabelle interne aumenta le prestazioni del programma. Le tabelle interne
dovrebbero essere utilizzate per l'elaborazione dei dati, come liste o array in altre lingue
(c #, java ecc.). Dal punto di vista delle prestazioni e del carico di sistema, è preferibile
caricare prima tutti i dati necessari in una tabella interna, quindi elaborare quella tabella
interna anziché caricare singoli record dal database. Per quanto riguarda l'istruzione
select-endselect, l'istruzione in realtà non crea singole query di database per ogni riga.
L'interfaccia di database del server delle applicazioni ottimizza la query, trasferendo le
righe in blocco sul server delle applicazioni. Da lì i record vengono trasferiti al report
abap uno alla volta (perché nel report c'è solo l'area di lavoro per memorizzare una
singola riga), che ha un impatto significativo sulle prestazioni, in particolare per le query
con set di risultati di grandi dimensioni. Una selezione in una tabella interna può
trasportare tutte le righe direttamente nel report abap.
In questo caso “yyy" è una struttura di tipo PPP e può essere aggiunta a xxx poiché
sono dello stesso tipo:
DATA: xxx TYPE STANDARD TABLE OF PPP, “produces table with lines of type ppp"
——————————————————————————————————————
——————————————————————————————————————
E se voglio memorizzare per attributo specifico di tabella, posso usare il tipo di struttura:
——————————————————————————————————————
Una tabella è più o meno come un elenco di elementi. In questo esempio, una struttura
rappresenta uno studente. Una tabella potrebbe essere utilizzata per memorizzare più
studenti. La creazione di un TYPE è il metodo più recente e consigliato da utilizzare.
——————————————————————————————————————
Quando crei un DATA, diciamo per una tabella interna, puoi avere la tabella interna con
la riga di intestazione: (vecchio metodo)
Quando si usa TYPE per dichiarare una tabella interna, è possibile utilizzare
contemporaneamente la sua intestazione e il suo contenuto:
Ad esempio: puoi usare questo TYPE per creare tutte le tabelle interne che vuoi come:
Questo selezionerà tutto da quella tabella in una volta nella tabella interna. Quindi quello
che potresti fare è dichiarare una tabella interna con tutti i campi attualmente nella tua
dichiarazione “INTO” e quindi specificare “INTO TABLE” per la tua tabella interna.
Esempio:
Dovresti espandere la tua tabella interna con la colonna "somma". vale a dire:
Risoluzione:
Passa alla tabella interna ed elimina una riga nella tabella interna usando un'istruzione
if: Avendo un internal table it_mseg. In questa tabella, c'è un campo chiamato amnt.
Voglio controllare per ogni riga in it_mseg, se il campo amnt è maggiore 10. Se lo è,
voglio eliminarlo dalla tabella interna.
Comprendere il LOOP:
In questo esempio, l'itab della tabella interna ordinata viene riempita con i dati dalla
tabella del database SBOOK utilizzando l'istruzione SELECT. La sequenza delle
colonne nella tabella interna definisce la gerarchia del livello di controllo. Poiché la
chiave della tabella è l'intera riga, la sequenza di ordinamento e la gerarchia del livello di
controllo sono uguali. La sequenza dei blocchi AT-ENDAT all'interno delle istruzioni
LOOP-ENDLOOP è importante.
Il contenuto delle linee “table lines” deve essere convertibile in tipo di dati della work
area di lavoro. In ogni passaggio del ciclo, una table line è copiata nell'area di lavoro.La
fine del LOOP non influisce sull'area di lavoro, ovvero il contenuto di wa è lo stesso
dopo l'istruzione ENDLOOP così come lo era nel passaggio del ciclo finale. Se nessuna
voce della tabella viene elaborata nel ciclo, poiché la tabella è in entrata, o nessuna riga
soddisfa la condizione cond, l'area di lavoro non viene modificata.
Esempio (1).
Le operazioni della internal table (it) sono le più importanti per uno sviluppatore ABAP, di
seguito alcune delle operazioni più importanti.
APPEND | INSERT | SORT | DESCRIBE TABLE | READ TABLE WITH KEY | READ
TABLE WITH INDEX | LOOP/ENDLOOP | MODIFY | DELETE | DELETE ADJACENT
DUPLICATES | CLEAR, REFRESH, FREE | APPEND LINES OF | INSERT LINES OF |
MOVE | COLLECT
1) APPEND in SAP/ABAP4:
2) INSERT in SAP/ABAP4:
3) SORT in SAP/ABAP4:
L’istruzione SORT viene utilizzata per ordinare i dati di una tabella interna in ordine
crescente o decrescente, per impostazione predefinita ordinerà i dati in ordine
crescente. Inoltre, possiamo ordinare i dati in base ai campi specificati.
4) DESCRIBE TABLE in SAP/ABAP4:
L’ istruzione DESCRIBE TABLE viene utilizzata per contare il numero di record in una
tabella interna.
L’istruzione READ TABLE WITH KEY viene utilizzata per leggere un singolo record da
una tabella interna in un'area di lavoro specificata dal nome del campo e dal valore del
campo. BINARY SEARCH è un meccanismo di ricerca che viene utilizzato per leggere
un record dalla tabella interna all'area di lavoro molto velocemente, la funzionalità della
ricerca binaria divide in parti e ricerche, per i dettagli completi meccanismo di ricerca
binaria in SAP ABAP. La tabella interna deve essere ordinata in ordine crescente prima
di usare la ricerca binaria.
L’istruzione READ TABLE WITH INDEX viene utilizzata per leggere un singolo record da
una tabella interna nell'area di lavoro specificata dall’indice.
8) MODIFY
L’istruzione MODIFY viene utilizzata per modificare uno o più record di tabella interni in
base alle condizioni. TRANSPORTING è una parola chiave che viene utilizzata per
specificare un elenco di campi da modificare anziché tutti i campi.
SY-TABIX è una parola chiave che memorizza il numero indice del record attualmente
elaborato.
9) DELETE in SAP/ABAP4
L’istruzione DELETE viene utilizzata per eliminare singoli o più record da una tabella
interna dall'area di lavoro in base ad alcune condizioni.
L’istruzione CLEAR viene utilizzato per cancellare un valore in un'area di lavoro o in una
variabile. REFRESH è usata per cancellare tutti i valori in una tabella interna. FREE è
usato per cancellare (gratuitamente) la memoria di una tabella interna o area di lavoro.
Sappiamo tutti che ogni volta che dichiariamo una tabella interna o area di lavoro, verrà
allocata memoria 8kb.