Top Banner
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
28

Abap overview part 1

Jul 25, 2016

Download

Documents

Bilal Bakkali

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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