Sei sulla pagina 1di 40

Abap - Workbench

Terenghi Fabio | CONSULTANT | EBA-SAP Services


www.alteanet.it | altea@alteanet.it | fterenghi@alteanet.it
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 2
Introduzione

• “Data Type” in ABAP Dictionary è la vista che l’utente ha sui dati, che è
il formato dati nell’interfaccia. Il formato dei dati dipende dal sistema
database usato.
• Quando una tabella è definita in ABAP Dictionary i “data types” definiti
nello stesso sono copiati nei “data types” del sistema database in
utilizzo.
• Se un oggetto ABAP Dictionary è usato in un programma ABAP, i “Data
Dictionary Types” dell’oggetto sono convertiti nel corrispondente ABAP
Data Types.

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 3
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 4
Tipi di dati

• Tipi esistenti in SAP:

• ACCP: periodo di registrazione, 6 • NUMC: numerico, lunghezza max


caratteri (YYYYMM). 255.
• CHAR: stringa caratteri. Oltre 255 • PREC: precisione in campi QUAN.
usare LCHR. • STRING: stringa carattere di
• CLNT: Client, 3 caratteri. lunghezza variabile.
• CUKY: Valuta, 5 caratteri. • Quan: Quantità, corrisponde a
• CURR: importo in valuta, DEC, max caratteri 31.
corrisponde a DEC, max caratteri • TIMS: orario, lunghezza 6.
31. • UNIT: unità di misura.
• DATS: data, lunghezza 8. • LANG: chiave lingua, 1 carattere e
• DEC: importi con decimali 2 in visualizzazione.
• FLTP: Floating point number • LCHR: stringa carattere > 255.
• INT1: intero 1 byte 0-255.
• INT2: intero 2 byte –32767
+32767.
• INT4: intero 4 byte.

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 5
Tipi di dati

• Il processore ABAP utilizza ABAP data types nelle aree di lavoro per i
dati.
• Data types ABAP:
• C: carattere • Se un data element o un campo di un oggetto
• D: data, formato YYYYMMDD ABAP Dictionary (struttura, tipo tabella,
• F: floating point tabella, view) è usato in un programma ABAP,
il data type Dictionary è convertito nel data
• I: intero type ABAP
• N: carattere stringa numerico
• P: valore o contatore (packed)
• S: time stamp
YYYYMMDDHHMMSS
• T: ora HHMMSS
• V: stringa di lunghezza variabile, i
primi due byte danno la lunghezza
• X: esadecimale
• STRING: stringa

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 6
Tipi di dati

• Definizione Tipi di dati nei programmi ABAP:

• TY_TEST assumerà il formato data (YYYYMMDD)


• TY_SADR sarà un tipo tabella con tutti i campi previsti all’interno
della stessa

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 7
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 8
Variabili

• Le variabili vengono dichiarate nel programma; sono attivate e gestiti


solo al lancio del programma; sono di due tipi:
– Globali: quindi utilizzabili e “visibili” da tutto il codice, sono
definite nella testata del report.
– Locali: solo utilizzabili all’interno delle subroutines nelle quali sono
dichiarate.
Variabile stringa numerica
• Esempio nel codice: di 10 caratteri

Variabile integer

Variabile che assume il


formato del campo della
tabella KNA1 (LIKE)

Variabile di tipo CHAR di


1 carattere

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 9
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 10
Costanti

• Le costanti vengono dichiarate nel programma e ad esse viene


associato un valore che non può mai essere modificato durante
l’esecuzione del report.
• Esempio nel codice:
Costante di tipo stringa
numerica

Costante di tipo
CHAR di valore
‘X’

Costante di tipo CHAR

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 11
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 12
Istruzioni base

• Istruzione IF
- L’istruzione IF è cosi strutturata:

IF < espressione logica >.


istruzioni
ENDIF.

se l’espressione logica è soddisfatta viene eseguita la sequenza di


istruzioni seguenti, al contrario se una espressione logica non viene
soddisfatta vengono eseguite le istruzioni sotto la endif.

- L’istruzione if può contenere anche i parametri ELSE e ELSEIF.

IF < espressione logica >.


istruzioni
ELSE.
istruzioni
ENDIF.
Istruzioni base

• Istruzione Case
- L’istruzione Case è cosi strutturata:

CASE < campo >.


