Académique Documents
Professionnel Documents
Culture Documents
Cours ABAP - EPFL 09-2003
Cours ABAP - EPFL 09-2003
ABAP IV : reports
Reporting ABAP IV
Objectifs
Reporting ABAP IV
Généralités ABAP IV
Généralités ABAP IV
Syntaxe
Le langage de programmation ABAP IV
est constitué des éléments de syntaxe
suivants
Phrases
Mot-clés
Commentaires
Syntaxe : Phrases
Chaque phrase commence par un mot-clé et se
termine par une ponctuation.
Les différents mots de la phrase doivent être
séparés par un espace.
REPORT ZZZFOR01.
DATA: VAR01, VAR02.
WRITE ‘Exemple’.
Syntaxe : Mot-clés
Un mot-clé détermine la signification de la phrase
entière.
Il existe 4 types de mot-clés :
REPORT ZZZFOR01.
* Commentaire général
WRITE 'Premier programme '. " commentaire de ligne
Généralités ABAP IV
Gestion événementielle
L’exécution d’un programme ABAP IV peut être
contrôlée par des événements temporels.
Ces événements sont déclenchés soit par d’autres
programmes, soit par l’intervention de
l’utilisateur, soit par le système SAP.
La gestion de ces événements se fait grâce aux mot-
clés événementiels, auxquels on peut associer un
bloc de traitement.
Attention: un programme ABAP IV ne s’exécute
pas nécessairement dans l’ordre où il est écrit
Généralités ABAP IV
Gestion événementielle
Programme ABAP IV
Mot-clé
Mot-cléévénementiel
événementiel Contrôle externe
Bloc
Blocde
detraitement
traitement
Contrôle
Contrôleinterne
interne
Mot-clé
Mot-cléévénementiel
événementiel Contrôle externe
Bloc
Blocde
detraitement
traitement
Contrôle
Contrôleinterne
interne
Généralités ABAP IV : AIDE
Une aide sur le langage ABAP est disponible à tout
moment :
– dans l ’éditeur par la commande Help <mot-clé>
– dans le programme : se positionner sur un mot-clé et
faire F1
– dans l’aide on-line
– dans la documentation des mots-clés
Reporting ABAP IV
Déclarations de données
Déclaration de données
Données à déclarer dans le programme
– DATA : déclaration des données internes au
programme. C ’est l ’ensemble de toutes les
variables, structures de travail … valable pour un
programme Abap.
Structure:
DATA: BEGIN OF CLIENT,
NOM(20) TYPE C,
RUE(20) TYPE C,
NUMERO TYPE P,
CP(5) TYPE N,
VILLE(20) TYPE C,
END OF CLIENT.
Reporting ABAP IV
Instructions de base
Instructions de base ABAP IV
Edition de données
Affectation de zones
Opérations sur des chaînes de caractères
Opérations arithmétiques
Traitements conditionnels
Traitements de boucles
Instructions de Base
Edition de données
WRITE <nom_zone>.
Affiche le contenu du champ <nom_zone> à
l’écran. Le format d’édition dépend du type du
champ.
type lg édition Justification
C lg champ gauche
D 8 gauche
I 11 droit
N lg champ gauche
P 2 * lg champ(+1) droit
Instructions de Base
Edition des données
WRITE AT /<pos>(<lg>) <nom_zone>.
édite le champ <nom_zone> sur une nouvelle ligne (/)
en position <pos> sur une longueur <lg>.
Si les spécification de position et de longueur ne sont
pas des variables, on peut omettre le mot-clé AT.
MOVE-CORRESPONDING : exemple
DATA: BEGIN OF STRUC1, DATA: BEGIN OF STRUC2,
ZONEA, ZONEB(3) TYPE N,
ZONEB(3) TYPE N, ZONEC(8) TYPE C,
ZONEC(8) TYPE C, ZONED(5) TYPE P,
END OF STRUC1. END OF STRUC2.
Addition :
ADD <f1> to <f2>.
Équivalent à <f2> = <f2> + <f1>.
<f3> = <f2> + <f1>.
Multiplication :
MULTIPLY <f1> BY <f2>.
Équivalent à <f1> = <f1> * <f2>.
Division:
DIVIDE <f1> BY <f2>.
Équivalent à <f1> = <f1> / <f2>.
Reporting ABAP IV
Résultat de la jointure
KUNNR NAM E1 VBELN
1233 Client 1 C00000001
1233 Client 1 C00000004
1455 Client 2 C00000002
1455 Client 2 C00000003
Résultat de la jointure
1233 Client 1 C00000001
1233 Client 1 C00000004
1455 Client 2 C00000002
1455 Client 2 C00000003
2300 Client 3 <i nit ial>
Chapitre 5
Modularité
Reporting ABAP IV
Modularité
Eviter les blocs de traitement redondants
Accroître la lisibilité d’un programme et donc
faciliter sa maintenance et son évolution
SAP propose les techniques de modularisation
suivantes:
– Les programmes includes
– les sous-routines
– les modules fonctions
Modularité
Programme Include
Contient un bloc de code pouvant être utilisé
dans plusieurs programmes (Ex: déclaration de
données)
Permet de regrouper des traitements par blocs
fonctionnels ou techniques
Création: type de programme I dans les
attributs.
Utilisation dans un autre programme :
INCLUDE <include>.
Modularité
Les sous-routines
Une sous-routine est un bloc de traitement que
l’on peut appeler plusieurs fois dans un
programme.
Usage sans paramètres:
PERFORM <sousroutine>. Appel de la routine
FORM <sousroutine> . Définition de la routine
Bloc de traitement.
ENDFORM.
Modularité
Les sous-routines
passage de paramètres par référence.
PERFORM <sousroutine> TABLES <tab1> <tab2>
USING <p1> <p2> <p3>
CHANGING <p4> <p5>.
WHEN
WHEN2.2.
WRITE:/
WRITE:/‘ Erreur
‘ Erreur::impossibilité
impossibilitéde
deconcaténer ’
concaténer ’
ENDCASE.
ENDCASE.
Reporting ABAP IV
Chapitre 6
Tables Internes
Tables internes
Définition
Les tables internes sont des structures de données
qui existent le temps de l ’exécution du
programme. Elles peuvent contenir un nombre
quelconque d ’enregistrements ayant la même
structure, avec ou sans ligne d ’en-tête.
L ’en-tête est similaire à une structure et sert de
work area (aire de travail) à la table interne. Le
type de données d ’un enregistrement peut être
élémentaire ou structuré.
Tables internes
Différents types (1/2)
STANDARD : La recherche dans une table standard
s ’effectue de manière séquentielle. Le temps d ’accès
augmente donc linéairement avec le nombre d ’entrées. Il est
recommandé d ’accéder à ces tables avec des index.
SORTED : Ce type de table est toujours sauvegardé
correctement triée. L ’accès utilise une clé binaire. Si cette clé
n ’est pas unique le système retient l ’enregistrement avec
l ’index le plus faible. Le temps d ’accès augmente de façon
logarithmique avec le nombre d ’entrées. On peut également y
accéder par index. Le temps pour insérer un enregistrement
est plus long que pour une table standard puisque le système
vérifie que le tri est correct après chaque insertion.
Tables internes
Différents types (2/2)
HASHED : La table est gérée par une procédure interne de
hashage. Une table hashée est une collection d ’enregistrements qui
peuvent être adressés grâce à une clé unique. On ne peut pas utiliser
d ’index pour accéder à ce type de table. Toutes les entrées ont une
clé unique. Le temps d’accès est constant quelque soit le nombre
d’enregistrements. On ne peut y accéder qu’en utilisant les
opérations génériques du type SORT, LOOP. Les opérations avec
accès implicites ou explicites aux index ne sont pas autorisées
(comme LOOP ... FROM ou INSERT itab avec un LOOP).
Notons que les types STANDARD et SORTED sont réunis sous le
type générique INDEX TABLE.
Tous les types de tables internes sont réunis sous l ’appellation ANY
TABLE.
Tables internes
Déclaration
Déclaration de table standard :
DATA: BEGIN OF itab OCCURS 100, (1)
nom(20) TYPE C,
code_postal(5) TYPE N,
ville(20) TYPE C,
END OF itab.
Déclaration de table hashée (en référence à un type existant) :
TYPES: BEGIN OF struc,
name(10),
age TYPE I
END OF STRUC.
TYPES: HTAB TYPE HASHED TABLE OF STRUC WITH UNIQUE KEY
NAME.
DATA : PERSONS TYPE HTAB.
Les tables internes
Structure
Table
Dupont
Dupont 75000
75000 Paris
Paris
read table Durand
Durand 67000
67000 Strasbourg
Strasbourg
Deschamps
Deschamps 34000
34000 Montpellier
Montpellier
modify table
Dupont
Dupont 75000
75000 Paris
Paris
Work Area
Tables internes
Ajout
APPEND <tabname>.
Ajoute un poste en fin de table à partir des valeurs
renseignées dans la work area:
Move ‘Dupont’ TO ITAB-NOM.
Move ‘75000’ TO ITAB-CP.
Move ‘Paris’ TO ITAB-VILLE.
APPEND ITAB.
Chapitre 7
Gestion des Fichiers
Fichiers extracts
option1
FOR INPUT en mode lecture
FOR OUTPUT en mode écriture
FOR APPENDING en mode écriture en fin de fichier
option2
IN TEXT MODE en mode text
IN BINARY MODE en mode binaire (défaut)
Fichiers du serveur d’application
Lecture
READ DATASET <dsn> INTO <structure>.
Lecture d’un enregistrement du fichier <dsn> dans la
variable <structure>. En fin de fichier, SY-SUBRC est
différent de zéro.
Exemple:
DO.
READ DATASET <dsn> INTO <structure>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
Traitement.
ENDDO.
Fichiers du serveur d’application
Ecriture - Fermeture
TRANSFER <structure> TO <dsn>.
Transfère le contenu de la variable
<structure> dans le fichier <dsn>.
Chapitre 8
Concepts de programmation avancée
Report interactif
Présentation
Dans le cas d ’un report interactif, l ’utilisateur peut
déclencher des opérations et des traitements par des
actions sur la liste résultante d ’une interrogation.
Barre de fonctions
Barre d ’outils
MENU PAINTER
Barre de menus
La barre permet de définir le chemin pour accéder
aux événements. A chaque branche de
l ’arborescence se trouve un code fonction ou nom
de transaction.
MENU PAINTER
Barre de fonctions
Dans cette partie on paramètre les fonctions de la
surface. Lorsque l ’utilisateur clique sur un bouton
ou icône de fonction, le code de la fonction (ici
‘ COMMANDE ’) est stocké dans SY-UCOMM.
MENU PAINTER
Barre d ’outils
La barre d ’outils permet une plus grande
convivialité par rapport à la barre de menus,
notamment l ’insertion d ’icône. On y retrouve les
options des menus les plus souvents utilisés.
Report interactif ABAP
Commande : At Line-selection
Déclenche un événement à chaque fois que l ’utilisateur choisit
une ligne dans une liste (une ligne générée par des instructions
telles que WRITE, ULINE ou SKIP) avec le curseur et presse
une touche de fonctions qui a la fonction PICK dans la
définition de l ’interface (1).
Données
Donnéesgénérales
générales: :MARAV
MARAV
Unités
Unitésde
dequantité
quantité Données
Donnéesde
devente
vente Données
Donnéespar
pardivision
division
MARM
MARM MVKE
MVKE MARCV
MARCV
Données
Donnéespar
parmagasin
magasin
MARD
MARD
Cette BDL peut lire et fournir au programme auquel elle est associée
toutes les entrées de ces tables dans un ordre hiérarchique et séquentiel .
Base de Donnée Logique
l ’événement GET
Syntaxe : GET <dbtab>.
L ’événement GET est déclenché dans le programme
quand SAP a mis à disposition les données de la table
<dbtab>.
– Exemple :
REPORT ZZEXEMPLE.
TABLES : MARAV.
GET MARAV.
WRITE MARAV-MATNR, MARAV-MAKTX.
Attention : les données de niveaux inférieurs de
l ’arborescence ne sont pas disponibles.
Base de Donnée Logique
l ’événement GET
Comment faire pour accéder aux données d ’un niveau
inférieur ? par exemple la table MARD.
Il suffit de positionner l ’événement GET sur la table
de niveau inférieur.
– exemple :
REPORT ZZEXEMPLE.
TABLES : MARAV, MARD.
GET MARD.
WRITE : MARD-LGORT, MARD-MATNR, MARV-MAKTX.
A un niveau inférieur de l ’arborescence, on dispose de
toutes les données des niveaux supérieurs.
Base de Donnée Logique
Ecran de sélection
A chaque BDL est associé au moins un écran de
sélection.
Types de messages :
– I - Info : Press ENTER to continue
– W - Warning : Correction possible
– E - Error : Correction required
– A - Abend : Transaction terminated
– X - Exit : Transaction terminated with short dump
– S - Success : Message on next screen
Message
Classe de message
On maintient les classes de messages et les messages qu ’il contient par
la transaction SE91 ou le menu Abap workbench - Développement -
Environnement de développement - Messages.