1 ABAP Overview • Abap Workbench • Architecture système R/3 • Exécution d’un programme (report et programme interactif) • Logique d’exécution d’un écran • Abap dictionnary • Déclarations de données • Expressions Abap • Variables système • Accès à la base de données
Présentation PowerPointLogique d’exécution d’un écran
Abap dictionnary
ABAP Overview
ABAP langage de programmation conçu par SAP pour le développement
d’applications dans SAP
Outils de l’Abap Workbench
Abap Workbench
ABAP signifie Advanced Business Application Programming
Chaque outil peut être appelé individuellement afin de traiter
chaque type d’objet de façon indépendante.
On peut aussi utiliser l’Object Navigator (SE80).
L’écran de l’Object Navigator se compose de deux
parties :
La zone de gauche permet d’afficher la liste des objets sous forme
de hiérarchie.
La partie de droite permet d’afficher ou d’éditer l’objet
sélectionné
ABAP Overview
Abap Workbench
Le système d’information du Repository (SE84) permet de retrouver
des objets du workbench
Cette transaction répertorie tous les objets du Repository en
fonction de leur type. Une fois le type sélectionné par
double-clic, on peut effectuer une recherche en fonction de
certains critères (nom de l’objet, classe de développement…).
ABAP Overview
M (Message)
Poste bureautique
Work Process
ABAP Program
Le système R/3 repose sur une architecture client/serveur à trois
niveaux :
Le serveur de base de données.
Le serveur d’application qui est chargé de fournir les
ressources,
Le serveur de présentation qui est le demandeur de ressources
(c’est le niveau client)
Le SGBDR (Système de Gestion de Base de Données relationnelle) est
stocké sur une seule machine physique. C’est à ce niveau que
s’effectue la gestion du dictionnaire physique de données, à
savoir :
L’accès aux données, la mise à jour physique de celles-ci,
leur validation.
Au niveau applicatif, il existe sept types de tâches différentes.
Ces tâches sont réparties sur un ou plusieurs serveurs et gérées
sous forme d’instances. Les programmes ABAP sont exécutés sur le
serveur d’application
Le serveur de présentation exécute les programmes de l’interface
utilisateur. Pour SAP, la plate-forme est un poste de bureautique.
Il y a techniquement 3 types d’écrans possibles (dynpros, écran de
sélection et liste).
ABAP Overview
Time
Dans un report (type programme exécutable), la seule interaction
avec l’utilisateur concerne le remplissage de l’écran de sélection.
En fin d’exécution, une liste peut être renvoyée au serveur de
présentation.
0 - Lorsque l’utilisateur lance une application, le programme est
chargé au niveau du serveur d’application à partir du Repository.
L’application lancée dans cet exemple est un programme de type
liste avec un écran de sélection, une variable et une
structure.
1 - La première étape du traitement correspond au renvoi de l’écran
de sélection du programme vers le serveur de présentation par
l’ABAP runtime system. Le serveur de présentation contrôle
l’exécution du programme pendant que l’utilisateur renseigne les
critères de sélection. Une fois l’écran de sélection renseigné,
l’utilisateur exécute le programme. Les données saisies en écran de
sélection sont automatiquement transférées au programme qui
s’exécute.
2 - Le bloc de traitement du programme ABAP contient un accès à la
base de données. Il passe au serveur de base de données des
informations telles que le nom de la table à laquelle accéder et
les lignes de la table à lire. La base de données retourne au
programme les enregistrements lus dans la structure ou la table
appropriée.
3 - L’édition d’une liste est prévue dans le bloc de traitement. A
la fin de l’exécution, l’ABAP runtime system envoie au serveur de
présentation l’écran contenant la liste des données à
afficher.
ABAP Overview
Repository
Screen
PBO
PAI
Un programme interactif (type pool de modules) implique un dialogue
avec l’utilisateur.
Au démarrage du programme, l’ensemble des objets déclarés est
chargé sur le serveur d’application à partir du Repository. Par
rapport à l’exemple précédent, on a maintenant en plus un dynpro et
sa logique d’exécution.
Un appel de dynpro est effectué par le programme. Le Process Before
Output est exécuté juste avant l’envoi de l’écran au serveur de
présentation.
Lorsque l’utilisateur exécute une action, le serveur d’application
reprend le contrôle de l’exécution. Les données à l’écran sont
alors automatiquement transférées au programme et le Process After
Input est exécuté
ABAP Overview
Autorisations
Blocages
Titres
Sortie
Process Before Output (PBO)
Cette étape est systématiquement exécutée avant l’envoi d’un écran
au serveur de présentation. Il s’agit d’une liste d’instructions
codées telles que, par exemple, les contrôles d’autorisation, la
gestion des blocages, la gestion des titres.
Saisie des données
Au cours de cette étape, l’utilisateur saisie ses données et les
valide.
Process After Input
Cette étape est systématiquement exécutée lorsque l’utilisateur
valide ses données ou réalise une action quelconque à l’écran. Elle
correspond à l’exécution de routines telles que, par exemple, le
contrôle des données saisies, le passage à un autre écran ou la
sortie (gestion du OK_CODE) ou la modification de l’écran
actuel.
ABAP Overview
ABAP DICTIONNARY
L’ABAP Dictionary (SE11) définit et gère toutes les définitions de
données du système
Tables transparentes
Tables
Lorsqu’une table transparente est activée dans l’ABAP Dictionary
(SE11), son équivalent physique est automatiquement créé dans la
base de données. La description de la table au sein de l’ABAP
Dictionary est automatiquement convertie au niveau du système de
base de données
Vues
Vue de base de données
vue de projection
vue d’aide
Vue de maintenance
Search help (F4)
Permet d’afficher la liste des entrées possibles d’une zone
Objet de blocage
Permet de synchroniser l’accès simultané de plusieurs utilisateurs
à la même donnée. 2 utilisateurs ne peuvent pas modifier
simultanément une même commande.
ABAP Overview
Table
Field
Domain
uses
L’élément de données permet de définir le type d’une zone, ses
propriétés et ses descriptions
De façon plus générale, le domaine constitue la définition
technique (type et longueur) d’une zone. Il détermine des
informations techniques telles que les valeurs possibles de la
zone.
ABAP Overview
ABAP DICTIONNARY – Vue de BD
Une vue de base de données définie dans le dictionnaire de données
est également créée au niveau de la base de données. Les opérations
de jointure étant effectuées dans la base de données, cette vue
permet de limiter le nombre d’accès à la base de données.
ABAP Overview
ABAP DICTIONNARY – Vue de projection
Une vue de projection permet de cacher des zones d’une table. Elle
permet lors de l’accès à la base de données de limiter la lecture
uniquement aux zones souhaitées.
elle n’est pas créée au niveau DB.
ABAP Overview
ABAP DICTIONNARY – Vue d’aide
Il existe 2 méthodes de sélection dans un SH : la table ou la
vue.
On peut utiliser une vue de BD lorsque seule une jointure interne
est nécessaire. Pour une sélection avec une jointure externe, une
vue d’aide est nécessaire.
Une vue d’aide est utile pour définir une méthode de sélection
d’une aide à la recherche lorsque les informations que l’on veut
faire apparaître dans le SH sont issues de plusieurs tables.
ABAP Overview
ABAP DICTIONNARY – Vue de maintenance
La vue de maintenance permet de maintenir les données d’un objet
d’application en une seule fois. Les données sont automatiquement
distribuées dans les tables qui constituent la vue. Les tables qui
constituent la vue de maintenance doivent être liées par des clés
externes.
ABAP Overview
Structure AEBAN
Plant-Specific Material Status
Purchasing document category
MANDT
BANFN
BSART
BSAKZ
MMSTA
ESTKZ
BSTYP
WAERS
Une structure est une série organisée de zones. Elle ne stocke pas
de données, c’est une « coquille » vide. Elle permet de
travailler sur plusieurs zones liées entre elles à la fois.
Une structure est par exemple utilisée pour définir les données à
l’interface écran/programme, ou pour définir un module
fonction.
ABAP Overview
ABAP DICTIONNARY – Aide à la recherche
Fonctionnalité standard de SAP qui permet d’afficher une liste de
valeurs possibles pour une zone d’écran.
L’aide à la recherche élémentaire définit:
- la méthode de recherche des informations
- les informations à afficher pour la sélection des valeurs
- la zone à retourner à l’écran
- le type de dialogue (affichage de la liste complète ou
restriction de la sélection)
L’aide à la recherche collective combine plusieurs aides à la
recherche élémentaires et propose ainsi plusieurs alternatives de
recherche
Il existe 2 méthodes de sélection dans un SH : la table ou la
vue.
On peut utiliser une vue de BD lorsque seule une jointure interne
est nécessaire. Pour une sélection avec une jointure externe, une
vue d’aide est nécessaire.
Une vue est nécessaire pour définir une méthode de sélection d’une
aide à la recherche lorsque les informations que l’on veut faire
apparaître dans le SH sont issues de plusieurs tables.
ABAP Overview
Jointure externe
FROM <tab> LEFT [OUTER] JOIN <dbtab> ON
<cond>
If <dbtab> does not contain any lines that meet the condition
<cond>, the line from <tab> is not included in the
selection.
If <dbtab> does not contain any lines that meet the condition
<cond>, the system includes a single line in the selection
whose columns from <dbtab> are filled with null values
ABAP Overview
Déclaration en référence à un type de données
Déclaration en référence à un élément de données
Un objet de données se définit en faisant référence à un type de
données (type ABAP prédéfini, type local défini par l’utilisateur
ou objet de l’ABAP Dictionary (SE11)).
La référence à un type de données peut se faire de deux
manières :
- DATA v2 TYPE v1 -> v2 fait directement référence au type de
données v1, dans ce cas, v2 hérite directement du type de données
v1
- DATA v2 LIKE v3 -> v2 fait référence à l’objet de données v3,
dans ce cas v2 hérite indirectement du type de v3.
ABAP Overview
- C Character
Déclaration de données
Pour les variables de type P, C ou N, on peut préciser la longueur
de la zone entre parenthèses après le nom. Si aucune longueur n’est
précisée lors de la déclaration, la variable adoptera la longueur
par défaut du type
Pour les données de type P, le mot clé DECIMALS utilisé en
complément permet de déterminer le nombre de chiffres désiré après
la virgule (14 au maximum). En l’absence de cette précision, la
zone ne gérera pas de partie décimale
Si le type n’est pas précisé dans la déclaration de la donnée, la
zone adopte automatiquement le type C
ABAP Overview
STRUCTURE
combinaison de plusieurs champs « liés » à un même objet
de données
Déclaration en référence à une structure du dictionnaire de
données
Déclaration d’une structure spécifique au programme
DATA : ds_kna1 TYPE kna1.
DATA : BEGIN OF ds_test,
Material type
Order unit
Net weight
La structure <name> se déclare localement dans un programme
ABAP. Elle est généralement utilisée pour mémoriser un
enregistrement lu dans la base de données ou encore pour réaliser
des calculs. Sa définition fait référence à l’objet de données
(structure ou table) <structure_type> qui peut être défini au
niveau de l’ABAP Dictionary (SE11) ou localement dans le programme
(voir l’aide en ligne sur l’instruction TYPES).
L’accès à une zone donnée de structure en lecture ou en écriture se
fait avec précisant le nom de la zone :
<structure>-<field_name>.
ABAP Overview
TABLE INTERNE
Sauvegarde dans la mémoire ABAP les données d’une structure. Les
enregistrements sont sauvegardés ligne par ligne, chaque ligne
ayant la même structure .
STANDARD TABLE
SORTED TABLE
HASHED TABLE
Accès via Clé
Déclaration de données
Il existe trois types de table interne qui se distinguent par
leur mode d’accès aux enregistrements :
· Les tables standard
(standard tables)
Ce type de table autorise les deux types d’accès : via l’index
de la table ou par les données (clé).
· les tables triées
(sorted tables)
les enregistrements de cette table sont automatiquement triés en
fonction de la clé précisée lors de sa déclaration. En cas de clé
unique, les doublons ne sont pas autorisés. L’ajout
d’enregistrement dans ce type de table tient compte de la clé
(instruction INSERT). Si la clé existe déjà et est unique,
l’enregistrement n’est pas inséré.
· les tables à adresses
calculées (hashed tables)
Ces tables ne gèrent pas l’index. L’accès aux données se fait
uniquement via la clé précisée lors de la déclaration de la
table.
ABAP Overview
Déclaration en référence à une structure du dictionnaire de
données
Déclaration en référence à une structure déclarée dans le
programme
DATA : BEGIN OF ds_test,
data: begin of t2_test occurs 0.
include structure ds_test.
Déclaration de données
TABLE INTERNE (suite)
· Accès en utilisant
l’index
Ce type d’accès utilise l’index de la table maintenu par le système
pour accéder à un enregistrement.
· Accès en utilisant une
clé
Cet accès revient à chercher dans la table interne un
enregistrement respectant une condition donnée. Contrairement à
l’accès par l’index, l’accès se fait par les données.
Exemple : recherche dans une table interne contenant des
numéros de client (KUNNR) un enregistrement pour lequel KUNNR =
‘850000’.
ABAP Overview
DECIMALS nombre de chiffres après la virgule
CLEAR initialise une variable
IF…ELSEIF…ENDIF teste une expression logique
Instructions
MOVE copie le contenu d’une variable vers une autre variable
MOVE-CORRESPONDING copie le contenu des zones de la structure A
vers les zones de la structure B ayant le même nom
Expressions Abap
CASE…ENDCASE
La distinction se base sur le contenu de la variable. La variable
testée est précisée par l’instruction CASE.
Les différentes branches du traitement sont introduites par
l’instruction WHEN suivie de la valeur à conditionner. ENDCASE
permet de conclure l’instruction. La condition WHEN OTHERS est
optionnelle.
IF…ENDIF
Les instructions IF et ELSEIF doivent être suivies d’une expression
logique. Les expressions logiques autorisées sont décrites dans la
documentation sur le mot clé IF. Les instructions ELSE et ELSEIF
sont optionnelles.
Si l'expression logique est vérifiée, le traitement conditionné par
l’expression est exécuté.
Si l'expression logique n'est pas vérifiée, les alternatives ELSE
ou ELSEIF sont exécutées. S’il n’y a pas d’alternative, le
déroulement du programme se poursuit après la fin de la condition
ENDIF.
ABAP Overview
READ lecture d’un enregistrement (ligne) de la table
APPEND ajoute un enregistrement en fin de table
INSERT insertion d’un enregistrement dans une table
« sorted » (idem append)
MODIFY remplace le contenu d’une ligne
DELETE suppression d’un enregistrement
LOOP…ENDLOOP permet de parcourir tous les enregistrements de la
table
Expressions Abap
ABAP Overview
Variables actives automatiquement dans tous les programmes
Abap
Elle permettent d’identifier le résultat de certaines opérations du
programme
SUBRC
BATCH
MANDT
DATUM
DBCNT
INDEX
TABIX
DYNNR
TCODE
Current client
Current loop pass
Current line index
Current transaction code
Single line
Multiple lines
Particular column
SELECT <result>
FROM <table>
INTO <destination>
WHERE <condition>
Which columns?
Which table(s)?
Which lines?
L’instruction Open SQL SELECT permet d’accéder aux contenus des
tables de la base de données.
Cette instruction se compose d’une série de clauses, chacune
d’entre-elles remplissant une fonction particulière :
la clause SELECT précise :
- si le résultat de la sélection est un enregistrement unique (dans
ce cas tous les champs de la clé doivent être précisés dans la
clause WHERE) ou un ensemble d’enregistrements
- la liste des zones dont le contenu est à récupérer
la clause INTO précise l’objet de données du programme dans lequel
le résultat de la sélection sera enregistré
la clause FROM précise la table dans laquelle la sélection est
réalisée
la clause WHERE précise les conditions de sélection. Elle détermine
le nombre d’enregistrements à sélectionner.
ABAP Overview
(SELECT … ENDSELECT: lecture multiple séquentielle)
SELECT … INTO TABLE: sélection par bloc
SELECT … INTO
Accès à la base de données: lecture
Le code retour (sy-subrc) prend la valeur 0 si au moins un
enregistrement est sélectionné
L’instruction SELECT SINGLE * permet de lire un enregistrement
unique. Pour s’assurer de l’unicité de l’enregistrement, la clé
complète doit être précisée dans la clause WHERE. Dès qu’un
enregistrement est trouvé, la recherche s’arrête, ce qui rend un
SELECT SINGLE beaucoup plus performant .
L’instruction SELECT…ENDSELECT permet la lecture multiple d’
enregistrements dans la base de données. Elle constitue une boucle
et fonctionne de manière de manière séquentielle. Après l’exécution
du ENDSELECT, la variable système SY-DBCNT contient le nombre total
d’enregistrements sélectionnés.
Lorsque la clause INTO TABLE <itab> est utilisée, l’ABAP
Runtime System copie le contenu de la database directement dans la
table interne itab. Dans ce cas, l’instruction ENDSELECT ne doit
pas être utilisée car le processus n’est plus itératif.
La clause INTO permet alors de préciser les objets de données dans
lesquels les données lues seront mémorisées
utilisation d’une structure
Il faut définir une structure dans le programme dont les zones
respectent la même séquence que celle des champs précisés par la
clause SELECT
Utilisation de variables
Une liste de variables doit être précisée par la clause INTO.
L’utilisation de la clause INTO CORRESPONDING FIELDS permet de
placer les données sélectionnées dans les zones de même nom de la
structure.
ABAP Overview
L’instruction INSERT permet d’ajouter un/des nouveau(x)
enregistrement(s) dans une table de base de données
INSERT INTO dbtab VALUES wa.
Insertion d’une ligne dans la table de BD
INSERT dbtab FROM TABLE itab.
Insertion en masse (et en une seule opération) des lignes de la
table interne itab vers la table de BD
Accès à la base de données: écriture
INSERT INTO dbtab VALUES wa
SY-SUBRC = 0: Line inserted.
SY-SUBRC = 4: Line could not be inserted, since the table already
contains a line with the same key
INSERT dbtab FROM TABLE itab
SY-SUBRC = 0:
All lines inserted successfully. Any other situation causes a
runtime error.
ABAP Overview
Accès à la base de données: écriture
UPDATE mise à jour de valeurs dans une table de BD
MODIFY mise à jour / insertion de valeurs dans une table de
BD
DELETE suppression de lignes dans une table de BD