WHEN <valore1>.
istruzioni
WHEN <valore2>.
istruzioni
WHEN OTHERS.
istruzioni
ENDCASE.

Con l’utilizzo della case soltanto una delle sequenze di istruzioni verrà
eseguita. L’istruzione when others è opzionale, mentre solo un valore
può essere testato nella when; questo può essere sia un numero che
il nome di una variabile.
Istruzioni base

• Istruzione DO
- L’istruzione DO è cosi strutturata:

DO <n> TIMES.
istruzioni
ENDDO.

L'istruzione DO specifica quante volte occorre iterare una serie di


istruzioni. Il numero delle iterazioni <n> può anche essere specificato
da programma sia in una costante che una variabile.
Istruzioni base

• Istruzione WHILE
- L’istruzione WHILE è cosi strutturata:

WHILE <espressione logica > .


istruzioni
ENDWHILE.

Con l'istruzione while, le istruzioni al suo interno, vengono eseguiti


fino a quando è verificata la condizione dell'espressione logica.
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 17
Tabelle interne

• Le tabelle interne sono strutture dati che esistono solo nel programma
in cui sono dichiarate; possono contenere righe aventi gli stessi valori
senza problemi di chiave ed avere un header line.
• L’header line è simile ad una struttura e viene utilizzata come work
area della tabella interna. I data types delle righe tabella possono
essere semplici o strutturati.
• Si possono definire anche tabelle interne strutturate, types di tabelle
interne.
• Le tabelle interne vengono valorizzate con i dati provenienti dalla
lettura database o da calcoli eseguiti dal programma.
• L’assegnazione avviene tramite l’istruzione “MOVE” con tutte le sue
varianti (es. “MOVE-CORRESPONDING”).

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 18
Tabelle interne

• Definizione nel report delle tabelle interne:


Tabella interna con header line
contiene la stessa struttura della
tabella database KNA1

Tabella interna con header line


contenente campi specifici, definiti
dall’utente

Struttura interna, non è possibile


memorizzare dati, ma solo
utilizzarla come work area

Tabella interna senza header line

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 19
Tabelle interne

• Comandi principali per caricamento tabelle interne:


– Append: per ogni riga letta (es. database) permette di “appendere” una
nuova riga alla tabella interna.
– Collect: come il precedente, solo che a parità di valori CHAR i valori
numerici vengono sommati (riduzione righe).
– Move: sposta il contenuto di un campo (o variabile) all’interno di un
campo della tabella interna.
– Move-corresponding: muove i campi selezionati esattamente nei campi
corrispondenti della tabella interna.
– Insert: inserisce righe nella tabella interna.
– Modify: modifica una riga specifica di una tabella interna.
– Delete: cancella una riga specifica di una tabella interna.
• Comandi principali per lettura tabelle interne:
– Read: legge la riga corrispondente all’indice indicato; la riga viene
memorizzata nell’header line della stessa.
– Loop-Endloop: legge record per record la tabella.
Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 20
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 21
Ranges

• I ranges sono tipi tabella che definiscono la struttura di una tabella


interna per ottenere una selezione multipla valori (tabella di
selezione).
• Struttura della tabella interna di definizione range (componenti):
– SIGN: è di lunghezza 1 di tipo CHAR (valore “I” per indicare inclusione, “E”
per indicare esclusione).
– OPTION: contiene l’operatore di selezione, è di lunghezza 2 di tipo CHAR
(valori “EQ/NE/GT/LE/LT/CP/NP/BT/NB”).
– LOW: rappresenta il valore inferiore ed assume la stessa lunghezza e tipo
del campo database a cui fa riferimento.
– HIGH: rappresenta il valore superiore ed assume la stessa lunghezza e tipo
del campo database a cui fa riferimento.
• Si possono definire come tabelle interne o direttamente con il
comando “RANGES”.

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 22
Ranges

• Le tabelle interne create con i ranges hanno la stessa struttura delle


tabelle di selezione, ma non la stessa funzionalità.
• Definizione nei programmi:

I campi LOW e HIGH assumono le


caratteristiche del campo KNA1-KUNNR

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 23
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 24
Accesso database

• In SAP R/3 i dati sono memorizzati in tabelle database relazionali. Una


tabella è una matrice a due dimensioni, con righe e colonne. La minor
combinazione di campi che identificano unicamente una riga della
tabella è chiamata “chiave”. Ciascuna tabella ha almeno una chiave ed
almeno una di esse è definita come chiave primaria.
• L’accesso al database avviene tramite SQL (Structurated Query
Language) e si divide in tre aree:
– Data Manipulation Language (DML): comandi per leggere e
modificare i dati nelle tabelle database.
– Data Definition Language (DDL): comandi per creare e gestire le
tabelle database
– Data Control Language (DCL): comandi per autorizzazione e
controllo consistenza

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 25
Accesso database

• L’accesso a database da programma avviene in due modi:


– Open SQL: è integrato in ABAP ed utilizza i comandi per leggere (SELECT) e
per modificare (INSERT,UPDATE,DELETE) i dati in tabella.
– Native SQL: sono comandi non controllati e non convertiti, inviati
direttamente al database (usati per “COMMIT” “ROLLBACK”).
• Schema generale database:

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 26
Accesso database

• Comandi ABAP principali per Open SQL:

Comando Funzione

SELECT Lettura dati da tabella database

INSERT Inserimento righe in tabella database

UPDATE Modifica contenuto righe tabella database

MODIFY Inserimento righe tabella database o modifica di righe già esistenti

DELETE Cancellazione righe tabella database

OPEN CURSOR, Lettura righe tabella database usando i cursori


FETCH,
CLOSE CURSOR

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 27
Accesso database

• Ogni comando Open SQL valorizza due variabili di sistema con return
code:
– SY-SUBRC: ad ogni comando questa variabile contiene il valore 0 se
l’esecuzione ha avuto successo, un valore diverso da 0 se si sono verificati
errori;
– SY-DBNCT: ad ogni comando questa variabile contiene il numero di linee
database processate.
• La struttura di sistema “SYST” contiene una serie di variabili valorizzate
durante l’esecuzione del programma; nell’utilizzo viene abbreviata con
“SY”. Per esempio contiene la data, l’ora di elaborazione, i dati tecnici
di sistema, il nome report, la riga corrispondente sullo schermo ecc.

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 28
Accesso database: lettura dati

• Il comando “SELECT” si divide in una serie di clausole e ciascuna di


esse ha un ruolo differente per selezionare, ordinare, raggruppare i
dati.
• Schema generico:

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 29
Accesso database: lettura dati

• Definizioni clausole per lettura dati:


Clausola Descrizione

SELECT <risultato> The SELECT clause defines the structure of the data you want to read, that is, whether one
line or several, which columns you want to read, and whether identical entries are
acceptable or not.

INTO <target> The INTO clause determines the target area <target> into which the selected data is to be
read.

FROM <source> The FROM clause specifies the database table or view <source> from which the data is to
be selected. It can also be placed before the INTO clause.

WHERE <cond> The WHERE clause specifies which lines are to be read by specifying conditions for the
selection.

GROUP BY <campo> The GROUP-BY clause produces a single line of results from groups of several lines. A
group is a set of lines with identical values for each column listed in <fields>.

HAVING <cond> The HAVING clause sets logical conditions for the lines combined using GROUP BY.

ORDER BY <cond> The ORDER-BY clause defines a sequence <fields> for the lines resulting from the
selection.

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 30
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 31
Generalità su Workbench

• Struttura di un programma applicativo:


• Flow logic: l’interazione utente/programma viene
realizzata tramite avviene tramite gli screens.
• Processing logic: i componenti dei programmi
applicativi responsabili per l’elaborazione dati sono i
programmi ABAP (Advanced Business Application
Programming). I programmi ABAP sono eseguiti nel
processore ABAP di un “work process”.

• Gli screens possono essere generati in due modi:


- Tramite l’utilizzo di un tool (Screen Painter) che permette la loro creazione
e la gestione del flusso logico.
- Generando dei “Selection Screen” in fase di creazione di un report; il
sistema automaticamente genera la schermata di selezione senza la
necessità di creare il flusso logico e la sua gestione (programmi ABAP).
Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 32
Generalità su Workbench

• “ABAP processing logic” è responsabile dell’elaborazione dati nei


programmi applicativi R/3. ABAP è stato disegnato appositamente per
per applicazione “dialog-oriented” database.
• Un programma ABAP è diviso in sezioni che sono assegnate ad ogni
“dialog step”. I programmi ABAP hanno quindi una struttura modulare
ed ogni modulo è chiamato “processing block”. Struttura programma
ABAP:

• Ciascun programma si divide in due parti:


- Dichiarazione dati, classi, selection screens: in cui vengono indicate le
tabelle database, le variabili, i parametri di selezione ecc.
- Contenitore dei “processing blocks”: in cui tutti i comandi ABAP,
sobroutines, funzioni sono inseriti.
Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 33
Generalità su Workbench

• Schema generale esecuzione programmi:

PAI = Process After Input

PBO = Process Before


Output

• In SAP R/3 esistono diversi tipi di programmi; il tipo determina gli


attributi tecnici di base e devono essere impostati durante la
creazione.
Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 34
Generalità su Workbench

• Tipi programma ABAP:


– Tipo 1: sono i programmi eseguibili; la loro caratteristica è che non devono
essere controllati tramite la gestione degli screens. Generalmente sono
chiamati report e gestiti tramite il tool SAP “Editor ABAP/4”.
– Tipo M: sono chiamati “Module Pool”, permetteno di gestire transazioni
complesse, interagiscono con l’utente e devono essere controllati
utilizzando la gestione degli screens. Ogni screen deve essere creato e
gestito e per lanciare l’esecuzione è necessario associarli ad una
transazione che è collegata al programma ed a uno dei suoi screens.
– Tipo F: sono le funzioni; non sono eseguibili singolarmente e vengono
richiamate all’interno dei programmi.
– Tipo K: sono le definizione di classi, non eseguibili.
– Tipo J: sono definizione interfacce per la programmazione ad oggetti.
– Tipo S: sono le “subroutine pools” e non possono essere eseguite.
– Tipo I: sono i programmi “Include”, non possono essere eseguiti e
generalmente contengono definizioni di dati che sono utilizzati da più
programmi superiori.
Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 35
Generalità su Workbench

• Il nome di tutti gli oggetti creati “custom” tramite ABAP Object


Navigator o ABAP Editor o ABAP Dictionary deve iniziare con “Z” o con
“Y” (meno utilizzato). Inoltre devono essere sempre associati ad una
classe di sviluppo per poter essere trasportati in altri ambienti.
• Ad ogni programma eseguibile (report o module pool) è possibile
associare una transazione; tipo transazione:
– Dialog: in cui il flusso del programma è determinato da una sequenza di
screens;
– Report: viene eseguito direttamente il report (tipo 1); è anche possibile
specificare la variante di lancio da selezionare;
– Variant: si crea da customizing e permette di preselezionare i valori dei
campi;
– Parameter: permette di assegnare i valori ai campi presenti nella
maschera di selezione.
• La gestione delle transazioni avviene tramite il tool “Transaction
Maintenance” – SE93.

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 36
Generalità su Workbench

• I programmi di tipo 1, M ed F possono contenere i seguenti tipi di


screen:
– Screens: definiti utilizzando il tool “Screen Painter”, possono essere
combinati nelle sequenze screen, sono chiamati attraverso il comando
ABAP “CALL SCREEN” o tramite una transazione, sono elaborati attraverso
i “dialog modules” del programma.
– Selection Screen: sono definiti all’interno di un programma ABAP (report),
chiamati all’esecuzione dello stesso o tramite il comando “CALL
SELECTION-SCREEN”, sono elaborati negli eventi del report.
– Liste: sono definite all’interno di un programma ABAP, chiamate
all’esecuzione dello stesso, vengono create tramite il comando “WRITE”.
• Procedure:
– Subroutines: definite dai comandi “FORM…ENDFORM” e richiamate da
“PERFORM” nel programma ABAP;
– Function modules: definite da FUNCTION…ENDFUNCTION e richiamate da
“CALL FUNCTION” nel programma ABAP;
– Methods: definiti da METHOD…ENDMETHOD sono utilizzati nella
programmazione ad oggetti
Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 37
Generalità su Workbench

• Schema generale:

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 38
Agenda

• Introduzione
• Tipi di dati
• Variabili
• Costanti
• Istruzioni Base
• Tabelle interne
• Ranges
• Accesso database
• Generalità su Workbench
• Esempi applicativi

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 39
Esempi applicativi – Domande & risposte

Questo documento non deve essere riprodotto, né reso disponibile a terzi o alterato in ogni modo
This document must not be reproduced, made available to third persons, or misused in any other way PAG 40

Potrebbero piacerti anche