You are on page 1of 206

SOMMAIRE

I
SOMMAIRE
SOMMAIRE ....................................................................................................................................... I
Introduction SAP ............................................................................................................................ 1
Client serveur .................................................................................................................................................. 1
Processus ......................................................................................................................................................... 1
Instances .......................................................................................................................................................... 1
Mandants ......................................................................................................................................................... 1
Premiers pas sous SAP R/3 ............................................................................................................................. 2
ABAP/4 (Advanced Business Application Programming) ............................................................................. 3
LEDITION DE DONNEES ............................................................................................................. 7
Instruction WRITE. ......................................................................................................................................... 7
Symboles et icnes dans les listes. .................................................................................................................. 7
Spcifications de format. ................................................................................................................................. 7
Symbole de texte. ............................................................................................................................................ 8
En-tte de page. ............................................................................................................................................... 8
Rupture de page / nouvelle page. .................................................................................................................... 9
Attribut ddition. ............................................................................................................................................ 9
ZONES 7 .......................................................................................................................................... 10
Liste des Zones systme. ............................................................................................................................... 10
TYPES DE DONNEES ................................................................................................................... 14
Types de donnes ABAP/4, attributs et dition. ........................................................................................... 14
DECLARATION ............................................................................................................................. 15
Dclaration des donnes. ............................................................................................................................... 15
Dclaration de type. ...................................................................................................................................... 15
Les tables ...................................................................................................................................................... 15
Dclaration des structures de zones. ............................................................................................................. 16
Dclaration de zones similaire. ..................................................................................................................... 16
OPERATIONS SUR LES VARIABLES ....................................................................................... 17
Affectation de valeurs. .................................................................................................................................. 17
Expressions arithmtiques. ............................................................................................................................ 17
Sous-zones. ................................................................................................................................................... 18
Oprations de chane.. ................................................................................................................................... 18
Oprateurs relationnels.................................................................................................................................. 19
OPERATEURS CONDITIONNELS ............................................................................................. 20
Instruction IF. ................................................................................................................................................ 20
Instruction CASE. ......................................................................................................................................... 20
Boucle DO. ................................................................................................................................................... 21
Boucle WHILE : ........................................................................................................................................... 21
Instruction CHECK. ...................................................................................................................................... 21
Instruction EXIT. .......................................................................................................................................... 21
Instruction STOP........................................................................................................................................... 21
LES TABLES ................................................................................................................................... 22
Remplir "une table la main" ....................................................................................................................... 22
Consulter les donnes dune table " la main" .............................................................................................. 22
Remplissage des tables internes. ................................................................................................................... 22
Tri des tables internes.................................................................................................................................... 23
Traitement des tables internes. ...................................................................................................................... 24
Lecture des entres des tables internes. ......................................................................................................... 24
Modification des tables. ................................................................................................................................ 25
Suppression des tables................................................................................................................................... 26
Les stocks de donnes intermdiaires ........................................................................................................... 26
INSTRUCTIONS SELECT ............................................................................................................ 27
SOMMAIRE
II
Instruction select 1. ....................................................................................................................................... 27
Instruction select 2. ....................................................................................................................................... 27
SELECT * FROM <tab> INTO TABLE <tabint> FOR ALL ENTRIES IN <tabint2>. .............................. 27
Maximum minimum ..................................................................................................................................... 27
LES BASES DE DONNEES LOGIQUES ..................................................................................... 28
Les bases de donnes logiques ...................................................................................................................... 28
Acquisition de donnes laide dune base de donne logique. ................................................................... 28
La structure de la base de donnes logique F1S est la suivante : .................................................................. 29
Le programme associ la BDL F1S est le suivant : .................................................................................... 29
Le programme concernant l'cran de slection de F1S est: ........................................................................... 35
Les textes de slection concernant F1S: ........................................................................................................ 36
Les matchcodes concernant la BDL F1S sont: .............................................................................................. 36
Un exemple de programme ZHENBDL1 rappelant la BDL F1S: ................................................................. 37
Deuxime exemple avec la BDL KDF. ......................................................................................................... 39
ECRAN DE SELECTION .............................................................................................................. 41
SELECT-OPTION ........................................................................................................................................ 41
Dclaration des zones avec PARAMETERS ................................................................................................ 41
SELECTION-SCREEN. ............................................................................................................................... 42
AT SELECTION-SCREEN .......................................................................................................................... 42
Cration d'crans de slections. ..................................................................................................... 44
Programme permettant la saisie d'un vol arien: ........................................................................................... 44
Cration d'cran pour l'aide en ligne (touches F1 et F4) ............................................................................... 45
Les vnements AT sous ABAP/4 ................................................................................................... 50
AT Evnements dans les listes ................................................................................................................... 50
AT - Evnements dans les crans de slection .............................................................................................. 53
AT - Points de contrle avec les stocks de donnes intermdiaires .............................................................. 56
AT Points de contrle avec les tables internes ........................................................................................... 58
LISTES ............................................................................................................................................. 61
Lecture des listes ........................................................................................................................................... 61
Modification des listes .................................................................................................................................. 61
FENETRES ...................................................................................................................................... 62
Instruction Window ....................................................................................................................................... 62
L'Object Browser ............................................................................................................................ 63
Cration d'une interface de saisie .................................................................................................................. 64
Cration d'un cran de commande STATUT GUI ........................................................................................ 68
Les crans de liste. ........................................................................................................................................ 69
La transaction ................................................................................................................................................ 70
La programmation ......................................................................................................................................... 71
Le Batch Input ................................................................................................................................. 87
Le batch input................................................................................................................................................ 87
Exercice sur l'importation de donnes ........................................................................................................... 88
Les bons reflexes: .......................................................................................................................................... 90
Informations sur le batch input...................................................................................................................... 91
Mise en uvre d'un dossier Batch Input ....................................................................................................... 92
Lancement du Batch Input ............................................................................................................................ 98
SAPscript .......................................................................................................................................... 99
Les formulaires ............................................................................................................................................. 99
Impression d'un formulaire : ....................................................................................................................... 104
Quelques commandes SAP pour le sapscript .............................................................................................. 105
Symboles dans SAPscript: .......................................................................................................................... 106
Fonction d'appels sous ABAP/4 ................................................................................................... 107
CALL FUNCTION 'OPEN_FORM' ........................................................................................................... 107
CALL FUNCTION 'START_FORM' ......................................................................................................... 107
SOMMAIRE
III
CALL FUNCTION 'WRITE_FORM' ......................................................................................................... 107
CALL FUNCTION 'END_FORM' ............................................................................................................. 108
CALL FUNCTION 'CLOSE_FORM' ......................................................................................................... 108
Exercice ....................................................................................................................................................... 108
GESTION DES MESSAGES EXEMPLE ET EXPLICATIONS. .............................................................. 121
MODULARISATION ................................................................................................................... 123
Les instructions PERFORM et FORM ........................................................................................................ 123
Passage par valeurs entre paramtres rels et paramtres formels .............................................................. 123
Linstruction SUBMIT ................................................................................................................................ 126
TRUCS ET ASTUCES .................................................................................................................. 127
Cration de vues .......................................................................................................................................... 127
CREATION DE MATCHCODE. ............................................................................................................... 128
Gestion de curseurs en lecture de table ....................................................................................................... 132
Astuces lors de laffichage de listes ............................................................................................................ 133
COMMANDES SQL : ................................................................................................................................ 136
Affectation dynamique ................................................................................................................................ 138
Ecrire des messages. ................................................................................................................................... 140
Liste alphabtique des commandes SAP ..................................................................................... 141
Classification des mots cls par type ............................................................................................ 148
Mots cls dclaratifs : ................................................................................................................................. 148
Mots cls lis aux vnements : .................................................................................................................. 148
Mots cls de contrle : ................................................................................................................................ 148
Mots cls lis aux oprations : .................................................................................................................... 149
Commentaires ............................................................................................................................................. 151
Appel aux composantes dautres programmes : .......................................................................................... 151
Quelques transactions utiles connatre ..................................................................................... 152
ANNEXE ............................................................................................................................... 154
Les codes barres .......................................................................................................................... 154
Les codes barres dans SAPscript et le Systme de Spool. ........................................................................ 154
Impression des codes barres. .................................................................................................................... 156
Impression OCR dans le systme de SAP ................................................................................................... 156
Codes barres et SAPWIN ......................................................................................................................... 157
Compatibilit entre le code barres .DLL et SAPLPD ............................................................................... 158
Configuration requise .................................................................................................................................. 158
Test dimpression des codes barres .......................................................................................................... 158
Ajouter vos propres dfinition des codes barres ....................................................................................... 159
BC410 .............................................................................................................................................. 161
Autres techniques dans Screen Painter et Menu Painter ............................................................................. 161
Mise jour asynchrone ............................................................................................................................... 166
Concept de blocage SAP ............................................................................................................................. 170
Modification dynamique des crans. ........................................................................................................... 172
Table Control .............................................................................................................................................. 173
Lien entre les composantes de programme. ................................................................................................ 177
Fonction d'aide automatique et programm ................................................................................................ 178
Liste des SAPistes .......................................................................................................................... 180

Introduction SAP
Cours ABAP.doc Page 1 sur 181
Introduction SAP

SAP (System Application Product in data processing) est compos de modules. Chacun est spcialis dans un
domaine :
- MM gestion des articles, stocks, achats, fournisseurs, inventaires
- SD appel doffre, commande client, livraison, facture, gestion fiche client
- FICO comptabilit financire, trsorerie, investissement, contrle de gestion
- HR gestion du personnel, salaire
- etc.

Les modules ont des liens + ou forts. Tous les modules ne sont pas forcment immdiatement indispensables
pour une entreprise donne. Ils peuvent tre implants progressivement dans le temps.

Les donnes sont conserves dans des tables.

Le langage ABAP/4 permet de faire le lien entre les modules et de redfinir des tats standards (cest le
sapscript), de rcuprer des donnes dune ancienne base (cest le batch-input), etc.

Client serveur

Le systme SAP R/3 est distribu selon la technologie client/serveur. Ses composantes sont rparties sur
trois niveaux.
le site central: il fonctionne comme un serveur de base de donnes, c'est--dire qu'il contient les
processus constitutifs du service de base de donnes. Il abrite galement le service de mise jour
du systme R/3, ce qui signifie qu'il excute les mises jour de la base,
la logique applicative: le site central peut tre connect plusieurs serveurs d'application, sur
lesquels sont traites la logique de l'application courante,
les frontaux: chaque serveur d'application peut tre rattach plusieurs frontaux (postes de travail,
PC), sur lesquels travaillent les utilisateurs. Toutes les tches de prsentation sont ralises sur ces
stations individuelles.

Processus

SAP fonctionne avec des processus de travail. Chacun gre un seul type de requtes, tel que Dialog,
Background, Update, Enqueue ou Spool. (voir page 1-4 du BC400)

Instances

Une instance est une unit administrative qui regroupe les composantes d'un systme R/3 assurant un ou
plusieurs services.
Un systme central SAP R/3est constitu d'une instance unique, comprenant tous les services indispensables.
Chaque instance dispose de sa propre mmoire tampon SAP.

Mandants

La notion de mandant est trs importante au sein de SAP. Dans le vocabulaire commercial ou technique, un
mandant est une unit intgre du systme R/3.
SAP fait la distinction entre quatre types de mandants, qui doivent tre rpartis dans au moins deux systmes R/3
et jouent un rle spcifique. Ces 4 types de mandant sont:
dveloppement / test: permet de personnaliser ses activits, de raliser et tester ses propres objets de
repository (repository tant un terme englobant toutes les notions de traitement sur les tables systme,
transparentes, etc.),
assurance qualit: permet de tester le customizing du systme R/3,
formation: Mandant sous lequel se passe les formations,
production: ce mandant reoit les options de customizing testes et les objets de repository. Il ne faut
dfinir qu'un seul mandant de production.
Introduction SAP
Cours ABAP.doc Page 2 sur 181
En standard, SAP R/3 comprend deux mandants identiques contenant les mmes options de customizing, mais
aucunes donne d'application. Ainsi, le mandant 000 est le mandant de rfrence de SAP, modifi chaque mise
niveau. Il ne faut absolument pas y toucher. Pour travailler, il faut utilisez le mandant 001.
Premiers pas sous SAP R/3

Lancement du programme sur un serveur de loign

Lors de la connexion sur le serveur de loign, via l'outil de connexion SAPgui, on accde un cran de
connexion dans lequel 4 champs sont renseigner (voir la figure ci-contre). Le champ client demande le numro
du mandant qui va utiliser cette connexion. Dans notre
cas, le mandant sera "900" (mandant de formation). Ce
champ est renseign par dfaut par l'outil SAPgui. Dans
notre cas, nous n'avons donc en fait que les trois
champs suivants remplir. Dans le cadre de la
formation, les noms de login que l'on pourra utiliser
sont du type "student_N" (en majuscules ou en
minuscules), o N est un nombre compris entre 1 et 10
(dans l'exemple ci-contre, les nom de login est
"student10"). Il faut ensuite donner le mot de passe de
l'utilisateur "student10" pour accder au progiciel SAP
R/3. Pour l'ensemble des utilisateurs "student1"
"student10", ce mot de passe est "uniontec". Enfin, il ne
faut pas omettre de spcifier la langue que l'on veut
utiliser dans la zone "Language". Par dfaut, le progiciel
utilise la langue anglaise. Pour utiliser le franais, taper la lettre "F" ou "f" dans la case adquate. Il est possible
par la suite d'omettre cette dernire case, si et seulement si on a spcifi au systme R/3 que la langue par dfaut
sera le franais. Cette opration est raliser dans le menu Systme Donnes utilisateur.

Fentre SAP R/3

Une fois la connexion tablie, on accde la fentre de base du systme SAP R/3. Cette fentre permet de
naviguer dans l'ensemble des modules du systme R/3:
bureautique,
logistique,
gestion comptable,
gestion du personnel,
systmes information,
outils.
Dans le cadre de la formation qui nous est
propose, nous allons tudiez le module "ABAP/4
development Workbench" (ABAP/4 = Advanced
Business Application Programming / 4 (4
me

gnration)), langage de programmation conu par
SAP, et qui permet de dvelopper des applications de
faon interactive.
Toutes les applications dveloppes avec
ABAP/4 development Workbench peuvent fonctionner directement sur toute plate-forme, systme de base de
donnes ou interface utilisateur graphique grs par SAP.
Introduction SAP
Cours ABAP.doc Page 3 sur 181
ABAP/4 (Advanced Business Application Programming)

Module ABAP/4

Pour accder au module ABAP/4, il faut cliquer sur le menu droulant Outils ABAP/4 Workbench. Il
faut alors cliquer sur le bouton "Editeur ABAP/4" pour arriver l'diteur tel que dcrit ci-contre. Une autre
technique pour atteindre l'diteur est d'utiliser les "OK
codes" dans la zone de saisie, situe juste sous les
menus droulants. Le code pour l'diteur ABAP/4 est:
SE38.
Afin de crer un nouveau programme, il faut donner un
nom de programme valide (commenant par la lettre
"Z"), et comportant au maximum 8 caractres.
Les boutons cocher, dans le menu "Sous-objets"
servent accder aux diffrentes lments du
programme que l'on dsire raliser. Parmi ceux-ci,
"Texte source" permet l'accs au listing du programme,
"Attributs" autorise l'dition et les modifications des
attributs du programme (application, classe de
dveloppement, ...), ou encore "Elments de texte"
permettra d'utiliser, au sein d'un programme ABAP/4,
des variables textes qui contiendront des phrases types afficher l'cran. Cette technique permet alors de
changer rapidement ces phrases, dans une langue trangre, par exemple, sans avoir parcourir l'ensemble du
code source.

Cration et dition dun programme

Nous allons crer notre premier programme ABAP/4. Dans l'cran de la section prcdente, il faut donner
un nom au nouveau programme, nom commenant obligatoirement par la lettre Z. Ceci permet de dissocier les
programmes personnels des programmes du systme R/3. Dans l'exemple dont nous disposons ici, ce nom sera
"Zchen6. On appuiera alors sur le bouton , pour accder la fentre d'dition des attributs du
nouveau programme.
Pour grer les attributs de notre programme, nous allons:
renseigner la zone Dsignation (titre descriptif de l'application),
affecter la zone Type la valeur 1 (on va crer un tat),
affecter la zone Application la valeur S (programme systme),
remarque: pour connatre les valeurs que l'on peut attribuer ces diffrentes zones, on peut cliquer sur la zone
renseigner, puis appuyer sur la touche fonction F4. Cette action ouvrira une fentre d'aide comprenant les valeurs
accessibles ainsi qu'une brve description les concernant.
Il faut cependant savoir, en ce qui concerne les attributs d'un programme, que la zone Classe de dveloppement
est obligatoire renseigner. Elle permet de grer la transportabilit du programme dans le systme R/3. Dans
notre cas, cette zone est automatiquement affecte de la valeur $TMP, classe de dveloppement n'autorisant pas
le transport des programmes. ces derniers sont alors
considrs comme des objets locaux et privs.
On sauvegarde alors le programme, puis, en cliquant
sur le bouton , on accde l'diteur de lignes de code
de ABAP/4 (figure ci-jointe).
Comme on peut le constater sur la figure ci-jointe, un
programme en ABAP/4 commence toujours par le mot
cl REPORT, suivi par le nom du programme (ici
ZCHEN6), et des instruction d'inclusion (dans notre
cas NO STANDARD PAGE HEADING, signifiant
que la dsignation introduite dans les attributs du
programme n'apparatrons pas sur la surface de l'cran.
Un programme ABAP/4 est constitu d'instructions
individuelles. Chaque mot cl, dans une instruction
individuelle, est spare du suivant par un espace.
Chaque ligne de commande se termine par un point. On peut crire plusieurs commandes sur une mme ligne, du
moment qu'elles sont spares par des points, mais cela nuit la lisibilit de l'ensemble du programme.
Introduction SAP
Cours ABAP.doc Page 4 sur 181
Une commande peut galement dborder du cadre de la ligne. Cela ne drange pas l'interprteur, du moment
qu'il trouve bien un point la fin de l'instruction.
On peut galement crer des instructions en chane, en concatnant plusieurs instructions conscutives dotes
d'une partie commune, grce au symbole ":", plac en fin de la partie commune, les parties concatnes tant
spares par des virgules.
deux petits exemples pour clarifier les choses:
WRITE 'XYZ'.
WRITE Name1.
WRITE Counter1.
WRITE: 'XYZ', Name1, Counter1.
ADD 1 TO Counter1.
ADD 1 TO Counter2.
ADD 1 TO Counter3.
ADD 1 TO: Counter1, Counter2, Counter3.
On peut insrer deux types de commentaires en ABAP/4. Lorsqu'on dsire documenter une ligne
complte, on utilisera le symbole "*" en tout premire position dans la ligne. La ligne complte deviendra alors
rouge. Si l'on dsire documenter une fin de ligne, derrire une instruction, on utilisera le symbole """, le
commentaire restant de la mme couleur que les instructions.

Introduction SAP
Cours ABAP.doc Page 5 sur 181
trucs et astuces

- Les retours la page prcdente seffectuent par le bouton ou en appuyant sur la touche la touche F3.
- Si l'on na pas renseign les champs obligatoires (signal par un ?), il est impossible de changer de page. Il
faut alors utiliser la flche jaune vers le haut ( ).
- Pour naviguer plus facilement dans les crans, penser double cliquer sur les noms dobjets ; on y accde
alors directement sans passer par tous les menus (si l'objet nexiste pas, il est alors crer).
- Utiliser la Tabulation pour passer dune case remplir lautre.
- Le bouton la mme fonction que la touche ENTREE.
- Le bouton reprendre sert sauvegarder les modifications.
- Utiliser le bouton pour sauvegarder.
- Utiliser le bouton pour changer de mode (basculer entre les modes affichage et modification).
- Pour imprimer, allez dans le menu utilitaire tlch/tldcharger tldcharger, donner un nom de
fichier et limprimer depuis un traitement de texte local (sinon l'impression se fera sur le serveur SAP)
- Dans un gros programme, viter dutiliser le bouton contrler ( ). Il vaut mieux gnrer le programme ( )
- Il est possible de copier un morceau dcran pour l'insrer dans un document Word par exemple. Pour cela,
cliquer sur la surface copier, appuyer sur les touches CTRL-Y et slectionner la zone dsire. Appuyer
ensuite sur les touches CTRL-C pour copier cette zone dans le presse-papiers de Windows.
- La fonction programme Pretty printer de lditeur ABAP/4, permet de raliser l'indentation automatique
du programme en cours de dveloppement (alignement des commandes IF ENDIF par exemple ).
- Dans un pool de modules, larborescence visible ne correspond pas toujours la ralit, les dernires
modifications pouvant ne pas apparatre. Il faut alors rafrachir l'affichage via le menu Traiter Actualiser.
- Un statut dclar en dynpro par erreur (alors quon voulait le dclarer en liste) devra faire lobjet de toutes
les attentions. Il faut bien veiller ce que les attributs du statut correspondent au dynpro dsir (allocation
des touches de fonction par exemple).
- Pour supprimer un blocage, aller dans la transaction sm12, lister l'ensemble de blocages ( ), slectionner
le travail que l'on dsire dbloquer, puis le supprimer en cliquant sur le bouton .
- Pour obtenir de l'aide sur une instruction posant problme, positionner le curseur dessus et appuyer sur la
touche F1.
- Hotline SAP: OSS pour laisser des messages en cas de plantage d un bug prsum de SAP.

Programmation

Un programme au sens large du terme peut tre :
un REPORT, cr partir de lditeur abap/4 [transaction SE38],
un PROGRAM, cr partir de lobject browser (dans un pool de modules) [transaction SE80].

Lors de la cration dun report, choisir un type "1", et une application "S" ou "noyau systme" ou "*".
Sauvegarder, puis cliquer sur le bouton . Les noms donns nos programmes doivent toujours commencer
par la lettre Z ou Y, et comporter au minimum 4 lettres. Il en sera de mme pour tout objet cr personnellement.

Les lignes de commandes se finissent toujours par un point.

Le programme, une fois crit, est soit contrl (report) soit gnr (pool de modules), sauvegard puis excut en
appuyant sur la touche F8 ou en passant par le menu Programme Excuter.

Le dbogueur peut tre lanc de trois manires :
- dans l'diteur ABAP/4, lancer la transaction "/h", puis excuter le programme en cours,
- sous l'diteur abap/4, prciser le nom du programme et cliquer sur le bouton ,
- sous l'object browser, alors qu'est affiche l'arborescence du programme en cours, cliquer sur le
bouton puis choisir le radio bouton Dbogage.
Sous le dbogueur, il est possible de visualiser les variables, de les forcer des valeurs dsires, d'excuter le
programme pas pas, de dfinir des points darrts obligatoires (double cliquer au dbut de la ligne souhaite
pour placer un point d'arrt, le supprimer via la barre de menu)

Il est galement possible de crer des variantes de programmes dans l'object browser (radio bouton variante,
Znomvariante, puis bouton Crer ( ), remplir l'cran d'attributs, puis Suite). Pour lancer la variante, il suffit, de
cocher le radio bouton Variante et d'excuter la variante.

Introduction SAP
Cours ABAP.doc Page 6 sur 181
Le dictionnaire

Le dictionnaire [transaction SE11] permet de visualiser la structure et le contenu (Utilitaire Contenu de table)
des tables ou d'en crer de nouvelles.

Des bugs connatre

- Se mfier de l'AT NEW avec les tables internes,
- Lorsque l'on se trompe dans la dfinition d'un menu ( dynpro, liste, bote de dialogue et liste dans une bote
de dialogue) il ne suffit pas d'aller changer les attributs du menu mais aussi dans saut dialogue
Jenesaisplus .
- le bouton pour un programme assez gros,
- linsertion dimage dans SAPSCRIPT.
- Dans le Batch Input lorsque l'on passe les valeurs (dynbegin, program, dynpro, fnam, fval) il faut mettre un
clear dans le IF et dans le ELSE (idem pour le Append), car si l'on ne mets pas a dans la boucle
conditionnelle rien ne marche.

Aprs ces premires informations d'ordre gnral sur la programmation en ABAP/4, nous allons prsent
voir les instructions mises notre disposition pour raliser des programmes.


L'dition des donnes
Cours ABAP.doc Page 7 sur 181
LEDITION DE DONNEES

Instruction WRITE.

WRITE <format> <valeur> <option>.

Format : /p(I)
/ Nouvelle ligne.
p Position de colonne
I Longueur ddition
Valeur : Valeur dite zone ou littral
Option : options de mise en forme, format ddition.

WRITE : / ******************* . : WRITE permet dditer le contenu dune zone ou dune constante
dans le format adapt a chaque type.

SKIP 2. : Linstruction SKIP permet de gnrer des lignes blanches.

WRITE : DATE, sy-datum.
WRITE : HEURE, sy-uzeit. : Les instructions WRITE conscutive permettent dditer des donnes sur la
mme ligne. Si lespace est insuffisant sur la ligne, ldition se poursuit sur la
ligne suivante.

SKIP 2.
WRITE : / *******************.

Symboles et icnes dans les listes.

INCLUDE <SYMBOL>
WRITE <zone> AS SYMBOL.

INCLUDE <LIST>
WRITE <zone> AS ICON.

Les icnes ne peuvent pas tre imprimes.

Spcifications de format.

WRITE : 5 *******************. : Linsertion dun chiffre dans linstruction WRITE permet de
positionner les donnes la colonne souhaite.
SKIP 2.

WRITE : 5 DATE , 20 sy-datum.
WRITE : 5 HEURE , 20 sy-uzeit.

SKIP 2.

ULINE . : ULINE gnre un soulign.

L'dition des donnes
Cours ABAP.doc Page 8 sur 181
Symbole de texte.

WRITE : TEXT-001, 10 sy-datum.
/ TEXT-002, 10 sy-uzeit. : Rappelle dans le programme du texte 001 .

Pour grer les symboles de texte double-cliquez sur TEXT-XXX ou alors slectionner ELEMENTS DE TEXTE
: SYMBOLE DE TEXTE.
Pour traduire dans dautres langues, utiliser la fonction TRADUIRE.
Pour adresser des symboles texte dans un programme : TEXT-XXX o XXX est une chane de trois caractres.
Lun des avantages des symboles de texte rside dans le fait que la chane nest plus code en dur dans le
programme ; vous pouvez donc mettre jour le texte sans passer par le code source.
Une procdure de ce genre convient particulirement aux logiciel multilingues.

En-tte de page.

Pour les listes, vous pouvez grer un en-tte de liste et quatre en-ttes de colonne au plus. Pour ce faire,
slectionner ELEMENTS DE TEXTE suivi de TITRE ET INTITULES.

Une autre manire de grer les en-ttes dune liste affiche consiste slectionner SYSTEME : LISTE :
INTITULE DE LISTE. Cette mthode prsente lavantage de faciliter le positionnement des en-ttes de colonnes
car la liste est affiche lcran.


Les lignes den-tte apparatront automatiquement dans la liste lors du lancement suivant le programme.

Si vous nindiquez pas den-tte de liste, cest le titre du programme qui saffiche.


Vous pouvez traduire les textes dans dautres langues. Pour ce faire, slectionner ELEMENT DU TEXTE :
MODIFIER : SAUT : TRADUCTION.

L'dition des donnes
Cours ABAP.doc Page 9 sur 181
Rupture de page / nouvelle page.

NEW-PAGE.
Le compteur de page est automatiquement remis jour et les titres spcifiques au programme sont affichs la
page suivante.
Linstruction ne gnre pas de page blanche.

Paramtres de linstruction NEW-PAGE.

NEW-PAGE

NO-TITLE.
WITH-TITLE.
NO-HEADING.
WITH-HEADING



Attribut ddition.

Linstruction format gre les attributs ddition. Ils sont actifs ds linstruction write suivante.

Options Dsignations Option de COLOR Dsignation

INTENSIFIED

INPUT


COLOR <n>


INVERSE

Surbrillance

Modifiable en
saisie

Couleur darrire
plan

Permute les
couleurs de 1
er
et
darrire plan

OFF
1
2
3
4
5
6
7


col_background
col_heading
col_normal
col_total
col_key
col_positive
col_negative
col_group

Arrire plan
Titre
Corps de liste
Total
Colonne cl
Valeur positive
Valeur ngative
Niveau hirarchique


Zones systme
Cours ABAP.doc Page 10 sur 181


ZONES SYTEME


Liste des Zones systme.


SY-ABCDE Constante : alphabet (A,B,C,...)
SY-APPLI Applications SAP
SY-BATCH Mode batch actif.
SY-BATZD BATCH-SUBMIT : tous les jours
SY-BATZM BATCH-SUBMIT : mensuel
SY-BATZO BATCH-SUBMIT : une seule fois
SY-BATZS BATCH-SUBMIT : batch-submit immdiat
SY-BATZW BATCH-SUBMIT : hebdomadaire
SY-BINPT Batch input actif (X)
SY-BREP4 BATCH_SUBMIT : nom racine du programme d'excution
SY-BSPLD BATCH-SUBMIT : dition de liste dans le spool
SY-CALLD Appel mode actif (X)
SY-CALLR IMPRIMER : Id. pour fonction dialogue d'impression
SY-CCURS Indication du cours/zone de rsultat CURRENCY CONVERT
SY-CCURT Cours de table de l'application CURRENCY CONVERSION
SY-CDATE Date du cours de CURRENCY CONVERSION
SY-CFWAE Utilisation interne
SY-CHWAE Utilisation interne
SY-COLNO Colonne actuelle lors cration de liste
SY-CPAGE Numro de page actuel
SY-CPROG RUNTIME : programme principal
SY-CTABL Table des cours de CURRENCY CONVERSION
SY-CTYPE Type de cours "M", "B", "G" de CURRENCY CONVERSION
SY-CUCOL Position curseur (colonne)
SY-CUROW Position curseur (ligne)
SY-DATAR Tmoin : donne reue
SY-DATLO Date locale par rapport l'utilisateur
SY-DATUM SYSTEME : date du jour
SY-DATUT Date globale par rapport UTC (GMT)
SY-DAYST Heure d't active ? ("Daylight Saving Time")
SY-DBCNT Nombre lments en quantits traites pour les oprations BD
SY-DBNAM Base de donnes logiques pour programme ABAP/4
SY-DBSYS SYSTEM systme base de donnes
SY-DCSYS SYSTEM : systme dialogue
SY-DEBUG Utilisation interne
SY-DSNAM RUNTIME : nom du dataset pour l'dition spool
SY-DINGR Groupe de dynpros du dynpro actif
SY-DYNNR Numro de l'cran actif
SY-ENTRY Utilisation interne
SY-FDAYW Jour de la semaine du calendrier d'entreprise
SY-FDPOS Chane caractres trouve dans
SY-FFILE INTERNE : flatfile (USING/GENERATING DATASET)
SY-FLENG Utilisation interne (longueur de zone)
SY-FMKEY Menu code fonction actuel
SY-FODEC Utilisation interne (zone de dcimales)
SY-FOLEN Utilisation interne (longueur d'dition de la zone)
SY-FTYPE Utilisation interne (type de zone)
Zones systme
Cours ABAP.doc Page 11 sur 181
SY-GROUP INTERNE : regroupement
SY-HOST Nom machine
SY-INDEX Nombre de passages de la boucle
SY-INPUT Utilisation interne
SY-LANGU Code langue de l'ouverture de la session SAP
SY-LDBPG PROGRAM : Programme de base de donnes ABAP/4 de SY-DBNAM
SY-LILLI Numro de ligne de liste actuelle
SY-LINCT Nombre de lignes
SY-LINNO Ligne actuelle lors cration liste
SY-LINSZ Longueur de liste
SY-LISEL INTERACT : ligne slectionne
SY-LISTI Numro de ligne de liste actuelle
SY-LOCDB Base de donnes locale existe
SY-LOCOP Opration base de donnes locale
SY-LOOPC Nombre de lignes "loop" (boucle) pour steploop de dynpro
SY-LPASS Utilisation interne
SY-LSIND Numro de la liste secondaire
SY-LSTAT INTERACT : Information statut par niveau de liste
SY-MACDB PROGRAMME : Nom du fichier permettant accs aux matchcodes
SY-MACOL Nombre de colonnes de l'instruction SET MARGIN
SY-MANDT Numro mandant de la connexion SAP
SY-MARKY Lettre de marquage de ligne actuelle p. MARK
SY-MAROW Nombre de lignes de l'instruction SET MARGIN
SY-MODNO Nombre de modes alternatifs
SY-MSGID Id. message
SY-MSGLI INTERACT : Ligne message (ligne23)
SY-MSGNO Numro message
SY-MSGTY Type de message (E, I, W,...)
SY-MSGV1 Variable message
SY-MSGV2 Variable message
SY-MSGV3 Variable message
SY-MSGV4 Variable message
SY-NEWPA Utilisation interne
SY-NRPAG Utilisation interne
SY-ONCOM INTERNE : on commit fLag
SY-OPSYS SYSTEM : systme d'exploitation
SY-PAART IMPRIMER : mise en forme
SY-PAGCT Nombre de pages de la liste de l'instruction REPORT
SY-PAGNO page actuelle lors cration de liste
SY-PAUTH Utilisation interne
SY-PDEST IMPRIMER : imprimante
SY-PEXPI IMPRIMER : dure de rsidence dans le spool
SY-PFKEY RUNTIME : statut actuel des touches fonctions
SY-PLAYO Utilisation interne
SY-PLAYP Utilisation interne
SY-PLIST IMPRIMER : nom de l'ordre spool (nom de liste)
SY-PNWPA Utilisation interne
SY-PRABT IMPRIMER : service indiqu sur page de garde
SY-PRBIG IMPRIMER : page de garde de slection
SY-PRCOP IMPRESSION : nombre d'exemplaires
SY-PRDSN IMPRIMER : nom du dataset du spool
SY-PREFX Prfixe ABAP/4 pour jobs batch
SY-PRI40 Utilisation interne
SY-PRIMM IMPRIMER : impression immdiate
SY-PRINI Utilisation interne
SY-PRLOG Utilisation interne
SY-PRNEW IMPRIMER : nouvel ordre spool (liste)
SY-PRREC IMPRIMER : destinataire
Zones systme
Cours ABAP.doc Page 12 sur 181
SY-PRREL IMPRIMER : supprimer aprs dition
SY-PRTXT IMPRIMER : texte de la page de garde
SY-REPI2 Utilisation interne
SY-REPID PROGRAMME : Nom du programme. ABAP/4
SY-RSTRT Utilisation interne
SY-RTITL IMPRIMER : intitul du programme d'impression
SY-SAPRL SYSTEME : version SAP
SY-SCOLS Colonnes sur cran
SY-SFNAM non utilis
SY-SFOFF Utilisation interne
SY-SLSET Nom du SELECTION-SET
SY-SPONO RUNTIME : numro spool lors de l'dition d'une liste
SY-SPONR RUNTIME : numro spool de l'instruction TRANSFER
SY-SROWS Lignes sur cran
SY-STACO INTERACT.: Liste affiche partir colonne
SY-STARO INTERACT. : page affiche partir ligne
SY-STEPL Numro de la ligne "loop" (boucle) p. step dynpro
SY-SUBCS INTERNE : statut CALL du programme
SY-SUBRC Valeur confirmation aprs certaines instructions ABAP/4
SY-SUBTY ABAP/IV : type d'appel pour SUBMIT
SY-SYSID SYSTEM : Identification du systme SAP
SY-TABID Utilisation interne
SY-TABIX Dure d'excution : ligne actuelle d'une table interne
SY-TCODE SESSION : code transaction actuel
SY-TFDSN RUNTIME : nom du data set pour extraits de donnes
SY-TFILL Nombre actuel d'entres dans table interne
SY-TIMLO Heure locale par rapport l'utilisateur
SY-TIMUT Heure globale par rapport UTC(GMT)
SY-TITLE PROGRAMME : Titre du programme ABAP/4
SY-TLENG Ligne d'une table interne
SY-TLOPC Utilisation interne
SY-TMAXL Nombre max. d'entres dans la table interne
SY-TNAME Nom de la table interne aprs accs
SY-TOCCU Paramtre occurs pour tables internes
SY-TPAGI Code indiquant si table interne dans bloc de pagination
SY-TSTIS Utilisation interne
SY-TSTLO Horodatage (date et heure) se rfrant l'utilisateur
SY-TSTUT Horodatage (date et heure) se rfrant UTC (GMT)
SY-TTABC N de la dernire ligne lue d'une table interne
SY-TTABI Dcalage de la table interne dans le roll area
SY-TVAR0 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR1 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR2 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR3 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR4 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR5 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR6 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR7 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR8 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TVAR9 RUNTIME : variable texte pour lments de texte ABAP/4
SY-TZONE Dcalage horaire par rapport au temps GMT (en secondes)
SY-UCOMM INTERACT.: Saisie fonction dans code OK
SY-ULINE CONSTANT : soulignement ( ...)
SY-UNAME SESSION : Nom de l'utilisateur de la session SAP
SY-UZEIT SYSTEME: Heure
SY-VLINE CONSTANT : barre verticale
SY-WAERS T001 : devise socit aprs lecture du segment B
SY-WILLI Numro de ligne de la fentre active
Zones systme
Cours ABAP.doc Page 13 sur 181
SY-WINCO Position curseur dans fentre(colonne)
SY-WINDI Index de la ligne de la fentre active
SY-WINRO Position curseur dans la fentre(ligne)
SY-WINSL INTERACT.: ligne de la fentre slectionne
SY-WINX1 Coordonnes de la fentre (colonne de gauche)
SY-WINX2 Coordonnes de la fentre (colonne de droite)
SY-WINY1 Coordonnes de la fentre (ligne de gauche)
SY-WINY2 Coordonnes de la fentre (ligne de droite)
SY-WTITL Indicateur pour intitul pages standard
SY-XCODE Code OK tendu
SY-XFORM Utilisation interne (form SY-STEM-EXIT)
SY-XPROG Utilisation interne (programme SY-STEM-EXIT)
SY-ZONLO Fuseau horaire de l'utilisateur
Types de donnes
Cours ABAP.doc Page 14 sur 181
TYPES DE DONNEES

Types de donnes ABAP/4, attributs et dition.



Type de
Donnes
Signification
Valeur
initiale
Longueur
Standard
Longueur
autorise
Exemple

P
I
F
N
C
D
T
X

Nombre pack
Entier
Virgule flottante
Texte numrique
Texte
Date (AAAAMMJJ)
Heure (HHMMSS)
hexadcimal

0
0
0.000
000
blanc
00000000
000000
X00

8
*
*
1
1
8
6
1

1-16
-
-
1-max
1-max
8
6
1-max

579, -713, 2.17
917, -882
25.873, 1.213E15', 17E-6
778, 87931
AXZ, B123, ABCD
19960221
105743
0FFF

Type de
Donnes
Longueur
ddition
Standard
Edition

P
I
F
N
C
D
T
X

2*LZ
(*)
22
LZ
LZ
8
6
2*LZ

Justifi droite
Justifi droite
Justifi droite
Justifi gauche
Justifi gauche
Justifi gauche
Justifi gauche
Justifi gauche

Dclaration
Cours ABAP.doc Page 15 sur 181
DECLARATION


Dclaration des donnes.


DATA : COUNTER TYPE I,
NAME1(25) VALUE SAP,
START_DATE TYPE D,
FIRST_LINE TYPE I VALUE 1,
SUM1(5) TYPE P DECIMALS 2.

RECOMMANDATION :
- Toujours utiliser une lettre comme premier caractre, les autres caractres pouvant tre des lettres et/ou des
chiffres.
- Le seul caractre spcial autoris est le soulign (_), lorsque les noms comprennent plusieurs mots.


Si aucun type nest spcifi, la zone est par dfaut de type C.

Si aucune longueur nest indique, la longueur standard du type sapplique.
Le paramtre VALUE permet de dterminer la valeur de dpart dune zone. Par dfaut, chaque zone est
paramtre sur une valeur initiale adapte au type. Les constantes ne sont pas autorises.

Loption DECIMALS permet dindiquer le nombre de dcimales (option rserve au type P ou 14 dcimales
sont autorises).

Dclaration de type.

TYPES : MYTYPE TYPE I,
NAME1(25),
DATE1 LIKE sy-datum, : LIKE permet davoir des donnes de mme structure quune
donne connue.
SUM_FIELD TYPE P DECIMALS 2.

Les conventions dattribution de nom sont identiques celles des Dclarations de donnes.
Pour lutilisation de type voir Dclaration de zones similaire.

Les tables

- Dclaration dans le programme : TABLES: Znommatab1, nomtabsyst1, nomtabsyst2.,
- il existe des tables systmes (TSTC, ICON, TCURX, SYST, TO06, etc.) et des tables internes (qui
n'existent que durant l'excution du programme),
- en double cliquant sur le nom dune table systme, on accde sa structure dans le dico,
- on peut crer un type de table :
TYPE: BEGIN OF TYPTAB1,
,
END OF TYPTAB1.
DATA: NOMTAB1 TYPE TYPTAB1 OCCURS N. o OCCURS permet d'allouer en
mmoire n lignes pour cette table. Si N vaut 0, le systme alloue dynamiquement l'espace
mmoire, au fur et mesure du remplissage de la table,
- une dclaration sans l'instruction OCCURS permet de dclarer une structure de table. Il n'y aura
pas dallocation mmoire.

Dclaration
Cours ABAP.doc Page 16 sur 181
Dclaration des structures de zones.

DATA : BEGIN OF TABINT OCCURS 0, : Dbut de la structure.

FLAG TYPE C,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,

END OF TABINT. : Fin de la structure.

Le paramtre OCCURS indique au systme lespace mmoire quil doit allouer la table interne.
0 est le paramtre qui indique au systme que lon ne sait pas combien il y a de lignes prvoir pour la table
interne dans ce cas le systme alloue des blocs de 8 et 16 Ko de mmoire et sadapte aux lignes de la table.


DATA : BEGIN OF TABINT OCCURS 0, : Dbut de la structure.

INCLUDE STRUCTURE SFLIGHT. : Cration dune table interne tant la copie des noms des
champs de sflight.

DATA : END OF TABINT. : Fin de la structure.


Dclaration de zones similaire.

TYPE : NAMETYPE1 LIKE SCUSTOM-NAME,
NAMETYPE2(25).
DATA : NAME1 TYPE NAMETYPE1,
NAME2 TYPE NAMETYPE2,
NAME3 LIKE NAME1.


Le paramtre LIKE permet de dclarer des zones dotes des mmes attributs quune zone prcdemment
dfinie.

La zone de rfrence peut-tre une zone interne ou une zone de base de donnes.

Le paramtre LIKE aide crer des programmes facilement modifiables car il vous suffit de corriger les
attributs un seul endroit.

Ce paramtre peut-tre galement utilis lorsque vous dfinissez des types avec linstruction TYPES.

Oprations sur les variables
Cours ABAP.doc Page 17 sur 181

OPERATIONS SUR LES VARIABLES

Affectation de valeurs.

DATA : NAME1(25),
SORT_NAME(10),
FIRST_LINE(4) TYPE N,
NEXT_LINE TYPE I.
.
.
.
MOVE SAP TO NAME1.
MOVE 5 TO FIRST_LINE.
COMPUTE NEXT_LINE = FIRST_LINE + 1.
SORT_NAME = NAME1.
ADD 1 TO NEXT_LINE.

Pour attribuer des valeurs des zones il existe des instructions ABAP/4, dont les plus importantes sont MOVE
et COMPUTE (cette dernire est facultative).

En cas dincohrence de longueur ou de type entre la zone et la valeur attribue, le systme effectue une
comparaison automatique.

Pour effectuer des oprations arithmtiques simples , vous pouvez galement utiliser les instructions ADD,
SUBTRACT, MULTIPLY et DIVIDE.

Expressions arithmtiques.

DATA : COUNTER TYPE I,
AMOUNT TYPE P VALUE 1000,
SUM TYPE P,
RESULT TYPE P,
NUMBER(2) TYPE C VALUE 99,
ROOT TYPE F.

COMPUTE : COUNTER = COUNTER + 2 ,
RESULT = AMOUNT * COUNTER.

SUM = RESULT + NUMBER COUNTER.
RESULT = COUNTER * ( AMOUNT + NUMBER ).
ROOT = SQRT ( NUMBER + COUNTER ).

Le mot cl COMPUTE est facultatif.
Vous pouvez imbriquer autant dexpressions entre parenthses que vous le souhaitez.
Chaque oprateur et parenthse sont interprts comme un mot, aussi devez-vous les sparer par des blancs, sauf
les parenthses ouvrantes des fonctions qui doivent apparatre juste ct du nom.
Par exemple : SQRT( )
Incorrect : a = (B+EXP(C))*E/SIN(3-G).
Correct : a = ( B + EXP( C ) ) * E / SIN( 3 G ).

Les valeurs non numriques sont automatiquement converties en valeurs numriques avant lexcution de toute
opration arithmtique.

Les oprateurs DIV et MOD renvoient un rsultat entier.
La fonction STRLEN retourne la longueur dune chane de caractres.
Oprations sur les variables
Cours ABAP.doc Page 18 sur 181
Seules les expressions arithmtiques peuvent tre utilises conjointement avec linstruction COMPUTE.

Liste des fonctions :
SQRT, EXP, LOG, SIN, COS, STRLEN, TAN

Oprateurs :

ADD 1 TO var. SUBTRACT 1 FROM var. MULTIPLY 1 BY var DIVIDE 1 BY var.

Sous-zones.

Elles permettent de ne traiter quune partie d'une chane de caractres donne.

DATA : ACCOUNT(10) TYPE C,
START LIKE SY-DATUM.

ACCOUNT = 1234567890.
START = 19950715.

WRITE : ACCOUNT+8(2), **, : Prend les 2 chiffres aprs les 8 premiers et crit les chiffres.

START(4). : Prend tous les chiffres aprs les 4 premiers.

START+6(2) = 01. : Copie 01 sur les 2 chiffres suivant les 6 premiers.

ACCOUNT+6 = 9999. : Copie 9999 aprs les 6 premiers.

WRITE: / ACCOUNT, ****, START.

Oprations de chane..

F1 F2 F3 G
CONCATENATE F1 F2 F3 INTO G




Valeur de code retourne pour CONCATENATE :
Sy-subrc = 0 : Le rsultat tient dans la zone cible.
Sy-subrc = 4 : Le rsultat est trop long pour la cible, seule la longueur dfinie est transfre.


Oprations sur les variables
Cours ABAP.doc Page 19 sur 181

F1 F2 F3 G
SPLIT G AT SPACE INTO F1 F2 F3





Valeur de code retourne pour SPLIT :
Sy-subrc = 0 : Toutes les zones cibles sont suffisamment longues.
Sy-subrc = 4 : Lune des zones cible est trop courte.

Parmi les autres commandes de traitement de chanes, citons SEARCH, SHIFT, REPLACE, TRANSLATE et
CONDENSE.

Oprateurs relationnels.


Oprateur Signification

EQ =
NE <> ><
GT >
GE >= =>
LT <
LE <= =<


Egal
Diffrent
Suprieur
Suprieur ou gal
Infrieur
Infrieur ou gal

BETWEEN f1 AND f2
IS INITIAL

Plage
Valeur initiale

Oprateurs conditionnels
Cours ABAP.doc Page 20 sur 181

OPERATEURS CONDITIONNELS

Instruction IF.
Instruction CASE.

IF <expression logique>.


ELSEIF <expression logique>.


ELSEIF <expression logique>.


ELSE.


ENDIF.
Si lexpression logique
est vraie le traitement de
IF seffectue sinon le
traitement du
programme continu
aprs ENDIF
Si lexpression logique est
fausse les instructions
contenues dans ELSE sont
excutes
ELSEIF permet de mettre autant
de condition que lon veut
INSTRUCTIONS
INSTRUCTIONS
INSTRUCTIONS
INSTRUCTIONS
IF <expression logique>.


ENDIF.
INSTRUCTIONS
IF <expression logique>.


ELSE.


ENDIF.

INSTRUCTIONS
INSTRUCTIONS
CASE <zone>.
WHEN <valeur>.


WHEN <valeur2>.


WHEN OTHERS.


ENDCASE.
Une seule squence
dinstructions est traite.

Linstruction WHEN
OTHERS est facultative.

Une seule valeur peut suivre
WHEN. Cette valeur peut
tre une constante ou le
nom de la zone contenant la
valeur.
INSTRUCTIONS
INSTRUCTIONS
INSTRUCTIONS
Oprateurs conditionnels
Cours ABAP.doc Page 21 sur 181
Boucle DO.

DO <n> TIMES.



ENDDO.






Boucle WHILE :

WHILE <Expression logique>.



ENDWHILE.

Instruction CHECK.

CHECK <expression logique>.

Si une instruction CHECK se trouve lintrieur dune structure de boucle et que lexpression logique est
fausse, alors on sort de la boucle.
Si linstruction se trouve en dehors dune structure de boucle et que lexpression logique est fausse, alors le
traitement du programme prend fin.

Instruction EXIT.

IF <expression logique>.
EXIT.
ENDIF.

Si une instruction EXIT se trouve lintrieur dune structure de boucle et que lexpression logique est vraie,
alors on sort de la boucle.
Si linstruction se trouve en dehors dune structure de boucle et que lexpression logique est vraie, alors le
traitement du programme prend fin.

Instruction STOP.

Aprs une instruction STOP, le systme termine le traitement du programme. Contrairement linstruction
EXIT, le traitement END-OF-SELECTION est effectu sil existe.

Instructions
Vous pouvez indiquez le nombre de passages de boucles dans une constante
ou une zone.
Le paramtre <n> TIMES est facultatif.
Si vous ne le formulez pas noubliez pas de mettre une instruction de fin
de boucle.
Il est possible dimbriquer des instructions de boucles.
Le nombre de passages nest pas modifiable dans la zone systme
sy-index.
Instructions
Tant que lexpression logique est vrai les
instructions sont excutes.
Les tables
Cours ABAP.doc Page 22 sur 181

LES TABLES

Remplir une table la main

Si la case cocher "sm30 sm31" t coche, faire Utilitaire Saisie entre - Remplir les zones et faire F11
pour enregistrer la ligne de donnes.

Consulter les donnes dune table la main

Faire Utilitaire Contenu de table, puis cliquer sur pour afficher les donnes stockes dans la table. Il faut
faire une sauvegarde suite chaque ligne entre.

Remplissage des tables internes.

MOVE zone par zone.

DATA : BEGIN OF TABINT,
FLAG TYPE C,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
PRICE LIKE SFLIGHT-PRICE,

END OF TABINT.

SELECT * FROM SFLIGHT
MOVE-CORRESPONDING SFLIGHT TO TABINT. :
ENDSELECT.

Il est possible aussi de faire :

SELECT * FROM SFLIGHT
MOVE SFLIGHT TO TABINT. :
ENDSELECT.

Si lon ne souhaite faire la copie de quelques zones :

SELECT * FROM SFLIGHT
MOVE SFLIGHT-CARRID TO TABINT-CARRID.
MOVE SFLIGHT-CONNID TO TABINT-CONNID.
ENDSELECT.

Transfre les valeurs de
SFLIGHT dans TABINT.
Le transfert nest possible
que si les noms de zones
sont identiques.
Si et seulement si toutes les zones
ont mme structure et mme nom.
Cette instruction est plus rapide que
celle vue prcdemment.
Les tables
Cours ABAP.doc Page 23 sur 181
APPEND.

SELECT * FROM SFLIGHT
MOVE SFLIGHT TO TABINT.
APPEND TABINT. :
ENDSELECT.



SELECT * FROM SFLIGHT
MOVE SFLIGHT TO TABINT.
APPEND TABINT SORTED BY CARRID. :
ENDSELECT.

Cest le paramtre OCCURS qui dtermine le nombre maximal dentres dans la table.
Si la table est sature, les entres qui se trouvent en fin de table sont jectes.

COLLECT.

SELECT * FROM SFLIGHT
MOVE SFLIGHT TO TABINT.
COLLECT TABINT. :
ENDSELECT.

SELECT * FROM <tab> INTO TABLE <tabint>

Avec INTO TABLE, on fait la slection que lon met directement dans la table interne.
Le WHERE se fait aprs, si besoin est.

Tri des tables internes.

SORT TABINT BY PRICE ASCENDING
FLDATE DESCENDING. :


Le paramtre ASCENDING est facultatif.
On peut effectuer un tri sur toute une table en crivant :
SORT tabint.

APPEND ajoute le contenu de la ligne den-tte la fin de
la table interne.
APPEND <tabint> SORTED
BY <zone> permet de gnrer
des listes ranges en ordre
dcroissant.

COLLECT ajoute le contenu de la ligne den-tte
dune table interne, crant ainsi une nouvelle entre,
ou lajoute une entre existante de mme type.
Tri la table suivant la zone PRICE suivant
lordre croissant et la zone FLDATE suivant
lordre dcroissant.
Les tables
Cours ABAP.doc Page 24 sur 181
Traitement des tables internes.

LOOP AT <tabint> ENDLOOP.

LOOP AT <tabint>.



ENDLOOP.

LOOP AT <tabint> WHERE <condition> ENDLOOP.

LOOP AT <tabint> WHERE <expression logique>.



ENDLOOP.


LOOP AT <tabint> AT ENDAT. ENDLOOP.

AT FIRST ENDAT.

Le bloc de traitement entre AT FIRST et ENDAT est excut avant le dbut du traitement des lignes dtails.

AT NEW ENDAT.

Linstruction AT NEW est utilise pour slectionner les en-ttes dans une zone.
AT NEW est excut ds le premier tour dans la boucle.

AT END OF ENDAT.

Linstruction AT END OF est utilise pour slectionner les bas de page dans une zone.

AT LAST ENDAT.

Le bloc de traitement entre AT LAST et ENDAT est excut la fin du traitement des lignes dtails.

Lecture des entres des tables internes.

READ TABLE <tabint> WITH KEY

READ TABLE tabint WITH KEY LH 0400.

Permet de lire la premire entre de la table interne dont les cls sont gales LH 0400.
Si laccs sest bien pass alors SY-SUBRC vaut 0, sinon une autre valeur est retourne.

READ TABLE <tabint> INDEX <i>.

Permet de lire la ligne i de la table interne.
Si laccs sest bien pass alors SY-SUBRC vaut 0, sinon une autre valeur est retourne.

Instructions
A chaque itration de la boucle les
instructions sont effectues et le systme
place lentre suivante dans la ligne den-tte.

Instructions
La condition WHERE permet de test
lentre de la table interne.
Si aucune entre ne satisfait lexpression
logique alors SY-SUBRC est positionn 0.
Les tables
Cours ABAP.doc Page 25 sur 181
Modification des tables.

INSERT <tab> INDEX <i>.

Linstruction gnre une nouvelle entre de la table prcdant lentre i partir de la ligne den-tte.

MODIFY <tab> IDEX <i>.

Linstruction remplace lentre de la table i par le contenu de la ligne den-tte. Lentre i doit dj exister.

DELETE.

DELETE <tab> INDEX <i>.

Linstruction supprime lentre de la table i.

DELETE <tab> WHERE

Dans ce cas linstruction DELETE ne sapplique exclusivement aux entre de la table qui satisfont la condition.

DELETE <tab> FROM <n1> TO <n2>.

Dans ce cas toutes les entres allant de n1 n2 sont supprimes, y compris les limites de lintervalle.
Si vous ne spcifi FROM ou TO dans une instruction DELETE, soit toutes les entres de n1 la fin seront
supprimes, soit toutes les entres depuis le dbut jusqu n2 le seront.

UPDATE

UPDATE <dbtab> FROM <wa>.
UPDATE <dbtab>.
UPDATE <dbtab> SET <S1><Sn> WHERE <condition>.
UPDATE <dbtab> FROM TABLE <itab>.

Pour modifier une ou plusieurs lignes dans une table de base de donnes, utilisez lune des variantes suivantes de
la commande UPDATE :
Variante 1 : Le contenu de la chane de zones <wa> crase la ligne de la base de donnes <dbtab> qui a la
mme cl primaire que <wa>.
Variante 2 : Aucune chane de zones <wa> nest indique. LUPDATE est effectu sur le contenu courant de la
zone de la table de travail <dbtab>.
Variante 3 : Dans la liste <S1><Sn> de la clause SET, les colonnes des lignes mettre jour sont indiques
et les valeurs attribues. La clause WHERE indique la condition qui sapplique aux lignes mettre jour (en
labsence de clause WHERE, toutes les lignes sont mises jour).
Variante 4 : Toutes les lignes de la table interne <itab> crasent les lignes de la base de donnes avec la mme
cl primaire.

Les tables
Cours ABAP.doc Page 26 sur 181
Suppression des tables.

CLEAR <tab>.

Linstruction CLEAR <tab> initialise toutes les zones de la ligne den-tte selon leur type.

REFRESH <tab>.

Linstruction REFRESH <tab> supprime toutes les entres de la table mais lespace mmoire utilis par la table
nest pas libr. La ligne den-tte reste inchange.

FREE <tab>.

Linstruction FREE <tab> libre lespace mmoire utilis par la table. La ligne den-tte reste inchange.

Les stocks de donnes intermdiaires

Encore appels FIELD-GROUPs, ils vitent la redondance des donnes dans le cas dutilisation de plusieurs
tables. (page 3-15 du BC405)

Instructions SELECT
Cours ABAP.doc Page 27 sur 181

INSTRUCTIONS SELECT

Instruction select 1.

TABLES : SBOOK. : Linstruction : tables permet dappeler les tables systme.

SELECT * FROM SBOOK. : Permet de lire toutes les entres de la table.

WRITE :/ SBOOK-CARRID, SBOOK-CONNID. : Affiche les champs de la table.

ENDSELECT. Fin de la boucle SELECT.

Instruction select 2.

TABLES : SBOOK.

SELECT * FROM SBOOK WHERE CARRID = LH . : Le paramtre WHERE permet de limiter
en lecture le nombre dentres de la table.
<instructions>.

ENSELECT.

IF SY-SUBRC NE 0. :

<instructions>.

ENDIF. : Fin de la boucle IF.


SELECT * FROM <tab> INTO TABLE <tabint> FOR ALL
ENTRIES IN <tabint2>.

EXEMPLE :
SELECT * FROM SFLIGHT
INTO TABLE TABINT
WHERE CARRID

SELECT * FROM SBOOK
INTO TABLE TABINT2
FOR ALL ENTRIES IN TABINT
WHERE CARRID

Maximum minimum

SELECT MAX( DISTANCE )
MIN( DISTANCE )
COUNT( * )
FROM SPFLI INTO
( MAXFIELD, MINFIELD, COUNTER ).

Si aucune entres de la table ne satisfait la condition WHERE,
la valeur code retourn de la zone systme SY-SUBRC est
positionne sur une valeur diffrente de 0.
Les bases de donnes logiques
Cours ABAP.doc Page 28 sur 181
LES BASES DE DONNEES LOGIQUES

Les bases de donnes logiques

On y accde dans ABAP/4 Workbench outils dveloppement environnement BD logique ou grce la
transaction SE36.

Usage: les bases de donnes logiques (BDL) reprsentent des regroupements de tables comportant une logique
d'excution ralisant l'extraction des donnes dsires. Cela permet de rduire considrablement un programme,
ce dernier n'ayant qu' faire un simple appel cette BDL pour en obtenir les donnes.

Structure: une BDL se prsente comme une arborescence de tables ayant des champs de cl en commun. La
premire table de la BDL est appele le nud de la table. A chaque nouvelle table de la BDL, un ou plusieurs
champs se rajoutent la cl (cf. l'exemple ci-dessous). Une BDL contient les 5 objets suivants :
Structure son arborescence,
Slection dclaration de l'cran de slection,
Programme de la BD dclaration de la logique d'excution de la BDL,
Texte de slection dclaration des textes de slection des paramtres,
Slection matchcode dclaration des objets de matchcodes.

Utilisation: on ne peut utiliser une base de donne logique que dans les reports de type 1, application *.
L'utilisation de la BDL (nom de trois lettres) est renseigne dans les attributs du programme. Il faut alors
dclarer dans l'instruction tables le nom des tables de la BDL que l'on va utiliser. Puis, dans le programme
ABAP/4, on fait un unique appel chaque table au moyen de l'instruction get.
get Table1 fields Champ1 Champ 2 Champn.

Remarque: un programme ne peut faire appel qu' une seule BDL. En revanche, une BDL peut tre utilise par
plusieurs programmes.

Acquisition de donnes laide dune base de donne logique.

TABLES : SPFLI, SFLIGHT, SBOOK.

GET SPFLI.



GET SFLIGHT.



GET SBOOK FIELDS BOOKID CUSTOMID.

Traitement SPFLI
Traitement SFLIGHT
Lvnement GET assure la liaison entre le traitement du
programme et la base de donnes logique.
Si la base de donnes logique prvoit pour la table une
slection par zones, vous pouvez spcifier pour les
vnements GET uniquement les zones ncessaires au
traitement en rajoutant FIELDS <zone1><zone2>.
Les bases de donnes logiques
Cours ABAP.doc Page 29 sur 181

La structure de la base de donnes logique F1S est la suivante :



Le programme associ la BDL F1S est le suivant :

*-------------------------------------------------------------------------------*
* DATABASE PROGRAM OF LOGICAL DATABASE F1S *
*-------------------------------------------------------------------------------*
* *
* The automatically generated subroutines (FORMs) are called by
* system routines. Therefore their names must not be changed!!!
*
* If the source code is automatically generated,
* please perform the following steps:
* 1. Replace ? by suitable ABAP statements.
* 2. Activate ABAP statements (delete stars).
* 3. Save source code.
* 4. Check syntax of database program.
* SELECT-OPTIONS and PARAMETERS will be checked automatically.
*--------------------------------------------------------------------*
*--------------------------------------------------------------------*
* Performance notes
*--------------------------------------------------------------------*
* General information about the use of logical databases is contained
* in the extended help information of transaction SE36.
* Please consider in particular the following aspects:
* 1. Use of internal tables:
* SELECT * FROM table INTO TABLE i_table WHERE ... .
* LOOP AT i_table.
* MOVE-CORRESPONDING table TO i_table.
* PUT table.
* ENDLOOP.
* 2. Use of OPEN/FETCH CURSOR for nested structures.
* 3. Use of dynamic selections to enable further selection criteria
* (cf. documentation of SELECTION-SCREEN DYNAMIC SELECTIONS).
* 4. Authority checks already at PAI of selection screen.
*--------------------------------------------------------------------*

Les bases de donnes logiques
Cours ABAP.doc Page 30 sur 181
PROGRAM SAPDBF1S DEFINING DATABASE F1S MESSAGE-ID AT.

TABLES: SPFLI,
SFLIGHT,
SBOOK,
SCARR.

RANGES S_FLID FOR SPFLI-CONNID.
RANGES R_CARRID FOR SPFLI-CARRID.

DATA: LINNO TYPE I. " Counter for internal table lines




***************************************************************************
* !!! PLEASE DO NOT CHANGE MANUALLY (BEGIN OF BLOCK) !!!!!!!!!!!! *
*--------------------------------------------------------------------------------------------------------- ----*
* Data structures for matchcode selection *
*------------------------------------------------------------------------------------------------------------- *
* F1S_MC: Matchcode values. *
* After START-OF-SELECTION table F1S_MC is filled *
* with all keys of entries of the matchcode table *
* which correspond to the search string on the selection screen. *
* There must be defined a parameter for matchcode selection *
* (e.g. PARAMETER p_mc AS MATCHCODE STRUCTURE FOR TABLE LFA1), *
* and the user must have filled all fields on the selection-screen *
* (i.e. p_mc-NAME and p_mc-STRING), *
* Table F1S_MC will be used in subroutine PUT_F1S_MATCHCODE. *
*------------------------------------------------------------------------------------------------------------- *
* DATA: BEGIN OF F1S_MC OCCURS 1000, *
* SPFLI_MANDT LIKE SPFLI-MANDT, *
* SPFLI_CARRID LIKE SPFLI-CARRID, *
* SPFLI_CONNID LIKE SPFLI-CONNID, *
* END OF F1S_MC. *
*------------------------------------------------------------------------------------------------------------- *
* MC_FIELDS: Matchcode fields. *
* After matchcode selection the table MC_FIELDS is modified: *
* MC_FIELDS-SUPPLIED NE SPACE if and only if the field *
* MC_FIELDS-FIELDNAME of F1S_MC, e.g. F1S_MC-LFA1_LIFNR, *
* is supplied by the matchcode interface. *
*------------------------------------------------------------------------------------------------------------- *
* DATA: BEGIN OF MC_FIELDS OCCURS 10. *
* INCLUDE STRUCTURE RSMCFIELDS. *
* DATA: END OF MC_FIELDS. *
*------------------------------------------------------------------------------------------------------------- *
* MC_TABLES: Matchcode tables. *
* After matchcode selection the table MC_TABLES is modified: *
* MC_TABLES-SUPPLIED NE SPACE if and only if the keys of table *
* MC_TABLES-TABNAME are supplied by the matchcode interface. *
*------------------------------------------------------------------------------------------------------------- *
* DATA: BEGIN OF MC_TABLES OCCURS 10. *
* INCLUDE STRUCTURE RSMCTABS. *
* DATA: END OF MC_TABLES. *
*------------------------------------------------------------------------------------------------------------- *
* !!! PLEASE DO NOT CHANGE MANUALLY (END OF BLOCK) !!!!!!!!!!!!!!!!! *
***************************************************************************
*------------------------------------------------------------------------------------------------------------- *
* BEFORE_EVENT will be called before event EVENT *
* Possible values for EVENT: 'START-OF-SELECTION' *
Les bases de donnes logiques
Cours ABAP.doc Page 31 sur 181
*------------------------------------------------------------------------------------------------------------- *
* FORM BEFORE_EVENT USING EVENT. *
* CASE EVENT. *
* WHEN 'START-OF-SELECTION' *
* *
* ENDCASE. *
* ENDFORM. "BEFORE_EVENT *
*------------------------------------------------------------------------------------------------------------- *
* AFTER_EVENT will be called after event EVENT *
* Possible values for EVENT: 'END-OF-SELECTION' *
*------------------------------------------------------------------------------------------------------------- *
* FORM AFTER_EVENT USING EVENT. *
* CASE EVENT. *
* WHEN 'END-OF-SELECTION' *
* *
* ENDCASE. *
* ENDFORM. "AFTER_EVENT *
*------------------------------------------------------------------------------------------------------------- *
* Initialize selection screen (processed before PBO) *
*------------------------------------------------------------------------------------------------------------- *
FORM INIT.

ENDFORM "INIT.

*-------------------------------------------------------------------------------------------------------------*
* PBO of selection screen (processed always after ENTER) *
*------------------------------------------------------------------------------------------------------------- *
FORM PBO.
CLEAR: S_FLID, LINNO.
REFRESH S_FLID.
ENDFORM. "PBO.

*------------------------------------------------------------------------------------------------------------- *
* PAI of selection screen (processed always after ENTER) *
*-------------------------------------------------------------------------------------------------------------*

FORM PAI USING FNAME MARK.

CASE FNAME.
WHEN 'CARRID'.
SELECT* FROM SCARR
WHERE CARRID IN CARRID.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD SCARR-CARRID
ID 'ACTVT' DUMMY.
IF SY-SUBRC EQ 0.
R_CARRID-SIGN = 'I'.
R_CARRID-OPTION = 'EQ'.
R_CARRID-LOW = SCARR-CARRID.
APPEND R_CARRID.
ELSE.
MESSAGE E045 WITH SCARR-CARRID.
* Keine Berechtigung fr Fluggesellschaft & *
ENDIF.
ENDSELECT.

WHEN '*'.
IF CITY_FR NE SPACE AND CITY_TO EQ SPACE.
SELECT * FROM SPFLI WHERE CITYFROM EQ CITY_FR.
PERFORM FILL_S_FLID.
Les bases de donnes logiques
Cours ABAP.doc Page 32 sur 181
ENDSELECT.
PERFORM VALID_ID.
ELSEIF CITY_FR EQ SPACE AND CITY_TO NE SPACE.
SELECT * FROM SPFLI WHERE CITYTO EQ CITY_TO.
PERFORM FILL_S_FLID.
ENDSELECT.
PERFORM VALID_ID.
ELSEIF CITY_FR NE SPACE AND CITY_TO NE SPACE.
PERFORM BBB. "Better by bus
SELECT * FROM SPFLI WHERE CITYTO EQ CITY_TO
AND CITYFROM EQ CITY_FR.
PERFORM FILL_S_FLID.
ENDSELECT.
PERFORM VALID_ID.
ENDIF.

ENDCASE.

ENDFORM. "PAI

*------------------------------------------------------------------------------------------------------------- *
* Call event GET SPFLI *
*------------------------------------------------------------------------------------------------------------- *

FORM PUT_SPFLI.

DATA L_WHERE TYPE RSDS_WHERE.
DATA L_TAB_FIELDS TYPE RSFS_TAB_FIELDS.

*Ansprechen der Tabelle *
MOVE 'SPFLI' TO L_WHERE-TABLENAME.

*Ausgewhlte Felder der Tabelle + Werte *
READ TABLE DYN_SEL-CLAUSES WITH KEY L_WHERE-TABLENAME INTO L_WHERE.

* Feldselektion *
MOVE 'SPFLI' TO L_TAB_FIELDS-TABLENAME.
READ TABLE SELECT_FIELDS WITH KEY L_TAB_FIELDS-TABLENAME
INTO L_TAB_FIELDS.
SELECT (L_TAB_FIELDS-FIELDS)
INTO CORRESPONDING FIELDS OF SPFLI FROM SPFLI
WHERE CARRID IN CARRID
AND CONNID IN S_FLID
AND (L_WHERE-WHERE_TAB) ORDER BY PRIMARY KEY.

* Hauswhrung *
SELECT SINGLE * FROM SCARR WHERE CARRID EQ SPFLI-CARRID.
PUT SPFLI.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE S038.

* Zu dieser Selektion existieren keine Daten, bitte Neueingabe. *
ENDIF.
ENDFORM. "PUT_SPFLI

*------------------------------------------------------------------------------------------------------------- *
* Call event GET SFLIGHT *
*-------------------------------------------------------------------------------------------------------------*
FORM PUT_SFLIGHT.
Les bases de donnes logiques
Cours ABAP.doc Page 33 sur 181

DATA L_TAB_FIELDS TYPE RSFS_TAB_FIELDS.

MOVE 'SFLIGHT' TO L_TAB_FIELDS-TABLENAME.
READ TABLE SELECT_FIELDS WITH KEY L_TAB_FIELDS-TABLENAME
INTO L_TAB_FIELDS.
SELECT (L_TAB_FIELDS-FIELDS)
INTO CORRESPONDING FIELDS OF SFLIGHT FROM SFLIGHT
WHERE CARRID = SPFLI-CARRID
AND CONNID = SPFLI-CONNID
AND FLDATE IN FLDATE ORDER BY PRIMARY KEY.
PUT SFLIGHT.
ENDSELECT.

ENDFORM. "PUT_SFLIGHT

*-------------------------------------------------------------------------------------------------------------*
* Call event GET SBOOK *
*------------------------------------------------------------------------------------------------------------- *
FORM PUT_SBOOK.

DATA L_TAB_FIELDS TYPE RSFS_TAB_FIELDS.

MOVE 'SBOOK' TO L_TAB_FIELDS-TABLENAME.
READ TABLE SELECT_FIELDS WITH KEY L_TAB_FIELDS-TABLENAME
INTO L_TAB_FIELDS.

SELECT (L_TAB_FIELDS-FIELDS)
INTO CORRESPONDING FIELDS OF SBOOK FROM SBOOK
WHERE CARRID = SFLIGHT-CARRID
AND CONNID = SFLIGHT-CONNID
AND FLDATE = SFLIGHT-FLDATE
AND BOOKID IN BOOKID ORDER BY PRIMARY KEY.
PUT SBOOK.
ENDSELECT.

ENDFORM. "PUT_SBOOK

*------------------------------------------------------------------------------------------------------------- *
* Authority Check for table SPFLI *
*------------------------------------------------------------------------------------------------------------- *
* FORM AUTHORITYCHECK_SPFLI. *
* *
* AUTHORITY-CHECK OBJECT 'S_CARRID' *
* ID 'CARRID' FIELD SPFLI-CARRID *
* ID 'ACTVT' DUMMY. *
* *
* ENDFORM. "AUTHORITYCHECK_SPFLI *
*---------------------------------------------------------------------------------------------------- ---------*
* Authority Check for table SAIRPORT *
*------------------------------------------------------------------------------------------------------------- *
* FORM AUTHORITYCHECK_SAIRPORT. *
* AUTHORITY-CHECK ... *
* ENDFORM. "AUTHORITYCHECK_SAIRPORT *
*------------------------------------------------------------------------------------------------------------- *
* Authority Check for table SFLIGHT *
*-------------------------------------------------------------------------------------------------------------*
* FORM AUTHORITYCHECK_SFLIGHT. *
* AUTHORITY-CHECK ... *
* ENDFORM. "AUTHORITYCHECK_SFLIGHT *
Les bases de donnes logiques
Cours ABAP.doc Page 34 sur 181
*-------------------------------------------------------------------------------------------------------------*
* Authority Check for table SBOOK *
*------------------------------------------------------------------------------------------------------------- *
* FORM AUTHORITYCHECK_SBOOK. *
* AUTHORITY-CHECK ... *
* ENDFORM. "AUTHORITYCHECK_SBOOK *
*------------------------------------------------------------------------------------------------------------- *
* PUT_F1S_MATCHCODE. *
* Processed when matchcode selection is used, *
* i.e. user input into PARAMETERS p_mc AS MATCHCODE STRUCTURE. *
*------------------------------------------------------------------------------------------------------------- *
FORM PUT_F1S_MATCHCODE.

DATA L_WHERE TYPE RSDS_WHERE OCCURS 100.
READ TABLE MC_TABLES WITH KEY 'SPFLI'.
IF MC_TABLES-SUPPLIED NE 'X'.
EXIT.
ENDIF.
SELECT * FROM SPFLI
FOR ALL ENTRIES IN F1S_MC
WHERE CARRID = F1S_MC-SPFLI_CARRID
AND CONNID = F1S_MC-SPFLI_CONNID.
* AND (L_WHERE). *
PUT SPFLI.
ENDSELECT.


ENDFORM. " PUT_F1S_MATCHCODE

INCLUDE DBF1SF01.

Les bases de donnes logiques
Cours ABAP.doc Page 35 sur 181
Le programme concernant l'cran de slection de F1S est:

*------------------------------------------------------------------------------------------------------------- *
* INCLUDE DBF1SSEL *
* It will be automatically included into the database program. *
*------------------------------------------------------------------------------------------------------------- *
* *
* If the source code is automatically generated, *
* please perform the following steps: *
* 1. Replace ? by suitable names (at most 8 characters). *
* 2. Activate SELECT-OPTIONS and PARAMTERS (delete stars). *
* 3. Save source code. *
* 4. Edit database program *
* *
* Hint: Syntax-Check is not possible within this Include! *
* It will be checked during syntax-check of database program. *
* *
*------------------------------------------------------------------------------------------------------------- *


SELECTION-SCREEN BEGIN OF BLOCK ID WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS:
CARRID FOR SPFLI-CARRID.
* ? FOR SPFLI-CONNID. *
SELECTION-SCREEN END OF BLOCK ID.

* Parameter for matchcode selection (DD-structure MCPARAMS): *
PARAMETERS P_MC AS MATCHCODE STRUCTURE FOR TABLE SPFLI.

SELECTION-SCREEN BEGIN OF BLOCK FROM_TO WITH FRAME TITLE TEXT-002.
PARAMETERS: CITY_FR LIKE SPFLI-CITYFROM FOR TABLE SPFLI.
PARAMETERS: CITY_TO LIKE SPFLI-CITYTO FOR TABLE SPFLI.
SELECTION-SCREEN END OF BLOCK FROM_TO.
* SELECT-OPTIONS: ? FOR SAIRPORT-ID. *

SELECTION-SCREEN BEGIN OF BLOCK FLDATE WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS:
* ? FOR SFLIGHT-CARRID, *
* ? FOR SFLIGHT-CONNID, *
FLDATE FOR SFLIGHT-FLDATE.
SELECTION-SCREEN END OF BLOCK FLDATE.

SELECTION-SCREEN BEGIN OF BLOCK BOOKID WITH FRAME TITLE TEXT-004.

SELECT-OPTIONS:
* ? FOR SBOOK-CARRID, *
* ? FOR SBOOK-CONNID, *
* ? FOR SBOOK-FLDATE, *
BOOKID FOR SBOOK-BOOKID.
SELECTION-SCREEN END OF BLOCK BOOKID.

SELECTION-SCREEN FIELD SELECTION FOR TABLE:
SPFLI,
SFLIGHT,
SBOOK.

SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE SPFLI.
*selection-screen dynamic selections for table sairport. *

Les bases de donnes logiques
Cours ABAP.doc Page 36 sur 181
Les textes de slection concernant F1S:



Les matchcodes concernant la BDL F1S sont:


Les bases de donnes logiques
Cours ABAP.doc Page 37 sur 181
Un exemple de programme ZHENBDL1 rappelant la BDL F1S:

Attributs:



Le programme:

REPORT ZHENBDL1 NO STANDARD PAGE HEADING MESSAGE-ID ZG.

TABLES: SPFLI, SFLIGHT, SBOOK.

GET SPFLI FIELDS CARRID CONNID CITYFROM CITYTO DEPTIME ARRTIME FLTIME.

WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO,
SPFLI-DEPTIME, SPFLI-ARRTIME, SPFLI-FLTIME.

GET SFLIGHT FIELDS FLDATE PRICE CURRENCY.

WRITE: /10 SFLIGHT-FLDATE, SFLIGHT-PRICE CURRENCY SFLIGHT-CURRENCY,
SFLIGHT-CURRENCY.

GET SPFLI LATE.

ULINE.

GET SBOOK FIELDS BOOKID CUSTOMID CUSTTYPE.

WRITE: /20 SBOOK-BOOKID, SBOOK-CUSTOMID, SBOOK-CUSTTYPE.

Zones
renseigner
une fois le
programme
sauvegard.
Les bases de donnes logiques
Cours ABAP.doc Page 38 sur 181
Le rsultat l'cran:



Les bases de donnes logiques
Cours ABAP.doc Page 39 sur 181
Deuxime exemple avec la BDL KDF.
Programme:

REPORT ZHENBDL2 NO STANDARD PAGE HEADING.

TABLES: LFA1, LFB1, BSIK.

DATA: TOTAL LIKE BSIK-DMBTR,
FLAG TYPE C VALUE 'X'.

START-OF-SELECTION.

WRITE: / 'AFFICHAGE DES INFOS '.
CLEAR FLAG.

TOP-OF-PAGE.

CHECK FLAG IS INITIAL.
WRITE: / LFA1-LIFNR.

GET LFA1 FIELDS LIFNR NAME1 STRAS PSTLZ ORT01.
NEW-PAGE.
WRITE: / LFA1-NAME1.
WRITE: / LFA1-STRAS UNDER LFA1-NAME1, LFA1-PSTLZ, LFA1-ORT01.

GET LFB1 FIELDS BUKRS.
WRITE: / LFB1-BUKRS.
CLEAR TOTAL.

GET BSIK FIELDS AUGDT DMBTR.
WRITE: /10 BSIK-AUGDT, 30 BSIK-DMBTR.
ADD BSIK-DMBTR TO TOTAL.

GET LFB1 LATE.
WRITE: /45 'TOTAL:', TOTAL.
ULINE.

Les bases de donnes logiques
Cours ABAP.doc Page 40 sur 181
Jeu d'essai:





Traitement sbook
Ecran de slection
Cours ABAP.doc Page 41 sur 181
ECRAN DE SELECTION

SELECT-OPTION

SELECT OPTION <nom> FOR <zone>
DEFAULT <valeur1>
DEFAULT <valeur2> TO<valeur3>
MEMORY ID <id>
LOWER CASE
OBLIGATORY
NO EXTENSION
NO INTERVALS.

DEFAULT

Permet de paramtrer les valeurs par dfaut sur lcran de slection pour chaque critre de slection (valeur
isole ou intervalle).

MEMORY ID

Affecte des paramtres SPA/GPA. La valeur stocke dans la mmoire SPA/GPA sous lidentification id apparat
comme la valeur infrieure de lintervalle lorsque lcran de slection est appel.

LOWER CASE

Occulte la conversion des valeurs de saisie en majuscules.

NO-EXTENSION

Lutilisateur ne peut entrer quune seule valeur ou quun seul intervalle pour une slection donne.

NO-INTERVALS

Le systme naffiche pas de zone vers.

Dclaration des zones avec PARAMETERS

PARAMETERS <zone>.

Permet de dclarer une zone de saisie.
Lutilisation de DEFAULT, LOWER, CASE, OBLIGATORY est possible.

PARAMETERS <zone> AS CHECBOX .

Permet de faire des cases cocher. Les paramtres crs sont de type C et de longueur 1.
Les valeurs valables pour la zone peuvent tre " " ou "X".

PARAMETERS <zone> RADIOBUTTON GROUP.

Permet de mettre des boutons doptions. Les paramtres crs sont de type C et de longueur 1. Les valeurs
valables pour la zone peuvent tre " " ou "X".

Ecran de slection
Cours ABAP.doc Page 42 sur 181
SELECTION-SCREEN.

SELECTION-SCREEN BEGIN OF BLOCK <bloc>

SELECTION-SCREEN BEGIN OF BLOCK <bloc>
WITH FRAME
TITLE <titre>
SELECTION-SCREEN END OF BLOCK <bloc>

WITH FRAME

Permet de mettre un cadre autour du bloc.

TITLE

Mets un titre au bloc.

SELECTION-SCREEN BEGIN OF LINE

SELECTION-SCREEN BEGIN OF LINE
COMMENT <format> <nom>
POSITION <n>
SELECTION-SCREEN END OF LINE

SELECTION-SCREEN BEGIN OF LINE

Permet dditer sur une mme ligne plusieurs donnes.

COMMENT

Permet linsertion de commentaires.

POSITION

Permet de mettre les donnes o lon veut sur la ligne ddition.

AT SELECTION-SCREEN

AT SELECTION SCREEN
ON HELP-REQUEST FOR <psel_low_high>.
CALL SCREEN
ON VALUE-REQUEST FOR<psel_low_high>.
CALL SCREEN

ON HELP-REQUEST FOR

Lvnement est dclench lorsque lutilisateur se positionne sur le critre de slection et demande de laide
(F1).

Ecran de slection
Cours ABAP.doc Page 43 sur 181
ON VALUE-REQUEST FOR

Lvnement est dclench lorsque lutilisateur demande les entres possibles pour cette zone.

AT SELECTION SCREEN
ON <zone>.
ON RADIOBUTTON GROUP <grp>.
ON BLOCK <bloc>.

ON

Si une erreur se produit seule cette zone devient alors accessible.

ON BLOCK

Si une erreur se produit seules les zones de ce bloc deviennent alors accessibles
Cration d'crans de slections
Cours ABAP.doc Page 44 sur 181
Cration d'crans de slections.


Programme permettant la saisie d'un vol arien:

REPORT ZHENSCRE no standard page heading.

TABLES: SPFLI, SFLIGHT.

* Dbut de la zone de dclaration de l'cran de saisie. *

SELECTION-SCREEN BEGIN OF BLOCK SPFLI WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: BEGIN OF LINE,
COMMENT 1(7) TEXT-004, POSITION 10.
PARAMETERS: VILLEDEP LIKE SPFLI-CITYFROM OBLIGATORY.
SELECTION-SCREEN: COMMENT 40(9) TEXT-005, POSITION 52.
PARAMETERS: VILLEARR LIKE SPFLI-CITYTO OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK SPFLI.

SELECTION-SCREEN SKIP.

PARAMETERS: DATEVOL LIKE SFLIGHT-FLDATE.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK HORAIRES WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS HDEP FOR SPFLI-DEPTIME DEFAULT SY-UZEIT TO SY-UZEIT.
SELECT-OPTIONS HARR FOR SPFLI-ARRTIME DEFAULT SY-UZEIT.
SELECTION-SCREEN END OF BLOCK HORAIRES.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK TYPE WITH FRAME TITLE TEXT-003.
PARAMETERS: PRIVAT RADIOBUTTON GROUP CLIT,
BUSINESS RADIOBUTTON GROUP CLIT DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK TYPE.

SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN ULINE 25(30).
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE 30(20).
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE 35(10).

* Dbut du programme.

WRITE: / 'C''est parti mon Kiki'.
Cration d'crans de slections
Cours ABAP.doc Page 45 sur 181
Jeu d'essai correspondant:



Cration d'cran pour l'aide en ligne (touches F1 et F4)

Les crans pour l'aide en ligne se crent dans l'Object Browser, comme pour les pools de menu. Le cheminement
est:
Ouvrir le programme dans l'object Browser.
Crer un DYNPRO (Aide en ligne) pour afficher le message d'aide, en n'omettant pas de spcifier la
variable FCODE dans la "liste de zones".
Crer un STATUT GUI (MENU1100) en donnant un code de quatre lettres servant pour la variable
FCODE like SY-UCOMM.
Lier les deux dans le PBO (SET_PF_STATUS_1100).
Crer un module USER_COMMAND_1100, dans lequel on compare le FCODE.
Dans le programme principal, on fait l'appel l'cran d'aide en utilisant l'ensemble d'instruction
suivante:
- Pour F1
AT SELECTION-SCREEN ON HELP-REQUEST FOR VILLEARR.
CALL SCREEN 1100 STARTING AT 30 03 ENDING AT 70 10.
- Pour F4
AT SELECTION-SCREEN ON VALUE-REQUEST FOR VILLEARR.
CALL SCREEN 1100 STARTING AT 30 03 ENDING AT 70 10.
O VILLEARR reprsente le champ sur lequel porte l'aide.

Exemples d'utilisation:

REPORT ZHENSCRE no standard page heading message-id ZG.

TABLES: SPFLI, SFLIGHT.
DATA FCODE LIKE SY-UCOMM.
* Dclaration de l'cran de saisie. *

SELECTION-SCREEN BEGIN OF BLOCK SPFLI WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: BEGIN OF LINE,
COMMENT 1(7) TEXT-004, POSITION 10.
PARAMETERS: VILLEDEP LIKE SPFLI-CITYFROM OBLIGATORY.
SELECTION-SCREEN: COMMENT 40(9) TEXT-005, POSITION 52.
Cration d'crans de slections
Cours ABAP.doc Page 46 sur 181
PARAMETERS: VILLEARR LIKE SPFLI-CITYTO OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK SPFLI.

SELECTION-SCREEN SKIP.

PARAMETERS: DATEVOL LIKE SFLIGHT-FLDATE.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK HORAIRES WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS HDEP FOR SPFLI-DEPTIME DEFAULT SY-UZEIT TO SY-UZEIT.
SELECT-OPTIONS HARR FOR SPFLI-ARRTIME DEFAULT ' ' TO SY-UZEIT.
SELECTION-SCREEN END OF BLOCK HORAIRES.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK TYPE WITH FRAME TITLE TEXT-003.
PARAMETERS: PRIVAT RADIOBUTTON GROUP CLIT,
BUSINESS RADIOBUTTON GROUP CLIT DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK TYPE.

SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN ULINE 25(30).
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE 30(20).
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE 35(10).

* DEBUT DU PROGRAMME.
AT SELECTION-SCREEN ON HELP-REQUEST FOR VILLEARR.
CALL SCREEN 1100 STARTING AT 30 03 ENDING AT 70 10.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR VILLEARR.
CALL SCREEN 1200 STARTING AT 30 03 ENDING AT 70 10.
AT SELECTION-SCREEN ON DATEVOL.
IF DATEVOL LT SY-DATUM.
MESSAGE I016.
ENDIF.

END-OF-SELECTION.
WRITE: / 'C''est parti mon Kiki'.

* Fin du programme. *

INCLUDE ZHENSO01.

INCLUDE ZHENSI01.

Avec les includes suivants:

*----------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHENSI01 . *
*& Module USER_COMMAND_1100 INPUT *
*&---------------------------------------------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------------------------------------------- *
MODULE USER_COMMAND_1100 INPUT.
CASE FCODE.
WHEN 'OKAY'.
LEAVE TO SCREEN 0.
Cration d'crans de slections
Cours ABAP.doc Page 47 sur 181
WHEN 'ECIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_1100 INPUT
Et:
*----------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHENSO01 . *
*----------------------------------------------------------------------------------------------------------- *
*&--------------------------------------------------------------------------------------------------------- *
*& Module SET_PF_STATUS_1100 OUTPUT *
*&--------------------------------------------------------------------------------------------------------- *
* text *
*----------------------------------------------------------------------------------------------------------- *
MODULE SET_PF_STATUS_1100 OUTPUT.
SET PF-STATUS 'MENU1100'.
ENDMODULE. " SET_PF_STATUS_1100 OUTPUT

DYNPRO 1100 et DYNPRO 1200 (identiques dans le contenu):

PROCESS BEFORE OUTPUT.
* MODULE STATUS_1100. *

MODULE SET_PF_STATUS_1100.

PROCESS AFTER INPUT.
* MODULE USER_COMMAND_1100. *
MODULE USER_COMMAND_1100.


Cration d'crans de slections
Cours ABAP.doc Page 48 sur 181
Jeux d'essais:

Pour F1:


Pour F4:



Cration d'crans de slections
Cours ABAP.doc Page 49 sur 181
Pour les messages d'erreur



Remarques:

Imbrication d'cran
La cration d'un cran de slection est unique pour un programme. Il faut donc y faire apparatre toutes les
donnes ncessaires au bon fonctionnement du programme.
Il est cependant possible de faire appel un voir plusieurs autres crans de slections lors de l'appel des sous-
programmes externes possdant leur propre cran de slection. L'appel au sous-programme en forant le passage
par son cran de slection se fait grce l'instruction:
SUBMIT Sous-Programme VIA SELECTION-SCREEN AND RETURN.

Valeurs par dfaut
Il est possible, comme le montre le programme, d'affecter une variable par dfaut chaque type intervenant dans
les crans de slection (PARAMETERS, SELECT-OPTIONS, RADIOBUTTON, CHECKBOX). Il faut
cependant faire attention l'intervalle de valeurs donnes aux SELECT-OPTIONS, l'ordre croissant tant de
stricte rigueur.

Comments
Lors de l'criture de plusieurs paramtres sur une mme ligne, il faut bien faire attention ne pas faire dborder
les lments de la ligne, les paramtres disparaissant alors de l'cran, ce qui peut tre trs gnant.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 50 sur 181
Les vnements AT sous ABAP/4

AT Evnements dans les listes

Variantes: 1. AT LINE-SELECTION.
2. AT USER-COMMAND.
3. AT PFn.

Variante 1 AT LINE-SELECTION.

Cet vnement est trait lorsque l'utilisateur choisit une ligne valide dans la liste (c'est dire une ligne gnre
par une instruction comme WRITE, ULINE ou SKIP) avec la souris et appuie sur la touche fonction dfinie
avec le code fonction PICK dans la dfinition de l'interface. Cela correspondant gnralement la touche
fonction F2, car elle a le mme effet que le double click de la souris, ou le click simple dans le cas d'une touche
fonction.
Le traitement li l'vnement AT LINE-SELECTION gnre habituellement l'affichage d'une liste
complmentaire (liste dtaille) qui recouvre entirement l'affichage de la liste courante. Si vous voulez que cette
liste reste visible (pour faciliter la navigation de l'utilisateur), vous pouvez le faire grce au mot cl WINDOW.
Dans la plupart des cas, l'information issue de la ligne slectionne est utilise pour faire ressortir des
informations beaucoup plus dtailles par lecture directe. Lors de l'affichage de la liste originelle, vous
sauvegardez les mots cls ncessaires la navigation dans la zone HIDE de la ligne de sortie.

Note: on peut choisir une ligne et recommencer un nouveau traitement dans la liste dtaille. Les zones systme
suivantes sont trs utiles pour la navigation, car leurs valeurs voluent lors de chaque excution d'un vnement
interactif.
SY-LSIND Index de la liste cre par l'vnement courant (liste initiale = 0, 1re liste dtaille = 1, ...),
SY-PFKEY Statut de la liste affiche (SET PF-STATUS),
SY-LISEL Contenu de la ligne slectionne,
SY-LILLI Numro absolu de la ligne slectionne dans la liste affiche,
SY-LISTI Index de cette liste - habituellement SY-LSIND - 1 (READ LINE),
SY-CUROW Position du curseur: numro de la ligne dans la fentre,
SY-CUCOL Position du curseur: numro de la colonne dans la fentre (GET CURSOR),
SY-CPAGE 1
re
page cran de la liste affiche,
SY-STARO 1
re
ligne affiche de la page cran courante de la liste affiche,
SY-STACO 1
re
colonne affiche de la liste affiche (SCROLL LIST).

La zone systme SY-LSIND dfinit le niveau de slection de ligne (liste initiale: SY-LSIND = 0).

Exemple:
DATA TEXT(20).

START-OF-SELECTION.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.

AT LINE-SELECTION.
CASE TEXT.
WHEN 'List index'.
PERFORM WRITE_AND_HIDE USING 'X' SPACE.
WHEN 'User command'.
PERFORM WRITE_AND_HIDE USING SPACE 'X'.
WHEN OTHERS.
SUBTRACT 2 FROM SY-LSIND.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
ENDCASE.
CLEAR TEXT.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 51 sur 181
FORM WRITE_AND_HIDE USING P_FLAG_LSIND P_FLAG_UCOMM.
WRITE / 'SY-LSIND:'.
PERFORM WRITE_WITH_COLOR USING SY-LSIND P_FLAG_LSIND.
TEXT = 'List index'.
HIDE TEXT.
WRITE / 'SY-UCOMM:'.
PERFORM WRITE_WITH_COLOR USING SY-UCOMM P_FLAG_UCOMM.
TEXT = 'User command'.
HIDE TEXT.
IF SY-LSIND > 0.
WRITE / 'PICK pour remonter d'un niveau dans la liste'.
ENDIF.
ENDFORM.

FORM WRITE_WITH_COLOR USING P_VALUE P_FLAG_POSITIVE.
IF P_FLAG_POSITIVE = SPACE.
WRITE P_VALUE COLOR COL_NORMAL.
ELSE.
WRITE P_VALUE COLOR COL_POSITIVE.
ENDIF.
ENDFORM.

Selon que l'on slectionne la ligne avec SY-LSIND ou SY-UCOMM, la liste dtaille suivante contient la valeur
correspondante avec son attribut de couleur "positif". Si la ligne est slectionne sans information HIDE, le
niveau de liste est rduit.

Variante 2 AT USER-COMMAND.

Effet: vnement dans un report interactif.

Cet vnement est excut n'importe quel moment lorsque l'utilisateur appuie sur une touche de fonction dans
la liste ou ralise une entre dans le champ de commande.

Certaines fonctions sont excutes directement par le systme et ne peuvent donc tre traites par
programmation. Cela inclut:
PICK Voir la variante AT LINE-SELECTION
PFn Voir la variante AT PFn
/... Commande systme
%... Commande systme
PRI Print
BACK Back
RW Cancel
P... Fonction de scrolling (e. g.: P+, P-, PP+3, PS etc.)

A la place de cette fonction, vous pouvez utiliser l'instruction SCROLL dans les programmes.

Puisque beaucoup de ces codes fonctions systme commencent avec la lettre "P", vous devriez viter d'utiliser
cette lettre pour commencer vos propres codes fonction.

D'autre part, l'effet est identique AT LINE-SELECTION, c'est dire que le code fonction courant est
sauvegard dans la zone systme SY-UCOMM.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 52 sur 181
Exemple:

DATA: NUMBER1 TYPE I VALUE 20,
NUMBER2 TYPE I VALUE 5,
RESULT TYPE I.

START-OF-SELECTION.
WRITE: / NUMBER1, '?', NUMBER2.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'ADD'.
RESULT = NUMBER1 + NUMBER2.
WHEN 'SUBT'.
RESULT = NUMBER1 - NUMBER2.
WHEN 'MULT'.
RESULT = NUMBER1 * NUMBER2.
WHEN 'DIVI'.
RESULT = NUMBER1 / NUMBER2.
WHEN OTHERS.
WRITE 'Code fonction inconnu'.
EXIT.
ENDCASE.
WRITE: / 'Rsultat:', RESULT.

Suite la saisie d'un code fonction, le traitement appropri est ralis sous l'vnement AT USER-COMMAND
et le rsultat est affich dans la liste dtaille.

Variante 3 AT PFn.

Effet: vnement dans un report interactif.

La variable correspond une valeur numrique comprise entre 0 et 99.

Cette vnement est excut lorsque l'utilisateur appuie sur une touche fonction qui contient le code fonction
PFn dans la dfinition de l'interface. Le statut par dfaut pour les listes contient certaines de ces fonctions.

D'autre part, l'effet est identique AT LINE-SELECTION. Le curseur peut tre sur n'importe quelle ligne.

Notes: 1. pour s'assurer que la fonction choisie ne s'excute que pour les lignes valides, on peut tester
l'information courante de l'instruction HIDE,
2. cette variante ne devrait tre utilise que pour des besoins de test ou de prototypage, puisque le statut
par dfaut n'est pas utilis normalement. A la place, on devrait dfinir un statut spcifique pour chaque
programme ou cran, avec l'instruction SET PF-STATUS. Il ne doit alors contenir aucun code fonction
commenant par les lettres "PF".

Exemple:
DATA NUMBER LIKE SY-INDEX.

START-OF-SELECTION.
DO 9 TIMES.
WRITE: / 'Colonne', (2) SY-INDEX.
NUMBER = SY-INDEX.
HIDE NUMBER.
ENDDO.

AT PF8.
CHECK NOT NUMBER IS INITIAL.
WRITE: / 'Le curseur est en colonne', (2) NUMBER.
CLEAR NUMBER.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 53 sur 181
AT - Evnements dans les crans de slection

Instruction de base: AT SELECTION-SCREEN.

Additions: 1. ... ON psel
2. ... ON END OF sel
3. ... ON VALUE-REQUEST FOR psel_low_high
4. ... ON HELP-REQUEST FOR psel_low_high
5. ... ON RADIOBUTTON GROUP radi
6. ... ON BLOCK block
7. ... OUTPUT

Effet: cet vnement n'a de sens que dans les reports, c'est dire dans les programmes d'attribut de type 1. Ces
programmes de type 1 possdent toujours un cran de slection dans lequel l'utilisateur peut spcifier des
slections de donnes. L'vnement est trait lorsque l'cran de slection a t renseign. Si un message d'erreur
(MESSAGE Emnr) est envoy pendant l'vnement, tous les champs de l'cran de slection redeviennent prts
pour la saisie. Une fois cette opration ralise, AT SELECTION-SCREEN est excut nouveau.

Note: on ne devrait raliser que des tests relativement importants avec AT SELECTION-SCREEN si le
programme est ensuite lanc (et non pas chaque fois que l'utilisateur appuie sur ENTER). A ce stade, on peut
lire la zone systme SSCRFIELDS-UCOMM (si et seulement si un tat TABLES SSCRFIELDS existe). Si le
champ a une de ces deux valeurs 'ONLI' (= excute) or 'PRIN' (= excute et imprime), le report est alors lanc,
c'est dire l'cran de slection est ferm et le traitement continue avec l'vnement START-OF-SELECTION.
Il faut se rappeler que l'cran de slection (et ainsi AT SELECTION-SCREEN galement) est aussi trait dans
diffrentes "maintenance" (?) et aussi avec l'instruction SUBMIT VIA JOB. On peut dterminer lequel de ces
processus est utilis en appelant le module de fonction RS_SUBMIT_INFO.

Addition 1 ... ON psel

Effet: cet vnement est assign aux champs de l'cran de slection correspondant au paramtre de report ou au
critre de slection psel.
Si le report lance une erreur ce stade, ce sont prcisment ces champs qui deviennent prt pour la saisie.

Addition 2 ... ON END OF sel

Effet: pour chaque critre de slection sel dans l'cran de slection, on peut appeler un cran suivant en appuyant
sur un bouton de commande. Sur ce nouvel cran, on peut entrer n'importe quel nombre de type valeur ou
intervalle pour le critre de slection sel.
Lorsque cet cran a t trait, (c'est dire la fin du PAI de cet cran), l'vnement AT SELECTION-
SCREEN ON END OF sel est excut.
A ce stade, toutes les valeurs saisies sont disponibles dans la table interne sel.

Addition 3 ... ON VALUE-REQUEST FOR psel_low_high

Effet: avec cette option, le champ psel_low_high reprsente soit le nom d'un paramtre de report, soit le nom de
l'objet sel-LOW ou sel-HIGH, o sel est le nom du critre de slection. Son effet est double:
1. le bouton pour les entres possibles de la touche F4 apparat sous le champ appropri,
2. lorsque l'utilisateur active ce bouton ou appuie sur la touche F4 pour le champ, l'vnement est excut.
On peut alors implmenter une routine personnelle affichant les entres possibles pour les champs d'entres-
sorties de l'cran de slection. Si le programme contient un tel vnement et que l'utilisateur appuie sur la touche
F4, le systme le traite plutt que d'afficher la table de test ou les valeurs prdfinies du champ du Dictionnaire
mme si le paramtre de report ou l'option de slection avec LIKE ou FOR pointe vers un champ du
Dictionnaire. On peut , par exemple, utiliser l'instruction CALL SCREEN pour afficher une liste de slection
des valeurs possibles. Le contenu des champ psel_low_high la fin de ce block de traitement est copi vers les
champs d'entre-sortie appropris.
Les vnements AT sous ABAP/4
Cours ABAP.doc Page 54 sur 181
Cet option n'est autorise qu'avec des paramtres de report spcifiques (PARAMETERS) ou des options de
slection (SELECT-OPTIONS). Pour des paramtres de base de donnes spcifiques ou des options de
slection, on peut raliser le mme effet en utilisant l'option VALUE-REQUEST FOR ... avec le mot cl
PARAMETERS ou SELECT-OPTIONS dans l'include DBxyzSEL (o xyz = nom de la base de donnes
logique). Dans ce cas, on doit programmer les entres possibles dans le programme de base de donnes
SAPDBxyz.

Addition 4 ... ON HELP-REQUEST FOR psel_low_high

Effet: comme avec l'option ON VALUE-REQUEST, le champ psel_low_high reprsente soit le nom d'un
paramtre de report, soit le nom de l'objet sel-LOW ou sel-HIGH, o sel est le nom du critre de slection.
Lorsque l'utilisateur appuie sur la touche F1 dans le champ adquat, le block de traitement associ est excut.
On peut ainsi implmenter une aide en ligne personnelle concernant les champs d'entres-sorties de l'cran de
slection. Si le programme contient un tel vnement et que l'utilisateur appuie sur la touche F1, le systme traite
cela plutt que d'afficher la documentation relative au champ du Dictionnaire mme si le paramtre de report
ou l'option de slection avec LIKE ou FOR pointe vers un champ du Dictionnaire.

Cet option n'est autorise qu'avec des paramtres de report spcifiques (PARAMETERS) ou des options de
slection (SELECT-OPTIONS). Pour des paramtres de base de donnes spcifiques ou des options de
slection, on peut raliser le mme effet en utilisant l'option HELP-REQUEST FOR ... avec le mot cl
PARAMETERS ou SELECT-OPTIONS dans l'include DBxyzSEL (o xyz = nom de la base de donnes
logique). Dans ce cas, on doit programmer l'aide dans le programme de base de donnes SAPDBxyz.

Note: si psel_low_high est un PARAMETER, l'vnement AT SELECTION-SCREEN ON psel_low_high est
aussi excute si l'utilisateur appuie sur F1 dans le champ de texte de psel_low_high ou sur un commentaire
appartenant psel_low_high (SELECTION-SCREEN COMMENT ... FOR FIELD psel_low_high).

Addition 5 ... ON RADIOBUTTON GROUP radi


Effet: cet vnement est assign un groupe de radio boutons de l'cran de slection dfini par l'instruction
suivante PARAMETERS par RADIOBUTTON GROUP radi.
Si le report lance un dialogue d'erreur ce stade, ce sont prcisment ces champs du groupe de radio boutons
radi qui redeviennent prts pour une nouvelle saisie.


Addition 6 ... ON BLOCK block

Effet: cet vnement est assign un blocks dans un cran de slection dfini par l'instruction suivante
SELECTION-SCREEN BEGIN/END OF BLOCK block.
Si le report lance un dialogue d'erreur ce stade, ce sont prcisment ces champs du block block qui
redeviennent prts pour une nouvelle saisie.

Note: dans quelle squence les vnements AT SELECTION-SCREEN ON psel ..., AT SELECTION-
SCREEN ON RADIOBUTTON GROUP ..., AT SELECTION-SCREEN ON BLOCK ..., AT
SELECTION-SCREEN sont-ils traits? L'vnement AT SELECTION-SCREEN ON psel ... assign aux
paramtres ou aux options de slection sont excutes dans la squence dans laquelle ils sont dclars dans le
programme, c'est dire dans la squence o ils apparaissent dans l'cran de slection. Les vnements assigns
aux groupes de radio boutons sont excuts en relation avec le premier paramtre du groupe de radio boutons.
Les vnements assigns des blocks sont excuts "de l'intrieur vers l'extrieur".

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 55 sur 181
Exemple:
SELECT-OPTIONS SEL0 FOR SY-TVAR0.

SELECTION-SCREEN BEGIN OF BLOCK BL0.
SELECT-OPTIONS SEL1 FOR SY-TVAR1.
SELECTION-SCREEN BEGIN OF BLOCK BL1.
PARAMETERS P0 RADIOBUTTON GROUP RADI.
PARAMETERS P1 RADIOBUTTON GROUP RADI.
SELECTION-SCREEN BEGIN OF BLOCK BL2.
PARAMETERS P3.
SELECTION-SCREEN END OF BLOCK BL2.
SELECT-OPTIONS SEL2 FOR SY-TVAR2.
SELECTION-SCREEN END OF BLOCK BL1.
SELECTION-SCREEN END OF BLOCK BL0.

Squence:
AT SELECTION-SCREEN ON...
SEL0
SEL1
RADIOBUTTON GROUP RADI
P3
BLOCK BL2
SEL2
BLOCK BL1
BLOCK BL0.

AT SELECTION-SCREEN est excut tout la fin.

Addition 7 ... OUTPUT

Effet: cet vnement est excut dans le PBO d'un cran de slection chaque fois que l'utilisateur appuie sur la
touche ENTER contrairement INITIALIZATION. De ce fait, cet vnement n'est pas utilisable pour dfinir
les valeurs par dfaut de l'cran de slection. De plus, puisque AT SELECTION-SCREEN OUTPUT est
excut en premier aprs l'importation de la variante (si une variante est utilise) et aprs avoir adopt toutes les
valeurs spcifies sous SUBMIT, dans la clause WITH, changer les paramtres du report ou les options de
slection dans AT SELECTION-SCREEN OUTPUT dtruira les valeurs spcifies.
Cependant, on peut utiliser LOOP AT SCREEN ou MODIFY SCREEN pour changer les attributs d'entres-
sorties des champs de l'cran de slection.

Exemple: affiche tous les champs de SELECT-OPTION NAME en sur brillance

SELECT-OPTIONS NAME FOR SY-REPID MODIF ID XYZ.
...
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CHECK SCREEN-GROUP1 = 'XYZ'.
SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDLOOP.

L'option MODIF ID XYZ ajoute SELECT-OPTIONS assigne tous les champs de l'option de slection
NAME un groupe que l'on peut atteindre par le champ SCREEN-GROUP1. Dans le PBO de l'cran de
slection, tous ces champs sont alors mis en sur brillance.

Note: dans le contexte de traitement par vnement dans les crans de slection, l'instruction SET PF-STATUS
ne fonctionne pas. Il faut alors dfinir un statut en utilisant l'un des deux modules de fonction suivants:
RS_SET_SELSCREEN_STATUS ou RS_EXTERNAL_SELSCREEN_STATUS.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 56 sur 181
AT - Points de contrle avec les stocks de donnes intermdiaires

Variantes: 1. AT NEW f.
2. AT END OF f.
3. AT FIRST.
4. AT LAST.
5. AT fg.

Effet: dans une boucle traitant un stock de donnes intermdiaires cr avec EXTRACT, on peut utiliser des
structures de contrle spciales pour le traitement des points de contrle. Toutes ces structures commence par
AT et finissent par ENDAT. La squence d'instructions comprise entre ces deux lignes est excute chaque
fois qu'un point de contrle est rencontr.

On peut utiliser ces mots cl pour le traitement de contrles d'un ensemble de donnes extrait uniquement si la
boucle LOOP active est en train de traiter un stock de donnes intermdiaires.

La structure de niveau de contrle pour les stocks de donnes intermdiaires est dynamique. Cela correspond
exactement l'instruction SORT du stock de donnes intermdiaires, c'est dire l'ordre des champs dans le
HEADER du stock de donnes intermdiaires selon lequel il a t tri.

A la fin d'un groupe de contrle (AT END OF, AT LAST), il y a deux types d'information sur les niveaux de
contrle entre AT et ENDAT:
- si la cl de tri du stock de donnes intermdiaires contient un champ h non-numrique (particulirement dans le
HEADER du stock de donnes intermdiaires), le champ CNT(h) contient le numro des points de contrle dans
le (subordonn) niveau de contrle h,
- pour les champs numriques extraits g (voir aussi "Les types numriques sous ABAP/4), le champ
SUM(g) contient comme contrle le total relatif au champ g.

Notes: 1. les champs CNT(h) et SUM(g) ne peuvent tre adresss qu'aprs avoir t tris. Sinon une erreur
d'excution peut survenir.
2. les champs CNT(h) et SUM(g) sont remplis avec les valeurs correspondantes aux niveaux de
contrle la fin de chaque groupe contrler (AT END OF, AT LAST), et non pas au dbut (AT
FIRST, AT NEW).
3. lorsqu'il calcule des totaux avec SUM(g), le systme choisit automatiquement la taille maximale
des champs afin d'viter un dbordement, sauf si les limites absolues des zones de valeur sont
dpasses.
4. on peut aussi utiliser des structures de contrle des points de contrle avec des boucles sur les tables
internes.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 57 sur 181
Variante 1 AT NEW f. Variante 2 AT END OF f.

Effet: f est un champ du HEADER du stock de donnes intermdiaires. La squence d'instruction est excute
si:
- le champ f apparat dans la cl de tri du stock de donnes intermdiaire (et donc dans son HEADER) et,
- le champ f ou un critre de slection plus lev prend une valeur diffrente, dans boucle LOOP, que
dans l'enregistrement prcdent (AT NEW) ou suivant (AT END OF) du stock de donnes
intermdiaires.

Exemple:
DATA: NAME(30),
SALES TYPE I.
FIELD-GROUPS: HEADER, INFOS.
INSERT: NAME INTO HEADER,
SALES INTO INFOS.
...
LOOP.
AT NEW NAME.
NEW-PAGE.
ENDAT.
...
AT END OF NAME.
WRITE: / NAME, SUM(SALES).
ENDAT.
ENDLOOP.

Notes: 1. si le stock de donnes intermdiaires n'est pas tri avant le traitement avec une boucle
LOOP, aucune structure de niveau de contrle n'est dfinie et l'instruction suivant AT NEW
ou AT END OF ne sont pas excutes.
2. Les champs valant 0 en hexadcimal (champs vides) sont ignors par le test de point
contrle avec AT NEW ou AT END OF. Cela correspond au comportement de l'instruction
SORT, qui place toujours les champs vides (c'est dire les champs valant 0 en hexadcimal)
avant les champs remplis lors du tri des stocks de donnes intermdiaires, suivant que le tri soit
croissant ou dcroissant.



Les vnements AT sous ABAP/4
Cours ABAP.doc Page 58 sur 181
Variante 3 AT FIRST. Variante 4 AT LAST.


Effet: excute la srie d'instruction correspondante une seule fois soit au premier passage dans la boucle (avec
AT FIRST) soit lors du dernier passage dans la boucle (avec AT LAST).

Variante 5 AT fg.

Addition: ... WITH fg1

Effet: cette instruction ralise un seul traitement dpendant du type d'enregistrement extrait.

La squence d'instruction aprs AT fg est excute chaque fois qu'un enregistrement est cre dans la boucle
avec EXTRACT fg (en d'autre termes, lorsque l'enregistrement en cours est de type fg).

Addition ... WITH fg1

Effet: excute la squence d'instructions appartenant AT fg WITH fg1 seulement si l'enregistrement de fg dans
le stock de donnes intermdiaire est immdiatement suivi par un enregistrement de fg1.

AT Points de contrle avec les tables internes

Variantes: 1. AT NEW f.
2. AT END OF f.
3. AT FIRST.
4. AT LAST.

Effet: dans une boucle de traitement de tables internes, on peut utiliser ces structures de contrle spciales pour
le traitement de points de contrles. Toutes ces structures commencent avec AT et finissent avec ENDAT. La
squence d'instruction comprise entre ces deux lignes est alors excute si un point de contrle apparat.

On ne peut utiliser ces structures de contrle avec les tables internes que si une boucle en train de traiter une
table interne.

La structure de contrle de niveau est statique pour les tables internes. Cela correspond exactement la squence
des colonnes de la table interne (de la gauche vers la droite).Dans ce contexte, le critre de tri de la table interne
n'a pas d'importance.

Au dbut d'un nouveau contrle (i.e. tout de suite aprs AT), les zones de sortie de l'instruction LOOP en cours
sont traits comme suit:
- tous les champs cl par dfaut (vers la droite) sont rempli avec "*" aprs la cl de contrle en cours,
- tous les autres champs (vers la droite) sont rinitialises leur valeur originelle aprs la cl de contrle
en cours.

Entre AT et ENDAT, on peut utiliser l'instruction SUM pour raliser un contrle sur les totaux de l'ensemble
des champs numriques (voir galement les types numrique sous ABAP/4) dans les zones de sortie du LOOP
(vers la droite) aprs la cl de contrle en cours. L'addition est possible aussi bien au dbut (AT FIRST, AT
NEW f) qu' la fin (AT END OF f, AT LAST) d'un niveau de contrle.

A la fin du traitement du contrle (i.e. aprs ENDAT), les anciennes donnes des zones de sortie du LOOP sont
restitues.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 59 sur 181
Notes: 1. lorsque l'on calcule des totaux, il faut tre sr que le total sera insr dans le mme champ de la
zone de sortie du LOOP que celui ou apparat le valeur additionner. S'il y a dpassement de
capacit, une erreur d'excution est gnre.
2. si une table interne est traite de manire restrictive (en utilisant les options FROM, TO et/ou
WHERE avec l'instruction LOOP), on ne doit pas utiliser de structures de contrle pour le
traitement de niveaux de contrles parce que l'interaction d'une boucle restreinte avec l'instruction
AT n'est pas correctement dfinie.
3. concernant les boucles avec les stocks de donnes intermdiaires, on peut galement utiliser des
structures de contrles spciales.

Note: erreurs d'excution:
- SUM_OVERFLOW: dpassement lors du calcul des totaux avec l'instruction SUM.

Variante 1 AT NEW f. Variante 2 AT END OF f.

Effet: f est un champ de la table interne traite avec LOOP. La squence d'instruction correspondante est traite
si le champ f ou un champ dfini avant f ( gauche) dans la ligne en cours de traitement a valeur diffrente de
celle qu'il avait dans la ligne prcdente (AT NEW) ou suivante (AT END OF) de la table.

Exemple:
DATA: BEGIN OF COMPANIES OCCURS 20,
NAME(30),
PRODUCT(20),
SALES TYPE I,
END OF COMPANIES.
...
LOOP AT COMPANIES.
AT NEW NAME.
NEW-PAGE.
WRITE / COMPANIES-NAME.
ENDAT.
WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES.
AT END OF NAME.
SUM.
WRITE: / COMPANIES-NAME, COMPANIES-SALES.
ENDAT.
ENDLOOP.

L' instruction AT se rfre au champ COMPANIES-NAME.

Notes: 1. si un critre de point de contrle n'est pas connu avant l'excution, on peut utiliser AT NEW (nom)
ou AT END OF (nom) pour le spcifier dynamiquement comme tant le contenu du champ nom. Si
nom est vierge l'excution, le critre de contrle est ignor et la squence d'instructions n'est pas
excute. Si nom contient un nom de composante invalide, une erreur d'excution apparat.
2. en dfinissant un gabarit et/ou une longueur, on peut encore restreindre un peu plus le critre de
contrle, - selon qu'il sont dclars statiquement ou dynamiquement.
3. un symbole de champ pointant vers la zone de sortie du LOOP peut aussi tre utilis comme un
critre de contrle dynamique. Si le symbole de champ ne pointent pas vers la zone de sortie du LOOP,
une erreur d'excution apparat.

Note: erreurs d'excution:
- AT_BAD_PARTIAL_FIELD_ACCESS: accs invalide un champ lorsque l'on dfinit
dynamiquement le critre de contrle,
- AT_ITAB_FIELD_INVALID: lorsqu'on spcifie dynamiquement le critre de contrle via un symbole
de champ, ce dernier ne pointe pas vers une zone de sortie du LOOP,
- ITAB_ILLEGAL_COMPONENT: lorsqu'on spcifie dynamiquement le critre de contrle via (nom),
le champ (nom) ne contient pas un nom de champ valide.

Les vnements AT sous ABAP/4
Cours ABAP.doc Page 60 sur 181
Variante 3 AT FIRST Variante 4 AT LAST

Effet: excute une seule fois la squence d'instructions approprie lors du premier (AT FIRST) ou dernier (AT
LAST) passage dans la boucle.

Exemple:
DATA: BEGIN OF COMPANIES OCCURS 20,
NAME(30),
PRODUCT(20),
SALES TYPE I,
END OF COMPANIES.
...
LOOP AT COMPANIES.
AT FIRST.
SUM.
WRITE: 'Somme de toutes les ventes:', 55 COMPANIES-SALES.
ENDAT.
WRITE: / COMPANIES-NAME, COMPANIES-PRODUCT, 55 COMPANIES-SALES.
ENDLOOP.

Listes
Cours ABAP.doc Page 61 sur 181
LISTES
Lecture des listes

READ LINE

READ LINE <n>
OF CURRENT PAGE.
OF PAGE <p>
INDEX <i>
FIELD VALUE <f1> INTO <g1>
<f2> INTO <g2>

READCURRENT LINE

READ CURRENT LINE
FIELD VALUE <f1> INTO <g1>
<f2> INTO <g2>









Modification des listes

Modify line

MODIFY LINE <n>
OF CURRENT PAGE
OF PAGE <m>
INDEX <i>
FIELD VALUE F1 FROM G1
F2 FROM G2

FIELD FORMAT F1 <format>
F2 <format>

LINE FORMAT <format>

Modify current line

MODIFY CURRENT LINE
FIELD VALUE F1 FROM G1
F2 FROM G2

FIELD FORMAT F1 <format>
F2 <format>

LINE FORMAT <format>




Fentres
Cours ABAP.doc Page 62 sur 181
FENETRES


Instruction Window

AT
.
.
.
WINDOW STARTING AT 10 15
ENDING AT 77 22
WRITE : /
.
.
.

Vous devez spcifier les coordonnes de la fentre (coin suprieur droit et infrieur gauche) en indiquant dabord
la colonne puis la ligne.
Ldition WRITE qui suit linstruction WINDOW apparat dans la fentre.

Loption WITH FRAME TITLE vous permet de gnrer un titre une fentre.

L'Object Browser
Cours ABAP.doc Page 63 sur 181
L'Object Browser


L'object Browser est un outil permettant de crer et grer les projets de programmation relativement lourds, par
une mise en uvre modulaire.
Il sert aussi la cration d'interface de saisie de donnes, pour lesquels il faut crer des crans de saisie facilitant
ces oprations, les donnes ainsi renseignes tant ensuite sauvegardes dans des tables (programme ZHENFIN
dans l'exemple ci-dessous).
L'Object Browser sert aussi lors de la cration de groupes de fonction, comme nous le verrons plus tard (groupe
de fonction ZHEN dans l'exemple).

Pour accder l'Object Browser, cliquer, dans le menu droulant "Outils", sur l'option "Abap/4 Workbench",
puis sur le bouton "Object Browser", ou utiliser la transaction (Ok Code) "SE80". On se retrouve alors face
l'cran suivant:


Figure 1: l'Object browser
Dpendant de l'action que l'on dsire raliser, il faut slectionner une option dans la liste d'objets, puis cliquer sur
"Afficher".
Dans le cas de l'cran de la figure 3 ci-dessous, on a cr un nouveau pool de modules, appel
"ZHENTEMP". Trois objets sont intgrs dans ce pool de module, l'object "Structure DD", dans lequel sont
dclares toutes les tables utilises dans le programme, l'object "Donnes glob.", dans lequel seront rfrences
toutes les variables globales du programme, et l'objet "Include", dans lequel seront placs toutes les structures de
type "INCLUDE", lesquelles renferment les modules, routines et sous-programmes que l'on cre.
La barre d'outils de l'Object browser est reprsente sur la figure 2. Les deux icnes essentielles de
l'Object browser sont rfrences sur la figure.


Figure 2: la barre d'outils
Crer un nouvel objet Gnrer les objets du pool
L'Object Browser
Cours ABAP.doc Page 64 sur 181

Figure 3: le pool de module ZHENTEMP vierge

Cration d'une interface de saisie

Dans l'exemple que nous allons voir, nous allons cres une interface de saisie pour la rservation de
places sur les vols ariens et l'dition de la facture sur formulaire. Cette interface sera base sur les tables
ZCHSPFLI, ZCHSFLIG, ZCHSBOOK et ZCHSCUST (copies personnelles des tables systmes SPFLI,
SFLIGHT, SBOOK et SCUSTOM, avec cependant l'avantage de pouvoir tre modifies par nous).
La cration d'une telle interface de saisie repose sur ce que l'on appelle un "pool de module". Celui-ci
correspond en fait un programme principal, reprsentant le nud de l'arborescence visible sur l'cran de travail,
et dont le code ne contient exclusivement que des instructions "INCLUDE" des modules crs lors des phases de
conception.

Le pool de module fini

Les crans suivants montrent l'arborescence finale du programme de rservation ZHENFIN, servant
saisir les rservations.
Outre les trois objets vus prcdemment, le programme comprend un certain nombre de modules nouveaux,
comme le montrent les crans. Ces lments sont:
- Evnements (renseignement sur les double-clics, boutons, etc.)
- Modules PBO (lments Process Before Output des dynpros),
- Modules PAI (lments Process After Input des dynpros),
- Sous-prog. (comme son nom l'indique),
- Dynpros (chaque dynpro reprsente un cran de slection (pouvant tre de diverses
natures),
- Statut GUI (chaque statut est rfrenc un dynpro, pour permettre la gestion des
icnes de navigation ou de boutons de commandes spcifiques (GUI = Graphical User
Interface)),
- Transactions (4 caractres; pour le lancement du programme sous R/3).
L'arborescence du pool de modules est donc dcrite sur les 3 figures ci-dessous:

L'Object Browser
Cours ABAP.doc Page 65 sur 181

(a) (b)

(c) (d)

(e)
Figure 4: arborescence du pool

L'Object Browser
Cours ABAP.doc Page 66 sur 181
Logique de cration

Quel que soit l'objet crer, la manipulation est identique. Il faut placer le curseur sur le nud du
pool, c'est--dire son nom gnrique, puis cliquer sur le bouton suivant:
Le cheminement de la logique de cration est dcrit ci-aprs.
Cration d'un cran de slection DYNPRO

Les DYNPROS reprsentent les crans de slections dans la programmation interactive de SAP R/3.
Crer un dynpro revient crer des masques de saisie dans lesquels loprateur(trice) entrera ces valeurs. La
procdure suivre pour crer un DYNPRO est la suivante :
- sous lObject browser, crer un nouvel objet DYNPRO, auquel il faut donner un numro
sur 4 chiffres.
- dfinir les caractristiques de base de lcran (attributs de DYNPRO),
- dfinir les zones de lcran (Plein cran),
- dfinir les attributs des zones (Liste de zone),
- crer la logique dexcution.
Pour chaque cran, la logique dexcution se subdivise en deux vnements :
- lvnement Process Before Output (PBO) qui est excut avant laffichage de lcran,
- lvnement Process After Input (PAI) qui est lanc une fois que les donnes ont t
saisies lcran et quun ordre (appui sur la touche ENTREE par exemple) t donn.
Les modules dun vnement sont excuts squentiellement. Il faut alors veiller dclarer ceux-ci
dans un ordre logique dexcution (sauvegarde des donnes avant le traitement du module USER-COMMANDE
par exemple).
Pour le programme ZHENREIS, servant rserver des places sur un vol arien choisi par le client,
nous avons cr deux DYNPRO, numrots 1000 et 1100 (par convention, le premier cran portera le numro
1000, les suivants 1100, 1200, etc. ...). Le dtail en est donn ci-aprs, conformment la procdure vue
prcdemment.

Premier cran : DYNPRO 1000


Figure 5: les attributs Figure 6: les masques

Les masques utilisables dans le plein cran proviennent de deux types de variables. Soit, elles
correspondent des variables globales dclares dans l'INCLUDE ZHFINTOP, soient elles proviennent
directement des tables qui ont galement t dclares dans ZHFINTOP, auquel cas le masque de saisie est
identique celui de la variable dans la table. Il est galement important de noter, dans ce deuxime cas, qu'il est
tout fait possible d'utiliser les matchcodes associs ces variables de tables. Pour placer ces masques sur la
surface du DYNPRO, aller dans le menu droulant Saut, puis Zones de dict/prog. Ou appuyer sur la touche
"F6", slectionner les variables dsires (du dictionnaire ou du programme), puis cocher les variables placer sur
la surface, et cliquer sur le bouton "Reprendre". Il faut ensuite marquer (icne ou touche "F2") la position o
l'on veut les voir apparatre. On a ensuite la possibilit de les dplacer loisir sur toute la surface du DYNPRO.
Il est aussi possible, dans le plein cran, de raliser des cases cocher, des boutons d'options (pouvant tre
quivalents aux RADIOBUTTONS d'ABAP/4) ou encore des boutons de commandes, comme dans l'exemple
prsent, o un bouton "Dtails des vols" a t cr, pour raliser le passage l'cran suivant, aprs avoir fait un
test de validit des donnes saisies au clavier. Ces outils sont disponibles dans le menu Traiter puis Crer zones.
L'Object Browser
Cours ABAP.doc Page 67 sur 181
Dans le cadre particulier des boutons d'options de type RADIOBUTTON, il faut crer le nombre de boutons
dsirs, puis, une fois les avoirs placs les uns en dessous des autres, les regrouper dans un lment graphique
(cliquer sur le premier lment, cliquer sur le bouton Elment graphique, cliquer sur le dernier lment
intgrer, puis appuyer sur le bouton Dfinir grpe graph., et la manipulation est termine).


Figure 7: la liste de zones Figure 8: la logique d'excution

La liste de zone rfrence toutes les zones qui apparaissent dans le plein cran du DYNPRO, ainsi
que leurs attributs.
Dans la zone de liste ci-dessus, apparat une variable FCODE, de type OK. Cette variable est
dclare dans linclude TOP avec un type SY-UCOMM. Elle sera utilise par lcran de commande STATUT
GUI pour passer les codes fonctions des menus et boutons (cf la partie concernant les crans de commande
STATUT GUI). La variable FCODE est dclarer dans tous les DYNPROS.
Cest dans cette logique dexcution quapparaissent les deux vnements PBO et PAI. Ici, nous
dfinissons donc les travaux raliser avant (PBO) et aprs (PAI) laffichage du DYNPRO 1000. Les modules
dclars ici sont raliss dans des objets INCLUDE, selon certaines conventions. Ainsi, les modules de la section
PBO seront sauvegards dans un INCLUDE de nom ZHFINO01, le O01 faisant rfrence au PBO de lcran
numro 1, alors que les modules de la section PAI iront dans un INCLUDE nomm ZHFINI01, I01 faisant
rfrence au PAI de lcran numro 1.
Deux modules sont indispensables dans cette logique d'excution. Dans le PBO, se trouve un
module SET_PF_STATUS_1000, lequel fait le lien avec l'cran de commande correspondant. La syntaxe exacte
comprise dans ce module est :
SET PF-STATUS 'MENU1000'. (voir le chapitre sur le STATU GUI)
Le PAI contient, quant lui, un module USER_COMMAND_1000 qui assure le traitement des
codes fonctions grce la variable FCODE. Ces codes fonctions peuvent faire rfrence aux boutons et menus
du STATUT GUI, mais ils servent galement pour le traitement des boutons que l'on peut raliser l'intrieur
d'un cran DYNPRO, comme c'est le cas dans ce premier cran (bouton "Rechercher"). Sa syntaxe sera:
CASE FCODE.
WHEN 'RETO'.
LEAVE TO SCREEN 0. (retour l'cran prcdent)
WHEN 'DETA'.
PERFORM PASSAGE. (routine de test et passage l'cran suivant)
ENDCASE.
Le bouton "Dtail des vols" a t ralis sur la surface du DYNPRO 1000, et on lui a affect le code
fonction 'DETA' (4 caractres au maximum).

L'Object Browser
Cours ABAP.doc Page 68 sur 181
Dans le cas o l'on dsirera raliser des masques avec saisie obligatoire (symbole "?" dans la fentre
du masque), on pourra spcifier un deuxime module USER_COMMAND_1000_E AT EXIT-COMMAND,
comprenant la syntaxe suivante:
CASE FCODE.
WHEN 'SORT'.
LEAVE PROGRAM.
ENDCASE.
En cas de problme lors d'une excution, cette seconde structure permet de quitter le programme sans avoir
remplir les zones obligatoires. Il faut nanmoins avoir affect au code fonction correspondant un attribut de type
E (exit), lors de sa dclaration dans le STATUT GUI correspondant (voir le chapitre concernant ces derniers
pour plus de dtails concernant les attributs et leur utilisation).
Le passage d'un cran l'autre peut aussi se faire depuis les attributs du DYNPRO. Dans ces derniers, on peut en
effet spcifier le numro de DYNPRO vers lequel on veut aller. La syntaxe utiliser est alors: LEAVE
SCREEN.
Les commandes ABAP/4 des diffrents modules du DYNPRO 1000 seront vu plus tard, avec
lensemble du programme ZHENFIN. En utilisation normale en pool de modules, l'affichage de donnes
l'gale des reports n'est pas possible dans les DYNPROS standards. Il est cependant possible de raliser un
affichage de type liste de reporting (autorisant alors le double-clic et tout l'arsenal possible ABAP/4). Il faut
dclarer le STATUT GUI en tant que "LISTE".

Cration d'un cran de commande STATUT GUI

Les diffrents crans ayant t conus, il faut leur associer un menu de commande (STATUT GUI) appropri. Ce
menu est rfrenc dans le pool de module par un nom de 8 caractres. En gnral, on utilise la convention
suivante : MENU + NUMERO_DYNPRO (par exemple, le premier cran de commande de ZHENFIN aura pour
nom "MENU1000").
Sil est minimaliste, ce menu doit permettre de grer lutilisation des commandes de base de la barre doutils,
comme cest le cas avec le STATUT GUI "MENU1000".



Le STATUT GUI permet en outre de raliser des menus personnaliss. On peut, dans ce cas,
spcifie des boutons, des menus droulant et/ou des touches de fonctions (F1 F12), il faut tablir des codes
fonctions qui serviront aux diffrentes taches raliser.
La marche suivre est la suivante:
- dfinir des codes fonctions valides (4 caractres),
- allouer une touche de fonction chaque code fonction,
- allouer les codes fonctions aux menus droulant (non obligatoire),
Codes fonction
declars pour la
"navigation"
(retour en arrire,
quitter) dans le
programme
L'Object Browser
Cours ABAP.doc Page 69 sur 181
- allouer les codes fonctions des boutons (non obligatoire).


(a) le menu droulant (b) les boutons et touches de fonctions
Figure 9: le STATUT GUI MENU1000

Dans l'exemple du menu de commande MENU1000, on cre un bouton qui va servir donner les dtails de la
correspondance dsire, exactement comme le bouton Dtails des vols du DYNPRO 1000. Ce bouton est
rfrenc dans le programme par le code fonction "DETA", en tant que touche de fonction "F5", menu droulant
Saut puis Dtails des vols et comme bouton de commande "Dtails des vols".
Le code fonction est rappel dans le module USER_COMMAND_1100, dans l'instruction CASE.

Les crans de liste.

L'cran qui a t ralis prcdemment est un cran de saisie, dans lequel on ne peut que renseigner des donnes
dans un masque donn, en respectant scrupuleusement le type des donnes demandes (si le programme est bien
fait, bien sr).
Si l'on veut alors diter une liste de donnes lies aux renseignements donns sur le premier cran, il faut
dclarer cet cran suivant comme tant un cran de vue. La slection ne se fait pas sur le DYNPRO lui-mme,
mais sur le STATUT GUI correspondant. L'cran 1100 du programme ZHENFIN, qui doit afficher l'ensemble
des correspondances existantes pour une ville de dpart et une destination donne, a t dclar comme LISTE.
Les figures 10 et 11 donnent les attributs du DYNPRO et son STATUT GUI associ. Les figures 12 montre la
logique d'excution du DYNPRO 1100, et la figure 13 offre une vue des codes fonctions donnes en standard
pour un menu de listes.


Figure 10: les attributs du DYNPRO Figure 11: les attributs du STATUT GUI

L'Object Browser
Cours ABAP.doc Page 70 sur 181

Figure 12: la logique d'excution Figure 13: les codes fonctions

La programmation de la logique d'excution du DYNPRO 1100 est un peu particulire, pour qu'effectivement ce
dernier soit considr comme un cran de listes. Il faut en effet dclarer le module d'affichage des donnes dans
la zone PAI du DYNPRO 1100, et non plus dans sa zone PBO, comme ce fut le cas prcdemment lors de la
cration du premier cran. De plus, outre l'indispensable module SET_PF_STATUS_1100 (qui n'est plus
second ici par un module USER_COMMANDE_1100 car on utilise alors les codes fonctions standards des
menus de listes, bien qu'il eut t dans le domaine du possible de les redfinir et les retraiter dans le module
adquat), il faut crer un module d'initialisation INIT_1100, contenant les instructions suivantes:
MODULE INIT_1100 OUTPUT.
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 1000.
ENDMODULE.
Le module d'affichage AFFICHAGE_DONNEES peut contenir toutes les instructions possibles d'ABAP/4.
Remarque: comme l'on peut le voir sur le module ci-dessus, les lments dclars dans la zone PBO ont un
attribut OUTPUT pour extension, alors que les modules de la zone PAI auront l'attribut INPUT comme
extension.
La transaction

Pour autoriser le lancement du programme depuis SAP R/3, il faut crer une transaction. Pour cela, lors de la
cration, on spcifie le programme laquelle elle fera rfrence, le numro du premier DYNPRO lancer, ainsi
qu'un attribut ("DIALOGUE" dans le cas de cet exemple).

L'Object Browser
Cours ABAP.doc Page 71 sur 181
La programmation

Pour programmer un pool de modules, il faut utiliser les "INCLUDES". A chaque DYNPRO correspondra au
minimum deux "INCLUDES", ZHFINO01 et ZHFINI01, ZHFINO02 et ZHFINI02, ainsi que des "INCLUDES"
spcifiques pour dclarer les sous-programmes (FORM....ENDFORM). Dans le cas de l'exemple qui nous
intresse ici, cependant, les sous-programmes correspondants aux INCLUDES Oxx et Ixx sont dclars
directement dans les "INCLUDES". Pour donner un exemple, les sous programmes des modules
SET_PF_STATUS_1000, INIT_1000 et READ_DATA_1000 sont ralises dans le module ZHFINO01,
directement sous la dclaration des modules. De faon identique, les sous-programmes des modules
SAVE_DATA_MENU1000, USER_COMMAND_1000 et USER_COMMAND_1000_E AT EXIT-
COMMAND sont crits dans l'INCLUDE ZHENRI01 (voir listing complet).
Une autre mthode consiste ne crer qu'un seul INCLUDE ZHFINF01 qui contiendra toutes les routines du
programme. Cela permet de savoir tout de suite dans quel module chercher, mais, si le programme raliser est
quelque peut long, il se peut que l'INCLUDE en question soit rapidement trs trs long.
La technique employe dpendra normment du programmeur, ce dernier devant avoir l'esprit que ce ne sera
peut-tre pas lui qui assurera les montes en versions!


Les jeux d'essais:

Suite au lancement du programme au moyen de la transaction "ZHFI", on obtient l'cran suivant, dans lequel on
renseigne les zones "Dpart", "Arrive": et "Date".


Figure 14: l'cran initial Figure 15: la liste des correspondances


Figure 16: la rservation Figure 17: un utilisateur enregistr
L'Object Browser
Cours ABAP.doc Page 72 sur 181

Figure 18: l'cran de rservation Figure 19: un nouveau client





(a) (b)
Figure 20: la facture du nouveau client

Le formulaire

Pour la ralisation du formulaire, se reporter la documentation adquate.


L'Object Browser
Cours ABAP.doc Page 73 sur 181
Listing du programme ZHENFIN

ZHENFIN :
*&-----------------------------------------------------------------------------------------------------------------*
*& Pool mod. ZHENFIN *
*& *
*&----------------------------------------------------------------------------------------------------------------- *
*& *
*& *
*&----------------------------------------------------------------------------------------------------------------- *


INCLUDE ZHFINTOP. " global Data

ZHFINTOP :
*&----------------------------------------------------------------------------------------------------------------- *
*& Include ZHFINTOP Pool mod. ZHENFIN *
*& *
*&--------------------------------------------------------------------------------- --------------------------------*

PROGRAM ZHENFIN NO STANDARD PAGE HEADING MESSAGE-ID ZH.

Tables: ZCHSPFLI, ZCHSFLIG, ZCHSBOOK, ZCHSCUST.

DATA: FCODE LIKE SY-UCOMM,
SIEGES_LIBRES LIKE ZCHSFLIG-SEATSOCC,
NB_SIEGES LIKE ZCHSFLIG-SEATSOCC,
VILLEDEP LIKE ZCHSPFLI-CITYFROM,
VILLEARR LIKE ZCHSPFLI-CITYTO,
PCARRID LIKE ZCHSPFLI-CARRID,
PCONNID LIKE ZCHSPFLI-CONNID,
DATE_VOL LIKE ZCHSFLIG-FLDATE,
NUMCLIENT LIKE ZCHSBOOK-CUSTOMID,
MAXNUMCLIENT LIKE ZCHSBOOK-CUSTOMID,
MAXIMUM LIKE ZCHSBOOK-BOOKID.

DATA: AFFAIRES TYPE C,
PRIVE TYPE C,
FUMEUR TYPE C,
CAFF TYPE C,
CECO TYPE C,
CPREM TYPE C.

DATA: TOTALAPAYER LIKE ZCHSFLIG-PAYMENTSUM,
QUALITEVOYAGE(20) TYPE C,
CLASSEVOYAGE(20) TYPE C,
YESORNO(3) TYPE C.

ZHENFIN :
* INCLUDE ZHFINO01. " PBO-Modules *
* INCLUDE ZHFINI01. " PAI-Modules *
* INCLUDE ZHFINF01. " FORM-Routines *

INCLUDE ZHFINO01.

L'Object Browser
Cours ABAP.doc Page 74 sur 181
ZHFINO01:
*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINO01 . *
*------------------------------------------------------------------------------------------------------------------- *
*&----------------------------------------------------------------------------------------------------------------- *
*& Module SET_PF_STATUS_1000 OUTPUT *
*&----------------------------------------------------------------------------------------------------------------- *

MODULE SET_PF_STATUS_1000 OUTPUT.

SET PF-STATUS 'MENU1000'.

ENDMODULE. " SET_PF_STATUS_1000 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Module INIT_1000 OUTPUT *
*&------------------------------------------------------------------------------------------------------------- ----*

MODULE INIT_1000 OUTPUT.
PERFORM init_menu1000.
ENDMODULE. " INIT_1000 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form init_menu1000 *
*&----------------------------------------------------------------------------------------------------------------- *

FORM init_menu1000.
CLEAR ZCHSPFLI.
CLEAR ZCHSFLIG.
CLEAR ZCHSBOOK.
CLEAR ZCHSCUST.
ENDFORM. " init_menu1000

*&-----------------------------------------------------------------------------------------------------------------*
*& Module READ_DATA_1000 OUTPUT *
*&----------------------------------------------------------------------------------------------------------------- *

MODULE READ_DATA_1000 OUTPUT.
PERFORM read_data_menu1000.
ENDMODULE. " READ_DATA_1000 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form read_data_menu1000 *
*&----------------------------------------------------------------------------------------------------------------- *

FORM read_data_menu1000
SELECT SINGLE * FROM ZCHSPFLI WHERE CARRID = 'LH'
AND CONNID = '400'.
DATE_VOL = SY-DATUM.
ENDFORM. " read_data_menu1000

ZHENFIN :

INCLUDE ZHFINI01.


L'Object Browser
Cours ABAP.doc Page 75 sur 181
ZHFINI01:

*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINI01 . *
*-------------------------------------------------------------------------------------------------------------------*
*&----------------------------------------------------------------------------------------------------------------- *
*& Module USER_COMMAND_1000 INPUT *
*&-----------------------------------------------------------------------------------------------------------------*

MODULE USER_COMMAND_1000 INPUT.
PERFORM USER_COMMAND_MENU1000.
ENDMODULE. " USER_COMMAND_1000 INPUT

*&-----------------------------------------------------------------------------------------------------------------*
*& Module USER_COMMAND_1000_E INPUT *
*&----------------------------------------------------------------------------------------------------------------- *

MODULE USER_COMMAND_1000_E INPUT.
PERFORM USER_COMMAND_MENU1000_E.
ENDMODULE. " USER_COMMAND_1000_E INPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form USER_COMMAND_MENU1000 *
*&-----------------------------------------------------------------------------------------------------------------*

FORM USER_COMMAND_MENU1000.
CASE FCODE.
WHEN 'DETA'.
PERFORM passage.
ENDCASE.
ENDFORM. " USER_COMMAND_MENU1000

*&-----------------------------------------------------------------------------------------------------------------*
*& Form USER_COMMAND_MENU1000_E *
*&----------------------------------------------------------------------------------------------------------------- *

FORM USER_COMMAND_MENU1000_E.
CASE FCODE.
WHEN 'SORT'.
LEAVE PROGRAM.
ENDCASE.
ENDFORM. " USER_COMMAND_MENU1000_E

*&----------------------------------------------------------------------------------------------------------------- *
*& Module SAVE_DATA_1000 INPUT *
*&----------------------------------------------------------------------------------------------------------------- *

MODULE SAVE_DATA_1000 INPUT.
PERFORM SAVE_DATA_MENU1000.
ENDMODULE. " SAVE_DATA_1000 INPUT

*&-----------------------------------------------------------------------------------------------------------------*
*& Form SAVE_DATA_MENU1000 *
*&----------------------------------------------------------------------------------------------------------------- *

FORM SAVE_DATA_MENU1000.
MOVE ZCHSPFLI-CITYFROM TO VILLEDEP.
MOVE ZCHSPFLI-CITYTO TO VILLEARR.
SELECT * FROM ZCHSPFLI WHERE CITYFROM = VILLEDEP
AND CITYTO = VILLEARR.
L'Object Browser
Cours ABAP.doc Page 76 sur 181
MOVE ZCHSPFLI-CARRID TO PCARRID.
MOVE ZCHSPFLI-CONNID TO PCONNID.
SELECT * FROM ZCHSFLIG WHERE CARRID = PCARRID
AND CONNID = PCONNID.
IF SY-SUBRC = 0.
MOVE DATE_VOL TO ZCHSFLIG-FLDATE.
INSERT ZCHSFLIG.
ENDIF.
ENDSELECT.
ENDSELECT.
ENDFORM. " SAVE_DATA_MENU1000

*&----------------------------------------------------------------------------------------------------------------- *
*& Form passage *
*&----------------------------------------------------------------------------------------------------------------- *

FORM passage.
SELECT SINGLE * FROM ZCHSPFLI WHERE CITYFROM = VILLEDEP
AND CITYTO = VILLEARR.
IF SY-SUBRC NE 0.
MESSAGE i020.
ELSE.
IF DATE_VOL LT SY-DATUM.
MESSAGE i023.
ELSE.
CALL SCREEN 1100.
ENDIF.
ENDIF.
ENDFORM. " passage

*&----------------------------------------------------------------------------------------------------------------- *
*& Module SAVE_DATA_MENU1000 INPUT *
*&----------------------------------------------------------------------------------------------------------------- *

MODULE SAVE_DATA_MENU1000 INPUT.
PERFORM SAVE_DATA_MENU1000.
ENDMODULE. " SAVE_DATA_MENU1000 INPUT

ZHENFIN:

INCLUDE ZHFINO02.

ZHFINO02 :

*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINO02 . *
*---------------------------------------------------------------------------------------- ---------------------------*
*&----------------------------------------------------------------------------------------------------------------- *
*& Module SET_PF_STATUS_1100 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE SET_PF_STATUS_1100 OUTPUT.
SET PF-STATUS 'MENU1100'.
ENDMODULE. " SET_PF_STATUS_1100 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Module INIT_1100 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
L'Object Browser
Cours ABAP.doc Page 77 sur 181
* text *
*------------------------------------------------------------------------------------------------------------------- *
MODULE INIT_1100 OUTPUT.
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING and return to screen 1000.
ENDMODULE. " INIT_1100 OUTPUT

ZHENFIN :

INCLUDE ZHFINI02.

ZHFINI02 :

*------------------------------------------------------------------------------------------------------------------- *
***INCLUDE ZHFINI02 . *
*------------------------------------------------------------------------------------------------------------------- *
*&----------------------------------------------------------------------------------------------------------------- *
*& Module AFFICHAGE_DONNEES INPUT *
*&----------------------------------------------------------------------------------------------------------------- *
* text *
*-------------------------------------------------------------------------------------------------------------------*
MODULE AFFICHAGE_DONNEES INPUT.
WRITE: / VILLEDEP, VILLEARR, DATE_VOL.
SKIP 2.
WRITE: / 'Cie',5 'Vol',15'Dpart',30 'Arrive',50 'Places',60 'Prix'.
SKIP.
ULINE.
FORMAT INTENSIFIED OFF.

SELECT * FROM ZCHSPFLI WHERE CITYFROM = VILLEDEP
AND CITYTO = VILLEARR.
SELECT SINGLE * FROM ZCHSFLIG WHERE CARRID = ZCHSPFLI-CARRID
AND CONNID = ZCHSPFLI-CONNID
AND FLDATE = DATE_VOL.
SIEGES_LIBRES = ZCHSFLIG-SEATSMAX - ZCHSFLIG-SEATSOCC.
WRITE: / ZCHSPFLI-CARRID,5 ZCHSPFLI-CONNID,15 ZCHSPFLI-DEPTIME,
30 ZCHSPFLI-ARRTIME,
50 SIEGES_LIBRES LEFT-JUSTIFIED,
60 ZCHSFLIG-PRICE LEFT-JUSTIFIED.
HIDE: ZCHSPFLI-CARRID, ZCHSPFLI-CONNID, SIEGES_LIBRES.
CLEAR ZCHSFLIG.

ENDSELECT.
FORMAT INTENSIFIED ON.

ENDMODULE. " AFFICHAGE_DONNEES INPUT

ZHENFIN :

INCLUDE ZHFINAT1.

ZHFINAT1:

*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINAT1 . *
*-------------------------------------------------------------------------------------------------------------------*
*&----------------------------------------------------------------------------------------------------------------- *
*& Event AT LINE_SELECTION *
*&-----------------------------------------------------------------------------------------------------------------*

L'Object Browser
Cours ABAP.doc Page 78 sur 181
AT LINE-SELECTION.
PERFORM SOURIS.

*&----------------------------------------------------------------------------------------------------------------- *
*& Form SOURIS *
*&----------------------------------------------------------------------------------------------------------------- *
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *

FORM SOURIS.

CASE SY-LSIND.
WHEN '1'.
PERFORM DETAILS.
ENDCASE.

ENDFORM. " SOURIS

*&----------------------------------------------------------------------------------------------------------------- *
*& Form DETAILS *
*&--------------------------------------------------------------------------------------------- --------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *

FORM DETAILS.
IF SY-CUROW GT 6.
PCARRID = ZCHSPFLI-CARRID.
PCONNID = ZCHSPFLI-CONNID.
CALL SCREEN 1200.
ENDIF.
ENDFORM. " DETAILS

ZHENFIN :

INCLUDE ZHFINO03.

ZHFINO03 :
*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINO03 . *
*-------------------------------------------------------------------------------------------------- -----------------*
*&----------------------------------------------------------------------------------------------------------------- *
*& Module SET_PF_STATUS_1200 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE SET_PF_STATUS_1200 OUTPUT.
SET PF-STATUS 'MENU1200'.
ENDMODULE. " SET_PF_STATUS_1200 OUTPUT


*&----------------------------------------------------------------------------------------------------------------- *
*& Module READ_DATA_1200 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
L'Object Browser
Cours ABAP.doc Page 79 sur 181
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE READ_DATA_1200 OUTPUT.
ZCHSBOOK-CUSTOMID = NUMCLIENT.
ENDMODULE. " READ_DATA_1200 OUTPUT

ZHENFIN:

INCLUDE ZHFINI03.

ZHFINI03 :
*------------------------------------------------------------------------------------------------------------------- *
***INCLUDE ZHFINI03 . *
*------------------------------------------------------------------------------------------------------------------- *
*&----------------------------------------------------------------------------------------------------------------- *
*& Module USER_COMMAND_1200 INPUT *
*&----------------------------------------------------------------------------------------------------------------- *
* text *
*------------------------------------------------------------------------------------------------------------ -------*

MODULE USER_COMMAND_1200 INPUT.
CASE FCODE.
WHEN 'RETO'.
LEAVE TO SCREEN 0.
WHEN 'SORT'.
LEAVE PROGRAM.
WHEN 'RESE'.
SELECT MAX( ID ) FROM ZCHSCUST INTO MAXNUMCLIENT.
IF NB_SIEGES < SIEGES_LIBRES.
PERFORM TRAITEMENT_MENU1200.
IF NUMCLIENT IS INITIAL.
CALL SCREEN 1300.
ELSE.
IF NUMCLIENT GT MAXNUMCLIENT.
MESSAGE i021.
ELSE.
CALL SCREEN 1350.
ENDIF.
ENDIF.
ELSE.
MESSAGE i019.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_1200 INPUT

*&-----------------------------------------------------------------------------------------------------------------*
*& Form TRAITEMENT_MENU1200 *
*&----------------------------------------------------------------------------------------------------------------- *
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------- ------------------*
*------------------------------------------------------------------------------------------------------------------- *
* Sauvegarde des lments concernant le vol dsir *
* dans la table ZCHSFLIG *
*------------------------------------------------------------------------------------------------------------------- *

FORM TRAITEMENT_MENU1200.
L'Object Browser
Cours ABAP.doc Page 80 sur 181
SELECT SINGLE * FROM ZCHSFLIG WHERE CARRID = PCARRID
AND CONNID = PCONNID
AND FLDATE = DATE_VOL.
ADD NB_SIEGES TO ZCHSFLIG-SEATSOCC.
ZCHSFLIG-PAYMENTSUM = ZCHSFLIG-PAYMENTSUM
+ ( NB_SIEGES * ZCHSFLIG-PRICE ).
MODIFY ZCHSFLIG.

*------------------------------------------------------------------------------------------------------------------- *
* Sauvegarde des lments concernant le client dans *
* la table ZCHSBOOK. *
*------------------------------------------------------------------------------------------------------------------- *

SELECT MAX( BOOKID ) FROM ZCHSBOOK INTO MAXIMUM
WHERE CARRID = PCARRID
AND CONNID = PCONNID.
MOVE PCARRID TO ZCHSBOOK-CARRID.
MOVE PCONNID TO ZCHSBOOK-CONNID.
MOVE DATE_VOL TO ZCHSBOOK-FLDATE.
ADD 1 TO MAXIMUM.
MOVE MAXIMUM TO ZCHSBOOK-BOOKID.
IF AFFAIRES = 'X'.
ZCHSBOOK-CUSTTYPE = 'B'.
ELSE.
ZCHSBOOK-CUSTTYPE = 'P'.
ENDIF.
IF Fumeur = 'X'.
ZCHSBOOK-SMOKER = 'X'.
ENDIF.
IF CAFF = 'X'.
ZCHSBOOK-CLASS = 'C'.
ELSE.
IF CECO = 'X'.
ZCHSBOOK-CLASS = 'Y'.
ELSE.
ZCHSBOOK-CLASS = 'F'.
ENDIF.
ENDIF.
MOVE NUMCLIENT TO ZCHSBOOK-CUSTOMID.
INSERT ZCHSBOOK.
ENDFORM. " TRAITEMENT_MENU1200

ZHENFIN :

INCLUDE ZHFINO04.


ZHFINO04 :
*-------------------------------------------------------------------------------------------------------------------*
*INCLUDE ZHFINO04 . *
*-------------------------------------------------------------------------------------------------------------------*
*&-----------------------------------------------------------------------------------------------------------------*
*& MODULE SET_PF_STATUS_1300 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* TEXT *
*-------------------------------------------------------------------------------------------------------------------*
MODULE SET_PF_STATUS_1300 OUTPUT.
SET PF-STATUS 'MENU1300'.
ENDMODULE. " SET_PF_STATUS_1300 OUTPUT

L'Object Browser
Cours ABAP.doc Page 81 sur 181
*&----------------------------------------------------------------------------------------------------------------- *
*& Module INIT_1300 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE INIT_1300 OUTPUT.
PERFORM INIT_MENU1300.
ENDMODULE. " INIT_1300 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form INIT_MENU1300 *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *

FORM INIT_MENU1300.
SELECT MAX( ID ) FROM ZCHSCUST INTO NUMCLIENT.
NUMCLIENT = NUMCLIENT + 1.
MOVE NUMCLIENT TO ZCHSCUST-ID.
ENDFORM. " INIT_MENU1300

*&----------------------------------------------------------------------------------------------------------------- *
*& Module SET_PF_STATUS_1350 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE SET_PF_STATUS_1350 OUTPUT.
SET PF-STATUS 'MENU1300'.
ENDMODULE. " SET_PF_STATUS_1350 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Module INIT_1350 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE INIT_1350 OUTPUT.
PERFORM INIT_MENU1350.
ENDMODULE. " INIT_1350 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form INIT_MENU1350 *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *

FORM INIT_MENU1350.
SELECT SINGLE * FROM ZCHSCUST WHERE ID = NUMCLIENT.
ENDFORM. " INIT_MENU1350

ZHENFIN :
INCLUDE ZHFINI04.
L'Object Browser
Cours ABAP.doc Page 82 sur 181

ZHFINI04 :
*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINI04 . *
*---------------------------------------------------------------------------------------------------------- ---------*
*&----------------------------------------------------------------------------------------------------------------- *
*& Module USER_COMMAND_1300 INPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE USER_COMMAND_1300 INPUT.
PERFORM USER_COMMAND_MENU1300.
ENDMODULE. " USER_COMMAND_1300 INPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form USER_COMMAND_MENU1300 *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *
FORM USER_COMMAND_MENU1300.
CASE FCODE.
WHEN 'RETO'.
LEAVE TO SCREEN 0.
WHEN 'SORT'.
LEAVE PROGRAM.
WHEN 'CSAV'.
PERFORM SAUVEGARDE_DU_CLIENT.
CALL SCREEN 1400.
ENDCASE.
ENDFORM. " USER_COMMAND_MENU1300

*&----------------------------------------------------------------------------------------------------------------- *
*& Form SAUVEGARDE_DU_CLIENT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *

FORM SAUVEGARDE_DU_CLIENT.
TRANSLATE ZCHSCUST-NAME TO UPPER CASE.
TRANSLATE ZCHSCUST-STREET TO UPPER CASE.
TRANSLATE ZCHSCUST-CITY TO UPPER CASE.
TRANSLATE ZCHSCUST-COUNTRY TO UPPER CASE.
SELECT SINGLE * FROM ZCHSCUST WHERE NAME = ZCHSCUST-NAME
AND STREET = ZCHSCUST-STREET
AND CITY = ZCHSCUST-CITY
AND COUNTRY = ZCHSCUST-COUNTRY.
IF SY-SUBRC = 0.
MESSAGE i022.
CALL SCREEN 1350.
ELSE.
MOVE ZCHSCUST-ID TO NUMCLIENT.
INSERT ZCHSCUST.
ENDIF.
L'Object Browser
Cours ABAP.doc Page 83 sur 181

ENDFORM. " SAUVEGARDE_DU_CLIENT

*&----------------------------------------------------------------------------------------------------------------- *
*& Module USER_COMMAND_1350 INPUT *
*&----------------------------------------------------------------------------------------------------------------- *
* text *
*-------------------------------------------------------------------------------------- -----------------------------*

MODULE USER_COMMAND_1350 INPUT.
CASE FCODE.
WHEN 'RETO'.
LEAVE TO SCREEN 0.
WHEN 'SORT'.
LEAVE PROGRAM.
WHEN 'DACC'.
MOVE ZCHSCUST-ID TO NUMCLIENT.
CALL SCREEN 1400.
ENDCASE.

ENDMODULE. " USER_COMMAND_1350 INPUT

ZHENFIN :
INCLUDE ZHFINO05.

ZHFINO05 :
*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINO05 . *
*-------------------------------------------------------------------------------------------------------------------*
*&----------------------------------------------------------------------------------------------------------------- *
*& Module SET_PF_STATUS_1400 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE SET_PF_STATUS_1400 OUTPUT.
SET PF-STATUS 'MENU1400'.
ENDMODULE. " SET_PF_STATUS_1400 OUTPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Module INIT_1400 OUTPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE INIT_1400 OUTPUT.
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 1000.
ENDMODULE. " INIT_1400 OUTPUT

ZHENFIN :
INCLUDE ZHFINI05..

ZHFINI05 :
*------------------------------------------------------------------------------------------------------------------- *
*INCLUDE ZHFINI05 . *
*------------------------------------------------------------------------------------------------------------------- *
*&---------------------------------------------------------------------------------------------------------------- -*
*& Module AFFICHAGE INPUT *
*&----------------------------------------------------------------------------------------------------------------- *
L'Object Browser
Cours ABAP.doc Page 84 sur 181
* text *
*-------------------------------------------------------------------------------------------------------------------*

MODULE AFFICHAGE INPUT.
PERFORM FACTURATIONS.
ENDMODULE. " AFFICHAGE INPUT

*&----------------------------------------------------------------------------------------------------------------- *
*& Form FACTURATIONS *
*&----------------------------------------------------------------------------------------------------------------- *
* text *
*-------------------------------------------------------------------------------------------- -----------------------*
* --> p1 text *
* <-- p2 text *
*------------------------------------------------------------------------------------------------------------------- *

FORM FACTURATIONS.

CALL FUNCTION 'OPEN_FORM'
* EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX = ' '
* ARCHIVE_PARAMS = ' '
* DEVICE = 'PRINTER'
* DIALOG = 'X'
* FORM = ' '
* LANGUAGE = SY-LANGU
* OPTIONS = ' '
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
OTHERS = 6.

CALL FUNCTION 'START_FORM'
EXPORTING
* ARCHIVE_INDEX = ' '
FORM = 'ZHENFINFACT'
LANGUAGE = SY-LANGU
* STARTPAGE = ' '
* PROGRAM = ' '
* IMPORTING
* LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
OTHERS = 6.

SELECT * FROM ZCHSCUST WHERE ID = NUMCLIENT.

CALL FUNCTION 'WRITE_FORM'
L'Object Browser
Cours ABAP.doc Page 85 sur 181
EXPORTING
ELEMENT = 'CLIENT'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'ADRESSE'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
OTHERS = 7.
ENDSELECT.

SELECT * FROM ZCHSPFLI WHERE CARRID = PCARRID
AND CONNID = PCONNID.
SELECT SINGLE * FROM ZCHSFLIG WHERE CARRID = PCARRID
AND CONNID = PCONNID
AND FLDATE = DATE_VOL.
SELECT SINGLE * FROM ZCHSBOOK WHERE CARRID = PCARRID
AND CONNID = PCONNID
AND FLDATE = DATE_VOL
AND BOOKID = NUMCLIENT.


IF ZCHSBOOK-SMOKER = 'X'.
YESORNO = 'OUI'.
ELSE.
YESORNO = 'NON'.
ENDIF.
CASE ZCHSBOOK-CLASS.
WHEN 'C'.
CLASSEVOYAGE = 'Classe affaire'.
TOTALAPAYER = ( NB_SIEGES * ZCHSFLIG-PRICE
* ( 1 - ZCHSCUST-DISCOUNT ) ) * '0.95'.
WHEN 'Y'.
CLASSEVOYAGE = 'Classe conomique'.
TOTALAPAYER = ( NB_SIEGES * ZCHSFLIG-PRICE
* ( 1 - ZCHSCUST-DISCOUNT ) ) * '0.88'.
WHEN 'F'.
CLASSEVOYAGE = 'Premire classe'.
TOTALAPAYER = ( NB_SIEGES * ZCHSFLIG-PRICE
* ( 1 - ZCHSCUST-DISCOUNT ) ).
ENDCASE.
CASE ZCHSBOOK-CUSTTYPE.
WHEN 'B'.
QUALITEVOYAGE = 'Voyage d''affaire'.
WHEN 'P'.
QUALITEVOYAGE = 'Voyage priv'.
ENDCASE.

CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'FACTURAT'
* FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
L'Object Browser
Cours ABAP.doc Page 86 sur 181
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
OTHERS = 7.

ENDSELECT.

CALL FUNCTION 'END_FORM'
* IMPORTING
* RESULT =
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.

CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* TABLES
* OTFDATA =
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.

ENDFORM. " FACTURATIONS

*&----------------------------------------------------------------------------------------------------------------- *
*& Module USER_COMMAND_1400 INPUT *
*&-----------------------------------------------------------------------------------------------------------------*
* text *
*------------------------------------------------------------------------------------------------------------------- *

MODULE USER_COMMAND_1400 INPUT.
* CASE FCODE.
* WHEN 'BACK'.
* LEAVE TO SCREEN 0.
* WHEN 'SORT'.
* LEAVE PROGRAM.
* ENDCASE.
ENDMODULE. " USER_COMMAND_1400 INPUT

Le Batch Input
Cours ABAP.doc Page 87 sur 181
Le Batch Input


Le batch input

Il sagit du transfert dinformation dun ancien systme vers SAP. En thorie, larrive du dveloppeur ABAP,
il doit disposer dun fichier texte, (appel fichier squentiel) contenant les informations de lancien systme
transcrire (premire conversion dj effectue).
Interfaage entre SAP et un autre systme

L'interfaage entre le logiciel externe et SAP peut se faire dans les deux sens. Les instructions utiliser sont
donnes ci-dessous.

Ancien systme vers SAP
1) OPEN DATASET Nomfichier1. (par ex : Nomfichier1 = C:\SAPpc\fichseq1.txt)
READ DATASET Nomfichier1 TO NomTabInt1.
CLOSE DATASET NomFichier1.

ou 2) CALL FUNCTION Ws_Upload (c'est une fonction, et cest + rapide)
EXPORTING
FILENAME = C:\SAPpc\fichseq1.txt
TABLES
DATA_TAB = NomTabInt1 ( dclarer avant)
EXCEPTIONS


SAP vers ancien systme
1) OPEN DATASET Nomfichier1. (par ex: Nomfichier1 = C:\SAPpc\fichseq1.txt)
TRANSFERT DATASET NomTabInt1 TO Nomfichier1.
CLOSE DATASET NomFichier1.

ou 2) CALL FUNCTION Ws_Download (+ rapide)
EXPORTING
filename = C:\SAPpc\fichseq1.txt
TABLES
data_tab = NomTabInt1 ( dclarer avant)
EXCEPTIONS


Remarques: 1) les fichiers sont squentiels, de type texte (utiliser un diteur (bloc-notes, Word, works,
etc.)),
2) utiliser le bouton pour appeler la fonction avec l'ensemble de ces paramtres
(rfrencs en commentaires ne pas oublier denlever l* devant exporting par exemple),
3) pour utiliser Word choisir le format ".txt" avec saut de ligne (cela fonctionne, dj test).

Mise en uvre du Batch Input

Sur l'ancien systme, raliser :
le transfert des informations vers un fichier squentiel de type texte,
la rcupration des donnes du fichier par la fonction Ws_Upload dans une table interne cre tout
spcialement,
remarques: 1) NomTabInt1par exemple, contient autant de champs qu'il y a dinformations sur
une ligne du fichier squentiel, ses types seront des caractres et chanes
decaractres,
2) dans lcran de saisie manuelle, placer le curseur dans le champ concern,
appuyer sur F1 puis cliquer sur info. technique afin de visualiser le nom du champ et
toutes les autres informations ncessaires (nom de la table systme o sera stock la
donne par exemple, n du dynpro, etc.)
Le Batch Input
Cours ABAP.doc Page 88 sur 181
l' appel de la fonction Bdc_Open_Group
EXPORTING
CLIENT = sy-mandt
GROUP = NomGroup1 nom du dossier de Batch Input (8 lettres maxi)
USER = sy-uname
une boucle sur NomTabInt1par :
LOOP AT NomTabInt1.
PERFORM Bdc_Dynpro USING: dclar la fin, permet de remplir les champs
X Saplmgmm 0060 ,
Rmmg1-Matnr NomTabInt1-Article,
Rmmg1-Mbrsh NomTabInt1-Branche,
Bdc_Okcode AUSW,
X Saplmgmm 0070,
Msichtausw(01) 'X,
remarque: /0 quivaut entre (dans le Okcode)

la rcupration par la fonction Bdc_Insert dans la table interne (aussi nomme DynproTab)
Bdc_Tab, table interne dclare comme ayant la structure de la table systme BdcData.
CALL FUNCTION 'Bdc_Insert'
EXPORTING
TCODE = CodeTransaction1
TABLES
DYNPROTAB = Bdc_Tab
EXCEPTIONS

l'appel de la fonction Bdc_Close_Group
la dclaration, en fin de programme, de la routine Bdc_Dynpro
FORM Bdc_Dynpro USING DynBegin Field Value.
IF DynBegin = X .
CLEAR Bdc_Tab.
Bdc_Tab-Program = Field.
Bdc_Tab-Dynpro = Value.
Bdc_Tab-DynBegin = X.
APPEND Bdc_Tab.
ELSE.
CLEAR Bdc_Tab.
Bdc_Tab-Fnam = Field.
Bdc_Tab-Fval = value.
Bdc_Tab-DynBegin = .
APPEND Bdc_Tab.
ENDIF.
ENDFORM.

lancement du Batch Input

Lancer le programme ABAP/4 (F8).
Ensuite, aller dans le menu Systme Service Batch Input Traiter, rechercher le nom donn au dossier de
Batch Input NomGroup1 (dans la fonction Bdc_Open_Group)

Exercice sur l'importation de donnes

Crer un fichier texte et l'importer sous SAP.

Fichier de dpart, sous le bloc-notes WINDOWS :

Vlo 1275 F
Moto 68936 F
mobylette 12847 F

Le Batch Input
Cours ABAP.doc Page 89 sur 181
Chaque champ de ce fichier a une longueur de 10 (longueur rappele dans la table interne).

Programme ABAP/4 pour importer les donnes :

REPORT ZHENBATC NO STANDARD PAGE HEADING.

DATA: BEGIN OF ITAB_CYCLO OCCURS 0,
ARTICLE(10) TYPE C,
PRIX(10) TYPE C,
DEVISE(10) TYPE C,
END OF ITAB_CYCLO.


CALL FUNCTION 'WS_UPLOAD'
EXPORTING
* CODEPAGE = ' '
FILENAME = 'C :\SAPPC\BATCHINPUT.TXT'
* FILETYPE = ' '
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = ITAB_CYCLO
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.

LOOP AT ITAB_CYCLO.
WRITE: /10 ITAB_CYCLO-ARTICLE, 25 ITAB_CYCLO-PRIX, 40 ITAB_CYCLO-DEVISE.
ENDLOOP.

Le Batch Input
Cours ABAP.doc Page 90 sur 181
Jeu d'essai :



Les bons reflexes:

Toujours penser, lorsque l'on fait appel une fonction ou tout autre outil sous l'diteur ABAP/4 (sous-
programmes, etc. ), de passer par un modle (bouton "Modle"), ce qui permet de rcuprer correctement la
syntaxe, ainsi que les options (voir, dans le listing, l'appel la fonction WS_UPLOAD).

Le Batch Input
Cours ABAP.doc Page 91 sur 181
Informations sur le batch input

O rechercher les informations ncessaires pour raliser le Batch-Input. Un exemple avec la gestion des articles.
Cliquer sur Logistique gestion des articles fiche article, puis Articles cration gnrale
immdiatement. On aboutit l'cran suivant :



Positionner le curseur sur une des zones (par exemple, sur la zone "Article"), puis appuyer sur la touche "F1", et
slectionner l'option "Info technique", pour accder l'cran suivant :


On trouve, dans cet cran, toutes les donnes ncessaires pour renseigner le programme ABAP/4 qui fera le
Batch Input (zones importantes dans le schma ci-dessus) Lorsque apparaissent des noms de programme et des
numros d'crans dans la catgorie "Dsignation de zone pour batch input", ce sont ces donnes l qu'il faudra
prendre en compte dans le programme ABAP/4.
Il faut alors noter, en suivant scrupuleusement le cheminement des crans, les diverses donnes
ncessaires pour renseigner le programme de Batch Input.
Zones
importantes
Le Batch Input
Cours ABAP.doc Page 92 sur 181

Mise en uvre d'un dossier Batch Input

Reprenons l'exemple des articles intgrer SAP R/3. Ces articles sont saisis dans le fichier squentiel
Batchinput.txt.
Ce travail constitue en fait la premire tache accomplir avant de crer un dossier de Batch Input. Il faut en effet
que les donnes reprises dans le fichier squentiel soit formates selon leurs caractristiques futures dans SAP
R/3. Pour cela, il faut bien sr aller rechercher dans SAP R/3 les caractristiques des zones dans lesquelles seront
sauvegardes les nouvelles valeurs dsires.
Le fichier Batchinput.txt comprendra les champs suivants : dsignation, branche, type, quantit, langue et
description
Les oprations raliser dans le programme ABAP/4 sont les suivantes :
dfinir une table interne (ITAB_ARTICLES reprenant les champs du fichier texte),
dfinir la table interne BDC (ITAB_BDC ayant la mme structure que la table BDCDATA),
appeler la fonction WS_UPLOAD,
vrifier la vracit des donnes importes,
appeler de la fonction BDC_OPEN_GROUP,
remplir la table BDC (avec un sous-programme),
appeler la fonction BDC_INSERT,
appeler la fonction BDC_CLOSE_GROUP.

Fichier Batchinput.txt :

Vloh2 MCONT001FVlo pour homme
Vlof2 ADIEN002DVlo pour femme
VTTh2 MERSA004EVlo tout terrain pour homme
VTTf2 AFERT007FVlo tout terrain pour femme

Collecte des donnes ncessaires pour le rapatriement des donnes.
1
er
cran (snapshot ralis avec "Article") :

Donnes extraites pour Article :
Nom programme SAPLMGMM
Numro d'cran 0060
Nom de table RMMG1
Nom de zone MATNR
Donnes extraites pour Branche :
Nom programme SAPLMGMM
Le Batch Input
Cours ABAP.doc Page 93 sur 181
Numro d'cran 0060
Nom de table RMMG1
Nom de zone MBRSH
Donnes extraites pour Type :
Nom programme SAPLMGMM
Numro d'cran 0060
Nom de table RMMG1
Nom de zone MTART
Il faut ensuite noter les donnes concernant l'cran de slection des vues.

2
me
cran (Slection des vues) :

Donnes extraites pour l'cran de slection des vues :
Nom programme SAPLMGMM
Numro d'cran 0070
Nom de table MSICHTAUSW
Nom de zone DYTXT


Le Batch Input
Cours ABAP.doc Page 94 sur 181
3
me
cran (Donnes de base, zone Unit de quantit base)

Donnes extraites pour Unit de quantit base :
Nom de table MARA
Nom de zone MEINS
Nom programme SAPLMGMM
Numro d'cran 3004
Donnes extraites pour Unit de quantit base :
Nom de table SKTEXT
Nom de zone SPRAS
Nom programme SAPLMGMM
Numro d'cran 3004
Donnes extraites pour Unit de quantit base :
Nom de table SKTEXT
Nom de zone MAKTX
Nom programme SAPLMGMM
Numro d'cran 3004

Le Batch Input
Cours ABAP.doc Page 95 sur 181
Le programme ABAP/4

REPORT ZHENBATC NO STANDARD PAGE HEADING.

DATA: BEGIN OF ITAB_ARTICLES OCCURS 0,
ARTICLE(18) TYPE C,
BRANCHE(1) TYPE C,
ATYPE(4) TYPE C,
QUANTITE(3) TYPE C,
LANGUE(1) TYPE C,
DESCRIPTION(40) TYPE C,
END OF ITAB_ARTICLES.
DATA: BEGIN OF ITAB_BDC OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF ITAB_BDC.

*----------------------------------------------------------------------------------------------------------- *
* Chargement des donnes stockes dans le fichier *
* squentiel dans la table interne ITAB_ARTICLES. *
*----------------------------------------------------------------------------------------------------------- *

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
* CODEPAGE = ' '
FILENAME = 'C:\SAPPC\batchinput.txt'
* FILETYPE = ' '
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '

* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = ITAB_ARTICLES
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.

*--------------------------------------------------------------------------------------- --------------------*
* Test des valeurs pour en vrifier l'exactitude. *
*----------------------------------------------------------------------------------------------------------- *

LOOP AT ITAB_ARTICLES.
WRITE: / ITAB_ARTICLES-ARTICLE,
20 ITAB_ARTICLES-BRANCHE,
25 ITAB_ARTICLES-ATYPE,
30 ITAB_ARTICLES-QUANTITE,
35 ITAB_ARTICLES-LANGUE,
38 ITAB_ARTICLES-DESCRIPTION.
ENDLOOP.

*-------------------------------------------------------------------------------------------------- ---------*
Le Batch Input
Cours ABAP.doc Page 96 sur 181
* Appel la fonction BDC_OPEN_GROUP pour l'ouverture *
* du dossier BATCH INPUT. *
*-----------------------------------------------------------------------------------------------------------*

CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = 'CHENBATC' " Nom du dossier Batch Input
* HOLDDATE = FILLER8
* KEEP = 'X'
USER = SY-UNAME
* RECORD = FILLER1
* IMPORTING
* QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.

*--------------------------------------------------------------------------------------------------------- --*
* Remplissage de la table BDC_ITAB au moyen du sous-programme *
* BDC_DYNPRO, puis remplissage de la table DYNPROTAB au moyen *
* de la fonction BDC_INSERT pour le remplissage du dossier *
* BATCH INPUT. *
*----------------------------------------------------------------------------------------------------------- *

LOOP AT ITAB_ARTICLES.
PERFORM BDC_DYNPRO USING :
'X' 'SAPLMGMM' '0060',
' ' 'RMMG1-MATNR' ITAB_ARTICLES-ARTICLE,
' ' 'RMMG1-MBRSH' ITAB_ARTICLES-BRANCHE,
' ' 'RMMG1-MTART' ITAB_ARTICLES-ATYPE,
' ' 'BDC_OKCODE' 'AUSW',
'X' 'SAPLMGMM' '0070',
' ' 'MSICHTAUSW-KZSEL(01)' 'X',
' ' 'BDC_OKCODE' '/0',
'X' 'SAPLMGMM' '3004',
' ' 'MARA-MEINS' ITAB_ARTICLES-QUANTITE,
' ' 'SKTEXT-SPRAS(01)' ITAB_ARTICLES-LANGUE,
' ' 'SKTEXT-MAKTX(01)' ITAB_ARTICLES-DESCRIPTION,
' ' 'BDC_OKCODE' '/0',
' ' 'BDC_OKCODE' '/0'.

CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'MM01'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
TABLES
DYNPROTAB = ITAB_BDC
EXCEPTIONS
Le Batch Input
Cours ABAP.doc Page 97 sur 181
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.

CLEAR ITAB_BDC.
REFRESH ITAB_BDC.

ENDLOOP.

*----------------------------------------------------------------------------------------------------------- *
* Appel la fonction BDC_CLOSE_GROUP, pour fermer le *
* dossier BATCH INPUT. *
*----------------------------------------------------------------------------------------------------------- *

CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
*----------------------------------------------------------------------------------------------------------- *
* Form BDC_DYNPRO *
*----------------------------------------------------------------------------------------------------------- *
* Sous-programme pour le remplissage de la table ITAB_BDC *
*-----------------------------------------------------------------------------------------------------------*

FORM BDC_DYNPRO USING DYNBEGIN CHAMP1 VALEUR.
IF DYNBEGIN ='X'.
CLEAR ITAB_BDC.
ITAB_BDC-PROGRAM = CHAMP1.
ITAB_BDC-DYNPRO = VALEUR.
ITAB_BDC-DYNBEGIN = 'X'.
APPEND ITAB_BDC.
ELSE.
CLEAR ITAB_BDC.
ITAB_BDC-FNAM = CHAMP1.
ITAB_BDC-FVAL = VALEUR.
ITAB_BDC-DYNBEGIN = ' '.
APPEND ITAB_BDC.
ENDIF.
ENDFORM. " BDC_DYNPRO

Le Batch Input
Cours ABAP.doc Page 98 sur 181
Lancement du Batch Input

Dans Systme Service Batch input Traiter, on aboutit l'cran ci-dessous, dans lequel on donne le nom
du programme de Batch Input.



SAPscript
Cours ABAP.doc Page 99 sur 181
SAPscript

Les formulaires

Cration dun formulaire

Crer un formulaire Z_NomFormule1.
Renseigner ses attributs.
Crer ses pages (First, Next).
Crer ses fentres (toujours une fentre principale Main, type Const pour les fentres invariantes
(du style "Veuillez agrer "), Var pour les fentres variables (zone pour l'adresse d'un client,
numro de page, etc.)).
Remarques: 1) il faut au moins une fentre par page, la fentre Main tant indispensable,
2) on peut rutiliser la mme fentre dans plusieurs pages.
Crer des paragraphes: il est possible de choisir des polices et des tabulations prdfinies (il faut
renseigner, dans les attributs du formulaire, le paragraphe principal qui sera utilis).
Cre ses fentres de page: On dcrit ici physiquement les fentres, ainsi que leur emplacement dans
la page (dans la partie "Fentres de page", dans le menu Traiter Crer lment, choisir une
fentre, puis en prciser les caractristiques (distance du bord gauche, distance du bord suprieur,
largeur de la fentre et enfin hauteur de la fentre)).
Remarques: la rfrence de la page est le coin suprieur gauche. Les units que l'on peut utiliser
aisment sont "le caractre" ou le centimtre.
Crer les lments de texte pour chaque fentre : double cliquer sur une fentre dans la partie
"Fentres de page" de SAPscript et cliquer sur le bouton .
Renseigner la colonne de gauche qui prcise le type de la phrase qui suit (/* commentaire, *
paragraphe par dfaut, /E lment de texte, /: ligne de commande, tabulateurs et paragraphes
dfinis).
Crer des chanes de caractres (optionnel) : donne un format un mot ou un groupe de mots sur
une ligne. On dfinit une police (Helvetic 200 par exemple) quon nomme C. Dans tabulation on
crit P1 Coucou cest <C> MOA </>
Crer des feuilles de style (optionnel) : elles sont conues pour rcuprer paragraphes et chanes de
caractres dans dautres formulaires. On y accde par le menu Outils Traitement Feuille de
style. (voir chapitre 2, BC Style and Layout Set Maintenance)



SAPscript
Cours ABAP.doc Page 100 sur 181


Un clic sur le bouton afficher, la case en-tte tant coche :


SAPscript
Cours ABAP.doc Page 101 sur 181
Un clic sur le bouton Pages:



Un clic sur le bouton Fentres:



SAPscript
Cours ABAP.doc Page 102 sur 181
Un clic sur le bouton Paragraphes:


Un clic sur le bouton Fentres de page :



Un clic sur le bouton Elments de texte :

Cette fentre est constitue de deux colonnes : la premire comprend des lments de codage (matchcodes) et la
deuxime comprend le texte tap.
SAPscript
Cours ABAP.doc Page 103 sur 181


Avec le matchcode "Barre de style" :



Un aperu avant impression (sous le bouton Pages, menu Utilitaires Prsentation de page, puis Aperu avant
impression, l'unit de sortie valant NPFR) :

SAPscript
Cours ABAP.doc Page 104 sur 181


Impression d'un formulaire :

Crer un programme qui appelle les fonctions suivantes :
CALL FUNCTION 'Open_Form' indique quon va imprimer des Formulaires
CALL FUNCTION 'Start_Form' indique un des formulaires
EXPORTING
FORM = Z_NomFormule1
LANGUAGE = sy-langu
EXCEPTIONS

CALL FUNCTION 'Write_Form' autant que dlment imprimer
ELEMENT = NomElement1 si dclar dans les lments de texte (type /E)
TYPE = Top ou Body ou Bottom n'utiliser qu'avec la fentre MAIN
WINDOW = NomFenetre1
CALL FUNCTION 'End_Form' ferme un formulaire ouvert
CALL FUNCTION 'Close_Form' termine limpression

Remarques: 1) tout ce quon met entre cottes dans un formulaire doit tre crit en majuscules,
2) tout ce qu'on dfinit dans les parties Top et Bottom de la fentre Main sont automatiquement
rimprim sur toutes les pages o cette fentre Main est utilise.
3) dans lditeur des lments de texte, les variables sont encadres par &,
(ex : &TabInt-CityFrom& &TabInt-CityTo&)
4) pour utiliser les tabulations, sparer les & & par deux virgules (,,),
(ex : &TabInt-CityFrom&,, &TabInt-CityTo&)
5) pour imprimer un tableau:
/: BOX XPOS 1 cm YPOS 1.5 cm
= WIDTH 15 cm HEIGHT 18 cm FRAME 10 TW INTENSITY 15
(pour fixer une origine sur le coin suprieur gauche de la page ou de la fentre avec WINDOW, ou par
XORIGIN 5 cm YORIGIN 4 cm):
= POSITION PAGE
= SIZE WINDOW (trace un cadre autour de la fentre ou de la page si PAGE)

Remarque: 1) BOX WIDTH 0 cm pour tracer un trait vertical
2) BOX HEIGHT 0 cm pour tracer un trait horizontal

SAPscript
Cours ABAP.doc Page 105 sur 181
Attention: 1) il faut activer ou gnrer au maximum, toutefois la syntaxe est trs peu contrle dans les
lments de texte (vrifier les espaces notamment),
2) lorsquune valeur est nulle, le prciser avec son unit,
3) ne pas confondre le nom de llment et celui de la fentre.


Quelques commandes SAP pour le sapscript

/: Permet de mettre une ligne de commande.

* Paragraphe par dfaut.

P1 Paragraphe 1 permet d'crire des lignes de texte.

/E Elment de texte.

/ Avance ligne

/* Ligne de commentaire.

/: PROTECT
=
/: ENDPROTECT
ne coupera pas l'affichage de donnes groupes, si la place manque, en bas de page, mais
passera directement la page suivante.

/ : SET DATE MASK Metz, MM/DD/YYYY
= ...
/ : &date& ( lappel)
permet de crer un masque pour l'affichage de la date (ici, METZ, le 22/09/1998).

/ : STYLE NomStyle1
=
/ : STYLE *
tout ce qui est crit entre ces deux instructions sera crit dans le style dfini dans la
feuille de style NomStyle1.

/ : ADDRESS PARAGRAPH P1 Attention l'criture de ADDRESS (2 'D' et 2 'S').
=
/ : ENDADDRESS
crit les donnes sous le format ADRESSE, en utilisant le style du paragraphe P1.

/ : TOP
=
/ : ENDTOP
dfinit des donnes dans l'en-tte de la fentre Main, donnes qui seront affiches dans
toutes les pages o cette fentre Main a t dclare.

/ : BOTTOM
=
/ : ENDBOTTOM
dfinit des donnes dans le pied de la fentre Main, donnes qui seront affiches dans
toutes les pages o cette fentre Main a t dclare.

/ : IF Cond1
=
/ : ELSE
=
/ : ENDIF
permet de raliser des tests pour affichage slectif.
SAPscript
Cours ABAP.doc Page 106 sur 181
/ : CASE Var1
/ : WHEN 'Val1'
=
/: ENDCASE
permet de faire des tudes de cas pour un affichage slectif.

/ : PERFORM NomForm1 IN PROGRAM NomProgramme1
= USING &&
= CHANGING &&
/ : ENDPERFORM
permet de faire appel des routines (NomForm1) de programmes externes
(NomProgramme1).

Remarque: il est possible de travailler avec des codes barres dans Sapscript. Pour cela, aller dans
Fentre Chane de caractres en bas gauche, case pour le type de driver imprimante en cas
dutilisation de codes barres.


Symboles dans SAPscript:


DATE Date
DAY Jour
DEVICE Elment de sortie
HOURS Heure
MINUTES Minute
MONTH Mois
NAME_OF_DAY Nom du jour
NAME_OF_MONTH Nom du mois
NEXTPAGE Numro de la page suivante
PAGE Numro de la page
SECONDS Seconde
SPACE Espace
TIME Heure
ULINE Soulign
VLINE Ligne verticale
YEAR Anne
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 107 sur 181
Fonction d'appels sous ABAP/4

REPORT ZHENFORM no standard page heading.

CALL FUNCTION 'OPEN_FORM'
* EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX = ' '
* ARCHIVE_PARAMS = ' '
* DEVICE = 'PRINTER'
* DIALOG = 'X'
* FORM = ' '
* LANGUAGE = SY-LANGU
* OPTIONS = ' '
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
OTHERS = 6.

CALL FUNCTION 'START_FORM'
EXPORTING
* ARCHIVE_INDEX = ' '
FORM = 'ZHENFORM'
LANGUAGE = SY-LANGU
* STARTPAGE = ' '
* PROGRAM = ' '
* IMPORTING
* LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
OTHERS = 6.

CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'TATA'
* FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
On lui dit que l'on va
ouvrir un formulaire
On spcifie le formulaire
que l'on va ouvrir
( prciser pour chaque
formulaire ouvrir)
On ouvre le formulaire
en criture pour l'lment
"TATA", lment dclar
dans une fentre du formulaire
via le codage "/E"
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 108 sur 181
WINDOW = 6
OTHERS = 7.

CALL FUNCTION 'END_FORM'
* IMPORTING
* RESULT =
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.

CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* TABLES
* OTFDATA =
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.

Exercice

Ecrire un formulaire ralisant l'dition des donnes "COUNTRY", "NAME1" et "CITY" de la table TABNA dans
un formulaire. Les donnes doivent y apparatre dans un tableau de 3 colonnes, tries par pays, socit et ville,
avec en outre un pays par page.

Edition du formulaire ZHENTABNA

L'en-tte :


On ferme le formulaire
ouvert avec l'instruction
"OPEN_FORM"
(il doit y avoir autant de
"END_FORM" qu'il y a de
"OPEN_FORM")
On ferme la session
formulaire
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 109 sur 181
Les pages :

Les fentres


Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 110 sur 181
Le paragraphe standard:


Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 111 sur 181
Le paragraphe avec Police:


Le paragraphe avec Tabulation:


Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 112 sur 181
Les fentres de pages :
- La page FIRST


Elment de texte pour ENTETE :


Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 113 sur 181
Elment de texte pour ADRESSE :


Elment de texte pour README:


Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 114 sur 181
Elment de texte pour MAIN:


Elment de texte pour PIED:


Dclaration
de la partie
"TOP"
Fermeture
de la partie
"TOP"
Cadre externe
}
Lignes:
2 verticales
1 horizontale
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 115 sur 181
- Page NEXT:


Elment de texte pour MAIN:


Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 116 sur 181
Elment de texte pour PIED:


Le programme :

REPORT ZHENFORM NO STANDARD PAGE HEADING.

TABLES: TABNA.

DATA: BEGIN OF ITAB_TABNA OCCURS 0,
COUNTRY LIKE TABNA-COUNTRY,
NAME1 LIKE TABNA-NAME1,
CITY LIKE TABNA-CITY,
END OF ITAB_TABNA.

SELECT * FROM TABNA.
MOVE-CORRESPONDING TABNA TO ITAB_TABNA.
APPEND ITAB_TABNA.
ENDSELECT.

SORT ITAB_TABNA BY COUNTRY NAME1 CITY.


CALL FUNCTION 'OPEN_FORM'
* EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX = ' '
* ARCHIVE_PARAMS = ' '
* DEVICE = 'PRINTER'
* DIALOG = 'X'
* FORM = ' '
* LANGUAGE = SY-LANGU
* OPTIONS = ' '
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
CANCELED = 1
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 117 sur 181
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
OTHERS = 6.

CALL FUNCTION 'START_FORM'
EXPORTING
* ARCHIVE_INDEX = ' '
FORM = 'ZHENTABNA'
LANGUAGE = SY-LANGU
* STARTPAGE = ' '
* PROGRAM = ' '
* IMPORTING
* LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
OTHERS = 6.

CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'DATE'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'ENTETE'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
OTHERS = 7.

LOOP AT ITAB_TABNA.

CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'WELCHES'
* FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
OTHERS = 7.

AT END OF COUNTRY.
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 118 sur 181
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'SAUTONS'
* FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
OTHERS = 7.
ENDAT.
ENDLOOP.

CALL FUNCTION 'END_FORM'
* IMPORTING
* RESULT =
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.

CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* TABLES
* OTFDATA =
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.

Lancement du programme :
Suite au lancement du programme ABAP/4, on passe par la fentre d'impression, dans laquelle on clique sur le
bouton "Aperu avant impression".

Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 119 sur 181

Les jeux d'essais :

1
re
page, haut

1
re
page, bas

Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 120 sur 181

2
me
page, haut

A l'dition, il y a dix pages de donnes.




Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 121 sur 181
GESTION DES MESSAGES EXEMPLE ET EXPLICATIONS.

Cration d'une liste de messages:

Dveloppement = Envir. Dveloppement = Messages

Utilisation des messages.

Sous-programme.

*"------------------------------------------------------------------------------------------------------------------ *
*" IMPORTING *
*" VALUE(CHOIX) OPTIONAL *
*" VALUE(SOMME) OPTIONAL *
*" EXPORTING *
*" REFERENCE(RESULTAT) *
*" EXEPTIONS *
*" MAUVAISE_ENTREE *
*"------------------------------------------------------------------------------------------------------------------ *

IF SOMME BETWEEN '0' AND '100'.
CASE CHOIX.
WHEN '1'.
RESULTAT = SOMME * 2 / 13.
WHEN '2'.
RESULTAT = SOMME * 13 / 2.
ENDCASE.
ELSE.
RAISE MAUVAISE_ENTREE.
ENDIF.

ENDFUNCTION.


Programme principal.

REPORT ZDAVEURO NO STANDARD PAGE HEADING MESSAGE-ID ZG.

PARAMETERS : ISOMME TYPE P,
EURO RADIOBUTTON GROUP DEVI,
FRANC RADIOBUTTON GROUP DEVI.

DATA : DSELECT TYPE N,
CONVERT TYPE P.

IF EURO = 'X'.
DSELECT = '1'.
ELSE.
DSELECT = '2'.
ENDIF.

CALL FUNCTION 'Z_DAVY_CONVERT_EURO'
EXPORTING
CHOIX = DESELECT
SOMME = ISOMME
IMPORTING
RESULTAT = CONVERT
EXEPTIONS
MAUVAISE_ENTRE = '2'.
IF SY-SUBRC = 2.
MESSAGE I001.

* la somme n'est pas comprise entre 0 et 100*
ELSE.
IF EURO ='X'.
WRITE :/ ISOMME, 'francs font', CONVERT,
'euros'.
ELSE.
WRITE :/ ISOMME, ' euros font', CONVERT, '
francs '.
ENDIF.
ENDIF.
Fonction d'appels sous ABAP/4
Cours ABAP.doc Page 122 sur 181

Cration dun groupe de fonctions

Dans lobject browser, cocher la case Groupe de fonctions, donner un nom de groupe (Z***), cliquer sur , et
.

Cration dune fonction dans un groupe de fonctions

Dans la bibliothque de fonctions,
- indiquer le nom de la fonction commenant par un Z dans le module fonction (et oui cest trompeur),
- crer ( ),
- une fentre saffichera dans laquelle on indiquera le nom du groupe de fonctions dj existant,
- renseigner la case "application" avec tous sauf *,
- donner une dsignation,
- sauvegarder,
- gnrer,
Remarque: pour changer ces attributs, aller dans Saut Administration,
- cliquer sur pour atteindre la capsule de la fonction et y ajouter un contenu,
- activer,
- slectionner avec les radio boutons les interfaces I/E et Tables/Exceptions pour y indiquer les
paramtres dentre/sortie et les exceptions si besoin est.

Remarques: 1) les paramtres considrs en entre dans la fonction sont dclars en sortie dans le
programme, et vice-versa pour les paramtres en entre,
2) ne pas prciser le type des paramtres en entre/sortie dans la fonction,
3) pour un passage de donnes par adresse, on na plus besoin dexporter la variable dans la
fonction une fois le traitement effectu.

Implmentation dans lditeur abap/4 ou un diteur de lobject browser :
- cration "manuelle" de la fonction :
call function NomFonction1
exporting
Var1 = 'Val1'
Var2 = 'Val2'
importing
Var3 = 'Val3'
exceptions
Mauvaise_Entre = 1
Others = 2.
- dans l'diteur ABAP/4, cliquer sur le bouton et prciser en face du radio bouton
"Function", le nom de la fonction crer.

Remarques: 1) Val1, Val2, Val3, Mauvaise_Entre sont saisis dans les interfaces de la fonction
(voirZS14g5),
2) lexception sil y en a sera transfre dans sy-subrc,
3) on peut appeler une fonction dans une autre fonction.
Modularisation
Cours ABAP.doc Page 123 sur 181
MODULARISATION

Les instructions PERFORM et FORM


Remarque : il vaut mieux regrouper les sous-programmes la fin du programme

Remarque : dans ce qui suit, les variables gi sont des variables du Sous-Programme.


Donnes locales et globales :

Lorsqu'on dfinit des DATA dans le Programme, les donnes sont alors globales.
Lorsqu'on dfinit des DATA dans un Sous-Programme, les donnes sont locales.

Les structures dfinies par linstruction TABLES sont toujours globales. Si on veut quelles soient locales, il
faut les dfinir avec linstruction LOCAL.

Passage par valeurs entre paramtres rels et paramtres formels

Les diffrentes syntaxes dpendent du type de passage des paramtres. Il doit y avoir autant de paramtres rels
que de paramtres formels.

Appel par valeur

Appel dans le programme: PERFORM Nom_routine
1
USING f
1
.
Dclaration de la routine: FORM Nom_Routine
1
USING g
1
.
Lorsquun sous-programme est appel, des paramtres formels sont crs
comme copie des paramtres rels, dans leur propre espace mmoire, et la valeur du paramtre rel f
1
est passe
au paramtre formel g
1
.

Appel par rfrence (adresse):

Appel dans le programme: PERFORM Nom_routine
1
USING f
2
.
Dclaration de la routine: FORM Nom_routine
1
USING VALUE g
2
.
Lorsquun sous-programme est appel, seule ladresse du paramtre rel f
2

est transmise au paramtre formel g
2
. Au moment de lappel du sous-
programme, l'adresse de f
2
est passe g
2
, qui dispose de sa propre place
mmoire. Si on modifie la valeur du paramtre formel g
2
, le contenu de la zone f
2
du programme principal
change galement.

Appel par valeur et rsultat :

Appel dans le programme: PERFORM Nom_routine
1
CHANGING VALUE f
3
.
Dclaration de la routine: FORM Nom_routine
1
CHANGING VALUE g
3
.
Les paramtres formels ont leur propre espace mmoire. A la fin du sous-
programme, la valeur du paramtre formel g
3
est copie dans lespace
mmoire du paramtre rel f
3
assign. A lappel du sous-programme, on
copie la valeur de f
3
dans g
3
, puis en sortant du sous-programme, et
uniquement en sortant du programme, f
3
est alors modifi. Si on sort du sous-programme avant quil soit
compltement excut, par le biais d'une instruction EXIT ou CHECK, f
3
ne sera alors pas modifi.



f1
g1
Val1 Val1
f2
g2
Val1
AdresseX
AdresseX
f3
g3
Val1 Val1
Modularisation
Cours ABAP.doc Page 124 sur 181

Appel dun Sous-Programme partir dun programme de faon classique


PERFORM nom_routine.

FORM nom_routine.
Instructions.
ENDFORM.

Si on est dans le Programme o on appelle le Sous-Programme, on n'a pas besoin dutiliser USING pour
avoir passage de toutes les valeurs globales


Appel dun Sous-Programme partir dun autre programme

Dans le Report 1, on a : FORM nom_routine |USING
|CHANGING
Instructions.
ENDFORM.

Dans le Report 2, on a : PERFORM nom_routine (Report1).


Remarque : On est oblig dcrire USING pour dfinir les donnes globales.


Transfert de Structure

Au lieu de transfrer une table, on peut travailler avec une structure interne (que lon appellera pour lexemple
rec).

FORM nom_routine USING rec LIKE sflight.

Ou FORM nom_routine USING rec TYPE sflight.
Dclaration de type table

Si on naffecte pas de TYPE au paramtre formel, on ne peut pas adresser les zones de la structure.

Ou FORM nom_routine USING rec TYPE sflight OCCURS 10.
Dclaration de type table avec structure de 10 lignes

Ici on a une structure den-tte qui ressemble une table systme sflight
(Rappel : rec est une table interne).


Remarque : Si on dclare une table en TYPE et non en DATA :

TYPE : BEGIN OF tab.
Champ1 LIKE table1-champ1.
.
END OF tab.

Tab est alors un type de table et non une table elle-mme. Ensuite, on lutilise dans la routine avec :

FORM nom_routine USING rec TYPE tab.


Modularisation
Cours ABAP.doc Page 125 sur 181
Ou FORM nom_routine USING rec TYPE tab OCCURS n.

Quand on crit la 2
e
version, la structure devient une table formelle.

Remarque : Si on veut une table interne avec la mme structure quune table du dictionnaire :

On peut transfrer des tables internes avec USING ou TABLES (voir p.10-11 du fascicule BC400).

PERFORM nom_routine TABLES tab.
FORM nom_routine TABLES itab STRUCTURE tab.

Dans linstruction PERFORM, on signale quon reprend la table interne tab, puis dans le Sous-Programme, on
dfinit un autre nom pour la table interne, savoir itab, que lon dclare identique tab.
Ceci permet de pouvoir travailler sur itab pendant tout le droulement du Sous-programme sans modifier la table
tab, car on est sur une autre adresse.
Ainsi, lorsquon sortira du Sous-Programme, itab nexistera plus et tab aura garde sa valeur initiale.

PERFORM nom_routine USING tab[ ].
.
FORM nom_routine USING tabbody LIKE tab[ ].
DATA : tab2 LIKE sflight.


Dans linstruction PERFORM, on signale quon reprend la table interne tab, puis dans le Sous-Programme, on
dfinit un autre nom pour la table interne, savoir tabbody, que lon dclare identique tab (tabbody contient
toutes les valeurs de tab).
Ceci permet de pouvoir travailler sur tabbody pendant tout le droulement du Sous-Programme sans modifier la
table tab, car on est sur une autre adresse.

Ainsi, lorsquon sortira du Sous-Programme, tabbody nexistera plus et tab aura garde sa valeur initiale.

De plus, on dclare une table interne au sein du Sous-Programme, tab2, qui nexistera quau niveau du Sous-
Programme et qui permettra des traitements particuliers.

Avec TABLES, on ne transfre pas la ligne den-tte.
Avec USING, on transfre la ligne den-tte.

Remarque : Les tables internes sont toujours transfres par adresse (on ne peut pas les transfrer par valeur)

Modularisation
Cours ABAP.doc Page 126 sur 181
Linstruction SUBMIT

SUBMIT reportA VIA SELECTION-SCREEN.
Passage par cran de slection








SUBMIT reportA WITH para = X.

Si para seul prendra la valeur donne X
Si para = rien prendra la valeur par dfaut (ici toto)

Il reconnat para car on la dj dclar dans le programme Report A







a





B

Dans ces 2 cas, on ne peut pas retourner au programme.
Pour y retourner, on doit utiliser linstruction END RETURN

Report 0 Report1
1
Report 0 Report A :
Ecran de
Selection
Liste
PARAMETERS para(10) DEFAULT toto
Trucs et astuces
Cours ABAP.doc Page 127 sur 181
TRUCS ET ASTUCES

Cration de vues

INTERT :

Prenons les tables spfli et sflight ; on remarque que ces deux tables sont en relation grce aux champs carrid et
connid (qui sont la cl de SPFLI => unicit : il ny a quun vol 0400 pour la compagnie LH dans SPFLI).
Si lon veut la date dun vol reliant San Francisco New York, il faut chercher ces villes dans SPFLI (CityFrom
et CityTo), en retirer CARRID et CONNID puis slectionner dans sflight la date (FLDATE) correspondante.
Un moyen plus simple pour arriver ce rsultat est de crer une vue ou plutt un joint, qui va relier les tables
SPFLI et SFLIG en fonction de CARRID et CONNID.

Exemple : On veut trouver les numros denregistrement BOOKID pour un vol en ne connaissant que
les villes de dpart et darrive.


PROCEDURE :

1. OUTILS -> ABAP/4 WORKBENCH -> -> Slectionnez VUES (noubliez pas de
nommer lobjet crer).

2. Dans la bote Tables, entrez le nom des tables relier.
Dans la bote Conditions Joint, entrez le nom des tables ainsi que les champs mettre en relation.

Dans notre exemple :

Tables Conditions joint








N.B : SPFLI -> Z10PFLI, SFLIGHT -> Z10FLIG,

3. Dans la bote Zones de vues, entrez les vues ainsi que les tables et les champs sur lesquels vous dsirez
travailler.
Dans notre exemple :
Zones de vues




Dictionnaire
Table
Z10PFLI
Z10FLIG
Z10BOOK

Table Nom zone = Table Nom zone
Z10FLIG CARRID Z10PFLI CARRID
Z10FLIG CONNID Z10PFLI CONNID
Z10BOOK CARRID Z10FLIG CARRID
Z10BOOK CONNID Z10FLIG CONNID
Z10BOOK FLDATE Z10FLIG FLDATE

Zone vue Table Nom Zone Cl Elt don. Mod Type Long.
CityFrom Z10PFLI CITYFROM
CityTo Z10PFLI CITYTO Gr automatiquement
BookId Z10BOOK BOOKID

SPFLI
Carrid
Connid
CityFrom
CityTo
:
SFLIGHT
Carrid
Connid
Fldate
:
SBOOK
Carrid
Connid
Fldate
Bookid
:

La notion de cl est trs
importante lors de la
ralisation de vues. (les
champs souligns dans le
schma ci-contre forment
la cl de la table)
Analyse :
Trucs et astuces
Cours ABAP.doc Page 128 sur 181


4. Il ne reste plus qu activer la vue.
(Pour la tester : Utilitaires -> Afficher donnes).

N.B : Une vue est considre comme une table virtuelle ; ses champs et sa cl sont ceux que vous aurez
dclars. Dans un programme, les vues se dclarent comme une table de base.

CREATION DE MATCHCODE.

1) Crez une table telle que la mienne appele ZROMU. Dfinissez les champs en remplissant la
colonne Elt donn. Sinon les matchcodes ne seront pas dfinis.






2) Dans le menu, allez dans saut puis index




A remplir !!!
Trucs et astuces
Cours ABAP.doc Page 129 sur 181
3) Il demande si on veut crer un nouvel index : Oui. Donnez un nom de trois lettres lindex
commenant par Z.







4) Donnez une dsignation votre index.

5) Placez le curseur dans nom zone. Cliquez sur slectionner zones, une fentre apparat avec la
liste des champs de la table. Choisissez le mandant ainsi que le champ pour lequel on veut un
matchcode. Une fois les champs slectionns, activez.



6) Retournez dans le dictionnaire et donnez un nom en quatre lettres commenant par z. Mettez le
radiobutton sur objet de matchcode. Crer.

7) Donnez une dsignation et dans table primaire, mettez le nom de votre table, enregistrez, cliquez
sur Zones.

Nom donn
l'index
Trucs et astuces
Cours ABAP.doc Page 130 sur 181


8)Mettez le curseur dans Table et cliquez sur Slectionner zones. Vous pouvez slectionner toutes
les zones mais il ne faut pas oublier ensuite de cocher la case Z. cible en face du champ sur
lequel on veut faire le matchcode, enregistrez. Revenez avec la flche verte dans lcran
prcdent. Gnrez. ( Il ny a rien mettre dans Table.).

9) Une fois la gnration effectue, cliquez sur id MC. Il demande alors la cration de lid MC, il faut
lui donner un nom dune seule lettre ou un chiffre. (Ici 1).






10) Cliquez sur Zones. Dans zones, cliquez dans slectionner zones et prenez le champ ncessaire
au matchcode. Enregistrez.

Mettez le nom de votre table Mettez le nom de l'index cre
Trucs et astuces
Cours ABAP.doc Page 131 sur 181


Flche verte pour revenir puis gnrer. Dans le programme le matchcode faisant appel au matchcode
cr sera appel comme suit :

PARAMETERS : NAME LIKE ZROMU-NOM MATCHCODE OBJECT ZXYZ.

Pour crer un autre matchcode sur un autre champ, il faut nouveau crer un index dans la table (tape
n 2 ) puis un nouvel objet de matchcode.

Trucs et astuces
Cours ABAP.doc Page 132 sur 181
Gestion de curseurs en lecture de table

OPEN CURSOR

Syntaxe : OPEN CURSOR [WITH HOLD] <c> FOR SELECT [WHERE <conditions>].

REPORT RSAAA08R.
TABLES : SBOOK.
:
DATA : C1 TYPE CURSOR, C2 TYPE CURSOR.
:
OPEN CURSOR C1 FOR SELECT * FROM SBOOK WHERE CARRID = LH.
OPEN CURSOR C2 FOR SELECT * FROM SBOOK WHERE CARRID = AA.
:
Outre les procdures dcrites prcdemment, vous pouvez lire les tables de base de donnes laide de curseurs.
Pour ce faire, vous devez matriser les tapes douverture et de fermeture du curseur, de lecture de donnes avec
le curseur.
Pour ouvrir le curseur, utilisez linstruction OPEN CURSORFOR SELECT
Le curseur <c> doit tre de type CURSOR.
Vous pouvez ouvrir un curseur avec toutes les instructions SELECT dont le rsultat est une table et non un
enregistrement individuel.
OPEN CURSOR permet douvrir simultanment plusieurs curseurs dans une table. Contrairement SELECT,
vous avez ainsi plusieurs chemins daccs indpendants.
Si vous utilisez loption WITH HOLD, le curseur est maintenu, mme aprs une validation de la base en SQL
natif.
Les instructions CLOSE CURSOR, COMMIT WORK et ROLLBACK WORK ferment tous les curseurs.
Ceci sapplique galement lors dune validation de la base en SQL natif (sauf si le curseur a t ouvert avec
loption WITH HOLD et que la validation rsulte en une modification de lcran).
Tenter douvrir un curseur dj ouvert provoque une erreur d excution.


FETCH CURSOR

Syntaxe : FETCH NEXT CURSOR <c> INTO <wa>.

REPORT RSAAA08R.
TABLES : SBOOK.
DATA : BEGIN OF WA1 OCCURS 0.
INCLUDE STRUCTURE OF SBOOK.
DATA : END OF WA1.
DATA : BEGIN OF WA2 OCCURS 0.
INCLUDE STRUCTUR OF SBOOK.
DATA : END OF WA2.
:
DO.
FETCH NEXT CURSOR C1 INTO WA1.
WRITE : / WA1-CARRID, WA1-CONNID, WA1-CUSTOMID.
:
FETCH NEXT CURSOR C2 INTO WA2.
WRITE : /WA2-CARRID, WA2-CONNID, WA2-CUSTOMID.
:
ENDDO.

Une fois que le curseur a t ouvert avec succs, utilisez linstruction FETCH pour atteindre chaque
enregistrement de la table rsultat dcrite avec SELECT dans une boucle, jusqu ce que le curseur soit ferm.
Chaque entre est place dans la zone cible indique aprs INTO.
Valeurs de code retournes : SY-SUBRC=0 : Lecture fructueuse.
SY-SUBRC=4 : Lecture infructueuse.
Trucs et astuces
Cours ABAP.doc Page 133 sur 181
Chaque fois que linstruction FETCH est excute, la zone systme SY-DBCNT comprend le nombre des
entres lues prcdemment.
Dans lexemple ci-dessus, deux curseurs sont ouverts dans une table. Les deux instructions FETCH remplissent
alors diffrentes zones de travail qui peuvent tre traites indpendamment les unes des autres (pour des raisons
ddition).

CLOSE CURSOR

Syntaxe : CLOSE CURSOR <c>.


REPORT RSAAA08R.
TABLES : SBOOK.
:
DO.
:
FETCH NEXT CURSOR C1 INTO WA1.
IF SY-SUBRC NE 0.
CLOSE CURSOR C1.
ENDIF.
FETCH NEXT CURSOR C2 INTO WA2.
IF SY-SUBRC NE 0.
CLOSE CURSOR C2.
ENDIF.
ENDDO.

Astuces lors de laffichage de listes


Instruction SCROLL

Correspond au code de
Syntaxe : SCROLL fonction.
LIST
TO FIRST PAGE pp- -
TO LAST PAGE pp++
TO PAGE <p> pp<p>
FORWARD <n> PAGES p+ pp+n
BACKWARD <n> PAGES p- pp-n
TO COLUMN <n> ps<c>
LEFT [BY <m> PLACES] ps- <m>
RIGHT [BY <m> PLACES] ps+<m>
INDEX <i>



Vous pouvez utiliser linstruction SCROLL pour faire dfiler le contenu dune liste. Si vous spcifiez les
paramtres correspondants, vous pouvez effectuer un dfilement :
vers lavant,
vers larrire,
vers la gauche,
vers la droite.

Linstruction SCROLL LIST se rfre la liste actuellement affiche. Vous pouvez utiliser loption INDEX
<i> pour indiquer dautres niveaux de liste de liste. <i> correspond au contenu de SY-LSIND lorsque la liste
correspondante est gnre.

Loption PAGE permet un dfilement par page logique, sinon par fentre.

Trucs et astuces
Cours ABAP.doc Page 134 sur 181
Vous pouvez utiliser linstruction SET LEFT SCROLL-BOUNDARY pour fixer la position dcriture actuelle
(SY-COLNO) comme limite gauche de la zone de dfilement. Pour fixer explicitement la limite de dfilement
une colonne dtermine, utilisez lattribut COLUMN <n>. Le dfilement horizontal laide de la barre de
dfilement et/ou de linstruction SCROLL dans le programme prend effet partir de la colonne de la liste que
vous avez indiqu.
Ainsi, par exemple, les colonnes cl sont toujours visibles lorsque vous effectuez un dfilement horizontal.


Dfilement horizontal : REPORT RSBBB10A LINE-SIZE 132.
:
GET SPFLI
WRITE : ,95 SPFLI-DISTANCE.
AT .
IF SY-STACO EQ 1.
SCROLL LIST RIGHT.
ELSE.
SCROLL LIST LEFT.
ENDIF.


Dans ce qui suit, le CURSEUR na rien voir avec un curseur permettant de lire les tables

GET CURSOR

Slection de zone

Syntaxe : GET CURSOR
FIELD <zone1>
VALUE <zone2>
LINE <lin>.


REPORT RSBBB10B.

DATA : FNAME(30), FVALUE(50), .
GET SPFLI.
WRITE : SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.
:
AT LINE-SELECTION.
PERFORM CURSEUR.

FORM CURSEUR.
GET CURSOR FIELD FNAME VALUE FVALUE.
CASE FNAME.
WHEN SPFLI-CARRID.
WHEN SPFLI-CONNID.
WHEN SPFLI-CITYFROM.
:
ENDCASE.
ENDFORM.

A laide de linstruction GET CURSOR, vous pouvez collecter interactivement des informations
complmentaires relatives une zone que lutilisateur a dlimite avec le curseur.

Le nom de la zone d'dition est fourni dans la zone spcifie dans le paramtre FIELD. La valeur dite est
disponible via la zone spcifie dans le paramtre VALUE.

Le code retourn SY-SUBRC est activ. La valeur 0 signifie que le curseur tait plac sur une zone ; la valeur 4
quil tait en dehors dune zone.

Trucs et astuces
Cours ABAP.doc Page 135 sur 181
GET CURSOR comporte plusieurs options. Pour plus dinformations, reportez-vous la documentation relative
au mot cl appropri.

GET CURSOR LINE <lin> ne ncessite aucune dfinition de paramtre FIELD. Cette variante vous permet de
rechercher le curseur de manire dynamique dans les crans STEPLOOP (dans la ligne de boucle <lin> et dans
le traitement de la liste (dans la ligne absolue <lin> SY-LILLI).


SET CURSOR :

Positionnement du curseur

Syntaxe : SET CURSOR
FIELD <zone1>
<colonne> <zone2>
LINE <lin>.


REPORT RSBBB10C.

DATA : FIRST_LINE TYPE I VALUE 5,
FNAME(30).
:
END-OF-SELECTION.
SET CURSOR 2 FIRST_LINE.

AT USER-COMMAND.
WHEN .
SET CURSOR 2 FIRST_LINE.
:
GET CURSOR FIELD FNAME.
SET CURSOR LINE 3 OFFSET 5.


Vous utilisez linstruction SET CURSOR pour positionner le curseur sur lcran. Cette fonction est
particulirement utile en cas dvnement interactif. Le systme positionne automatiquement le curseur dans la
zone de commande et/ou la premire zone accessible dans la liste rcemment cre. SET CURSOR vous permet
de positionner le curseur partir du programme, par exemple, au moyen de GET CURSOR.

Vous entrez les coordonnes dans lordre <colonne> <ligne>.

Linstruction SET CURSOR FIELD <zone1> vous permet de placer le curseur dans la zone dcran dont le
nom figure dans la zone <zone1>. Il existe deux options : OFFSET et LINE, la dernire tant obligatoire dans
les listes.

SET CURSOR LINE <lin> ne ncessite aucune dfinition de paramtre FIELD. Cette variante vous permet de
rechercher dynamiquement le curseur dans les crans STEPLOOP (dans la ligne de boucle <lin>) et dans le
traitement des listes (dans la ligne absolue <Lin> SY-LILLI).

Trucs et astuces
Cours ABAP.doc Page 136 sur 181
COMMANDES SQL :

SQL natif I

EXEC SQL.
:
ENDEXEC.


REPORT RSAAA08S.
DATA : F1(3) VALUE LH, F2(4) TYPE N VALUE 0400', F3(20), F4(20).

EXEC SQL.
SELECT CARRID, CONNID, CITYFROM, CITYTO
INTO :F1, :F2, :F3, :F4
FROM SPFLI WHERE CARRID = :F1
AND CONNID = :F2
ENDEXEC.
WRITE : / F1, F2, F3, F4.


Pour utiliser lventail complet des instructions du langage de base de donnes (SQL natif) dans un programme
ABAP/4, utilisez le bloc EXEC SQLENDEXEC. Sachez toutefois que, comme vous utilisez un SQL natif
spcifique la base de donnes, la portabilit de vos programmes vers dautres SGBD peut tre compromise.
Les tables de bases de donnes traites en SQL natif nont pas besoin dtre connues de lABAP/4 Dictionary, et
le programme na pas besoin dinstruction TABLES pour les dfinir.
Selon la base de donnes que vous utilisez, la graphie des noms de bases et de zones peut avoir de limportance.
Contrairement SQL Open, il ny a aucune gestion automatique du client.
Les mmoires tampon SAP ne sont pas valus parce que les donnes sont lues partir de la base de donnes.
La syntaxe des instructions SQL natif nest pas identique celle dABAP/4.
Une seule instruction SQL natif peut tre indique celle dABAP/4.
En SQL natif, le transfert de donnes entre la base et ABAP/4 se fait par des variables htes dont le nom doit tre
prcd du signe deux points ( :).

SQL natif II

EXEC SQL PERFORMING <nom>.
:
ENDEXEC.


REPORT RSAAA08T.
DATA : WA LIKE SBOOK, F1(3) VALUE LH, F2(4) TYPE N VALUE 0400.

EXEC SQL PERFORMING AUSGABE.
SELECT * INTO :WA FROM SBOOK WHERE CARRID = :F1
AND CONNID = :F2
ENDEXEC.

FORM AUSGABE.
WRITE : /WA-CARRID, WA-CONNID, WA-FLDATE, WA-CUSTTYPE.
ENDFORM.

Si le rsultat de linstruction SELECT comprend plusieurs entres, la lecture est effectue ligne par ligne dans
une boucle de traitement.
LoptionPERFORMING <nom> signifie que le sous-programme spcifie est appel chaque fois quune
entre est lue. Vous pouvez mettre fin la boucle de traitement avec linstruction SQL EXIT FROM dans le
sous-programme. Si le rsultat de la slection est un enregistrement individuel, le sous-programme nest appel
quune fois.
Trucs et astuces
Cours ABAP.doc Page 137 sur 181
Dans lexemple suivant, la chane de zones <wa> et les zones simples F1 et F2 sont utilises comme variables
hte dans linstruction SQL natif SELECT.
Aprs chaque accs en lecture russi, une entre est ajoute la zone cible <wa>. La clause WHERE contrle
les variables htes : F1 et : F2.


SQL natif III

EXEC SQL.
:
ENDEXEC.

Dfinition des donnes Gestion des transactions de donnes
(instructions DDL) : COMMIT
CREATE ROLLBACK
DROP
ALTER
GRANT
REVOKE

Manipulation des donnes
(instructions DML) :
SELECT DECLARE CURSOR
INSERT OPEN
UPDATE FETCH
DELETE CLOSE

Outre linstruction SELECT en SQL natif, vous pouvez en utiliser dautres entre EXEC SQL et ENDEXEC
pour dfinir, manipuler des donnes et grer des transactions dans le systme de base de donnes adquat.



Linstruction CLOSE CURSOR <c> permet de fermer tous les curseurs qui ne sont plus ncessaires.
Les autres oprations qui ferment les curseurs ont dj t voques dans linstruction OPEN CURSOR.

Trucs et astuces
Cours ABAP.doc Page 138 sur 181
Affectation dynamique

Affectation dynamique de chanes

En principe, les valeurs relatives de variable et les spcifications de longueur ne sont pas autorises, sauf dans le
cas de linstruction ASSIGN.

REPORT RSAAA04G.
DATA : TEXT_LINE(30) VALUE ABCDEFGH,
START TYPE I,
STRING_LENGTH TYPE I.
FIELD-SYMBOLS : <FSTRING>.
START = 2.
STRING_LENGHT = 5.
ASSIGN TEXT_LINE+START(STRING_LENGHT) TO <FSTRING>.
WRITE : / * <FSTRING>, *.
<FSTRING> = 1234567890. :
:



Elles sont galement autorises avec linstruction WRITE TO et avec les paramtres rels (PERFORM).


Affectation dynamique de zone

ABAP/4 na aucune instruction de saut (GOTO). Outre les instructions de contrle cites ci-dessous, il en existe
dautres telles que LOOPENDLOOP, qui permet de lire une table interne, et la distinction de cas
ATENDAT, qui permet de traiter les niveaux de contrle dans linstruction LOOP.

REPORT RSAAA04H.
PARAMETERS : SY_FIELD(8) DEFAULT SY-DATUM
FIELD-SYMBOLS : <ZONE>.
ASSIGN (SY_FIELD) TO <ZONE>.
*ASSIGN TABLE FIELD(SY_FIELD) TO <ZONE>.
IF SY-SUBRC EQ 0.
WRITE:/ TEXT-001, SY_FIELD, 50 <ZONE>.
ENDIF.
*D : TEXT-001 : Contenu courant de la zone systme.
A B C D E F G H I ...

<FSTRING>
S Y - D A T U M
INDEX datum
19980907

<FIELD>
SY_FIELD
Table SY
Trucs et astuces
Cours ABAP.doc Page 139 sur 181
Les autorisations
(sous rserve)


Elles limitent les accs aux utilisateurs finaux (lecture, affichage, modification).

Gestion des autorisations des utilisateurs
(attention, il faut dj en avoir une et la bonne, ah! ah!)

Outils Administration Gestion Utilisateur Autorisation
Astuce
Lorsque vous navez pas lautorisation pour une action tente (indication dans la fentre bleue), faire Systme
Utilitaire Afficher contrle autorisations.
Il vous affiche ce quil vous faudrait et ce que vous avez (si ce nest pas trop loign des besoins).

Crer une autorisation
a) Crer une classe dautorisations.
Une classe dautorisations contient des objets dautorisation.
Un objet dautorisation contient une ou plusieurs autorisations.
Dans lobjet sont slectionnes des zones (ex : saisie de transactions)
De plus il est prcis la valeur dactivit (01, 02, 03).
b) Affecter une autorisation un profil dutilisateur.
Un profil contient des autorisations, et ventuellement dautres profils.
c) Affecter le profil un utilisateur.
(voir page 9-9 du BC400)


Trucs et astuces
Cours ABAP.doc Page 140 sur 181


Ecrire des messages.

Prsentation :

Dans le report :

REPORT Z MESSAGE -ID II.
.
.
.
MESSAGE TNNN.


Mais on peut aussi dclarer directement dans le programme un message sans mettre dans len-tte MESSAGE -
ID II :


MESSAGE ID II TYPE TT NUMBER NNN

II : Nom de la classe du message par exemple ZG
NNN : Numro du message : 012
TT : Type du message.

LES DIFFERENT TYPE DE MESSAGE :

I - Info : Le traitement s'interrompt; il reprend ds que l'utilisateur appui sur ENTREE
W - Warning : Le traitement s'interrompt; l'utilisateur peut entrer une nouvelle valeur
E - Error : Le traitement s'interrompt; l'utilisateur doit entrer une nouvelle valeur
A - Abend : Le traitement s'arrte et l'utilisateur doit relancer l'application
X - Exit : Equivaut au message de type A mais avec vidage minimal
MESSAGE_TYPE_X
S - Success : L'information s'affiche sur l'cran suivant
Voir aussi MODULE.

Astuce :

On peut insrer des variables dans les messages en mettant dans le texte du message & & et en ajoutant WITH
text
Exemple :

Le message :
ZG, 042 : Salut & &, comment vas-tu ?

dans le report :
MESSAGE ID ZG TYPE I NUMBER 042 WITH sy-uname.

On peut aussi utiliser la fonction CALL FUNCTION 'POPUP_TO_CONFIRM_STEP', ouvre une boite de
dialogue et permet le choix entre OK NO CANCEL.

Liste alphabtique des commandes SAP
Cours ABAP.doc Page 141 sur 181
Liste alphabtique des commandes SAP





Mot cl
Description rapide
** Arithmetic operator: Exponentiation (COMPUTE)
+, -, *, / Arithmetic operators (COMPUTE)
ABS Mathematical function: absolute amount (COMPUTE)
ACOS Mathematical function: Cosine arc (COMPUTE)
ADD Add
ADD-CORRESPONDING Field string addition
ADJACENT DUPLICATES Delete duplicates from internal table (DELETE)
APPEND Append line to internal table
ASIN Mathematical function: Sine arc (COMPUTE)
ASSIGN Assign field symbol
AT Event, control break, field group determination
ATAN Mathematical function: Tangent arc
AUTHORITY-CHECK Check authorization
AVG Aggregate expression: Average (SELECT)
BACK Positioning in list
BETWEEN Relational operator: Between
BINARY SEARCH Binary read of internal table (READ TABLE)
BLANK LINES Switch on blank lines in list
BREAK-POINT Stop processing in debug mode
CA Relational operator for string comparison: Contains Any characters
CALL Call external component
CASE Begin case distinction
CEIL Mathematical function: Smallest whole value (COMPUTE)
CENTERED Output format: Centered (WRITE)
CHECK Check condition
CHECKBOX Display as checkbox
PARAMETERS ... AS CHECKBOX on the selection screen
WRITE ... AS CHECKBOX in a list
CLEAR Initialize data object
CLIENT Client handling when
DELETE ... CLIENT SPECIFIED deleting from a database
EXPORT ... TO DATABASE ... CLIENT storing a data cluster
IMPORT .. FROM DATABASE ..
CLIENT
reading a data cluster
INSERT ... CLIENT SPECIFIED inserting into a database
MODIFY ... CLIENT SPECIFIED inserting into/modifying a database
SELECT ... CLIENT SPECIFIED reading from a database
UPDATE ... CLIENT SPECIFIED updating a database
CLOSE Close file/cursor
CN Relational operator for string comparison: Contains Not only
CNT Field groups: Number of different values
CO Relational operator for string comparison: Contains Only
CODE PAGE Character set
TRANSLATE ... FROM/TO CODE
PAGE
Convert character codes
COLLECT Internal table: Add entries
COLOR Output format: Color (FORMAT)
COMMIT Close processing unit
Liste alphabtique des commandes SAP
Cours ABAP.doc Page 142 sur 181
COMMUNICATION Data exchange
COMPUTE Perform calculations
CONCATENATE Concatenate strings
CONDENSE Condense string
CONSTANTS Defining constants
CONTINUE Exit current loop pass
CONTROLS Define controls for visualization
CONVERT Convert fields
COS Mathematical function: Cosine (COMPUTE)
COSH Mathematical function: Hyperbola cosine (COMPUTE)
COUNT Aggregate expression: Count (SELECT)
COUNTRY Set country ID (SET)
CP Relational operator for string comparison: Contains Pattern
CREATE Generate an external object
CS Relational operator for string comparison: Contains String
CURRENCY Output format: Correct format for currency (WRITE)
CURSOR Cursor
CLOSE Close database cursor
FETCH NEXT CURSOR Read lines with a database cursor
GET CURSOR FIELD Get field name
OPEN CURSOR Open database cursor
SET CURSOR Position cursor
CUSTOMER-FUNCTION Call customer enhancement
DATA Define data
DATABASE Data cluster
DELETE FROM DATABASE delete from a database table
EXPORT ... TO DATABASE Store in a database table
IMPORT ... FROM DATABASE Read from a database table
DATASET Sequential file
CLOSE DATASET Close file
DELETE DATASET delete file
EXPORT ... TO DATASET Store data cluster in file
IMPORT ... FROM DATASET Read data cluster from file
OPEN DATASET Open file
READ DATASET Read from a file
TRANSFER Output to a file
DECIMALS Output format: Places after the decimal point (WRITE)
DEFINE Define macro
DELETE delete from tables or from objects
DESCRIBE Determine attributes of data objects
DIALOG Call a dialog module (CALL)
DISTINCT Remove duplicates from selection set (SELECT)
DIV Arithmetic operator: Whole number division (COMPUTE)
DIVIDE Divide
DIVIDE-CORRESPONDING Field string division
DO Loop
DYNPRO Screen
DELETE DYNPRO delete
EXPORT DYNPRO Export
GENERATE DYNPRO Generate
IMPORT DYNPRO Import
SYNTAX-CHECK FOR DYNPRO Check
EDITOR-CALL Call editor
ELSE Query
ELSEIF Query
END-OF-DEFINITION End of a macro definition
END-OF-PAGE Event: End of page handling in lists
END-OF-SELECTION Event: After processing of all records in a LDB
Liste alphabtique des commandes SAP
Cours ABAP.doc Page 143 sur 181
ENDAT End of an event introduced by AT
ENDCASE End of case distinction
ENDDO End of a DO loop
ENDFORM End of a subroutine
ENDFUNCTION End of a function module
ENDIF End of a query
ENDLOOP End of a LOOP
ENDMODULE End of a module definition
ENDON End of a conditional statement
ENDPROVIDE End of a PROVIDE loop
ENDSELECT End of a SELECT loop
ENDWHILE End of a WHILE loop
EQ Relational operator: Equals
EXEC SQL Native SQL statement
EXIT Exit loop or terminate processing
EXP Mathematical function: Exponential function (COMPUTE)
EXPONENT Output format: Exponent display (WRITE)
EXPORT Export data
EXTENDED CHECK Switch extended syntax check on/off (SET)
EXTRACT Generate extract dataset
FETCH Read line from a database table
FIELD-GROUPS Define field groups
FIELD-SYMBOLS Define field symbols
FLOOR Mathematical function: Largest whole value (COMPUTE)
FORM Define subroutine
FORMAT Output format for lists
FRAC Mathematical function: Fraction (COMPUTE)
FREE Release resources no longer needed
FUNCTION Define function module
CALL FUNCTION Call a function module
FUNCTION-POOL Define a function group
GE Relational operator: Greater than or equal
GENERATE Generate a program or screen
GET Event, read settings
GT Relational operator: Greater than
HELP-REQUEST Self-programmed help (F1)
PARAMETERS ... HELP-REQUEST for parameters
SELECT-OPTIONS ... HELP-REQUEST for selection options
HIDE Store line information
HOTSPOT Output format: Hotspot, interaction by simple mouse click (FORMAT)
ICON Icons in lists
IF Query
IMPORT Import data or a screen
IN Relational operator: Selection criterion
INCLUDE Include program components
INDEX Line index in an internal table
DELETE ... INDEX Delete line
INSERT ... INDEX Insert line
MODIFY ... INDEX Modify line
READ TABLE ... INDEX Read line
INFOTYPES Declare HR infotype
INITIAL Relational operator: Initial value
INITIALIZATION Event: Before display of the selection screen
INPUT Output format: Ready for input (FORMAT)
INSERT Insert into tables or objects
INTENSIFIED Output format: Intensified (FORMAT)
INVERSE Output format: Inverted (FORMAT)
IS Relational operator
Liste alphabtique des commandes SAP
Cours ABAP.doc Page 144 sur 181
IS INITIAL Relational operator: Initial value
IS REQUESTED Relational operator: Existence of a formal parameter
LANGUAGE Set language for text elements (SET)
LE Relational operator: Less than or equal
LEAVE Leave processing
LEFT-JUSTIFIED Output format: Left-justified (WRITE)
LINE Line in a list
MODIFY LINE Modify line
READ LINE Read line
LINE-COUNT Number of lines per page (NEW-PAGE)
LINE-SIZE Line size (NEW-PAGE)
LIST-PROCESSING List processing (LEAVE)
LOAD Load program components in internal table
LOCAL Rescue actual parameters of a subroutine
LOCAL COPY Assign local copy to a field symbol
LOCALE Set text environment (SET)
LOG Mathematical function: Natural logarithm (COMPUTE)
LOG10 Mathematical function: Base 10 logarithm (COMPUTE)
LOOP Loop
LT Relational operator: Less than
M Relational operator: Byte contains zeros and ones
MARGIN List output: Distance from edge (SET)
MATCHCODE Matchcode handling
PARAMETERS ... MATCHCODE for parameters
SELECT-OPTIONS ... MATCHCODE for selection options
MAX Aggregate expression: Maximum (SELECT)
MEMORY ABAP/4 memory
EXPORT ... TO MEMORY Roll out data to memory
IMPORT ... FROM MEMORY Restore data from memory
MESSAGE Output message
MESSAGE-ID Specify message class (REPORT)
MIN Aggregate expression: Minimum (SELECT)
MOD Arithmetic operator: Remainder after division (COMPUTE)
MODIFY Modify tables or objects
MODULE Flow logic: Module
MOVE Assignment
MOVE-CORRESPONDING Component-by-component assignment
MULTIPLY Multiply
MULTIPLY-CORRESPONDING Field string multiplication
NA Relational operator for string comparison: Contains not any characters
NE Relational operator: Not equal
NEW-LINE List processing: New line
NEW-PAGE List processing: New page
NO-GAP Output format: Leave no gaps (WRITE)
NO-HEADING Display no column headers (NEW-PAGE)
NO-SCROLLING Do not scroll line (NEW-LINE)
NO-SIGN Output format: No preceding signs (WRITE)
NO-TITLE Do not display standard page header (NEW-PAGE)
NO-ZERO Output format: No leading zeros (WRITE)
NP Relational operator for string comparison: Does not contain pattern
NS Relational operator for string comparison: Does not contain string
O Relational operator: Byte positions occupied by 1
OBJECT External object
CREATE OBJECT Generate
FREE OBJECT Release
OCCURS Define internal table (DATA)
ON CHANGE Control break
OPEN Open file/cursor
Liste alphabtique des commandes SAP
Cours ABAP.doc Page 145 sur 181
ORDER BY Order lines (SELECT)
OVERLAY Overlay strings
PACK Conversion
PARAMETER Parameter in global SAP memory
GET Read parameter
SET Set parameter
PARAMETERS Define report parameters
PERFORM Execute subroutine
PF-STATUS Set GUI status
POSITION List processing: Define output position
PRINT Print formatting (NEW-PAGE)
PRINT-CONTROL Define print format
PROGRAM Introduce program
LEAVE PROGRAM Leave program
PROPERTY Object property
GET PROPERTY Get property
SET PROPERTY Set property
PROVIDE Internal tables: Interval-related processing
PUT Trigger event
RADIOBUTTON Radio button (PARAMETERS)
RAISE Raise exception in function module
RAISING Raise error message in function module
RANGES Define internal table for selection criterion
READ Read tables or objects
RECEIVE Receive results (RFC)
REFRESH Delete internal table
REFRESH CONTROL Initialize control
REFRESH SCREEN Refresh SAPGUI
REJECT Do not process current database line further
REPLACE Replace strings
REPORT Introduce report (program)
DELETE REPORT Delete program
EDITOR-CALL FOR REPORT Call ABAP/4 program editor
INSERT REPORT Insert program in library
READ REPORT Read program
RESERVE List processing: Conditional new page
RESET Output format: Reset all formats (FORMAT)
RIGHT-JUSTIFIED Output format: Right justified (WRITE)
ROLLBACK Roll back database changes
ROUND Output format: Scaled (WRITE)
RUN TIME ANALYZER Switch runtime analysis on/off (SET)
SCAN Analyze ABAP/4 source code
SCREEN Screen
CALL SCREEN Call screen
SET SCREEN Set next screen
LEAVE SCREEN Leave screen
LEAVE TO SCREEN Branch to a screen
LOOP AT SCREEN Loop through screen fields
MODIFY SCREEN Modify screen fields
SCROLL List processing: Scroll
SCROLL-BOUNDARY List processing: Fix lead columns (SET)
SEARCH Find string
SELECT Read database table
SELECT-OPTIONS Define selection criterion
SELECTION-SCREEN Design selection screen
AT SELECTION-SCREEN Event: After editing of selection screen
SELECTION-TABLE Selection table (SUBMIT)
SET Set different processing parameters
Liste alphabtique des commandes SAP
Cours ABAP.doc Page 146 sur 181
SHIFT Move string
SIGN Mathematical function: Sign (COMPUTE)
SIN Mathematical function: Sine (COMPUTE)
SELECT SINGLE Select single record
SINH Mathematical function: Hyperbola sine (COMPUTE)
SKIP List processing: Output blank line
SORT Sort internal table or extract dataset
SPLIT Split string
SQRT Mathematical function: Square root (COMPUTE)
START-OF-SELECTION Event: Before first access to LDB
STATICS Define static data
STOP Stop data selection (LDB)
STRLEN String function: Current length (COMPUTE)
STRUCTURE Data structure
INCLUDE STRUCTURE Use structure
SUBMIT Program call
SUBTRACT Subtract
SUBTRACT-CORRESPONDING Field string subtraction
SUM Calculate control total
SELECT ... SUM Aggregate expression: Total
SUPPRESS DIALOG Suppress dialog
SYMBOL Output as symbol (WRITE)
SYNTAX-CHECK Syntax check for programs and screens
SYNTAX-TRACE Syntax check log
TABLES Declare database table
TABLE Set or array operations for database tables
DELETE ... FROM TABLE Delete block of lines
INSERT ... FROM TABLE Insert block of lines
MODIFY ... FROM TABLE Insert/update block of lines
UPDATE ... FROM TABLE Update block of lines
SELECT ... INTO TABLE Copy block of lines to internal table
TAN Mathematical function: Tangent (COMPUTE)
TANH Mathematical function: Hyperbola tangent (COMPUTE)
TEXT Locale-specific
CONVERT TEXT Set format
SORT itab AS TEXT Sort an internal table
SORT AS TEXT Sort an extract dataset
TEXTPOOL Text elements
DELETE TEXTPOOL Delete
INSERT TEXTPOOL Insert
READ TEXTPOOL Read
TIME Time measurement
GET RUN TIME Get runtime
GET TIME Get time
SET RUN TIME ANALYZER Switch runtime analysis on/off
TITLEBAR Set screen title (SET)
TOP-OF-PAGE Event: Top of page handling in lists
TRANSACTION SAP transaction
CALL TRANSACTION Call
LEAVE TO TRANSACTION Leave to
TRANSFER Output to file
TRANSLATE Character conversion in strings
TRANSPORTING Selective field transport
MODIFY ... TRANSPORTING Modify lines of an internal table
READ ... TRANSPORTING Read lines of an internal table
LOOP ... TRANSPORTING Loop through an internal table
TRUNC Mathematical function: Whole number part (COMPUTE)
TYPE-POOL Introduce type group
Liste alphabtique des commandes SAP
Cours ABAP.doc Page 147 sur 181
TYPE-POOLS Integrate a type group
TYPES Define types
ULINE List processing: Underscore
UNDER Output format: One under the other (WRITE)
UNIT Output format: Unit (WRITE)
UNPACK Conversion
UPDATE Update database table
USER-COMMAND List processing: Execute command immediately (SET)
USING Use parameter or format
USING Parameter of a subroutine
USING EDIT MASK Output format: Use template (WRITE)
VALUE-REQUEST Self-programmed value help (F4)
PARAMETERS ... VALUE-REQUEST for parameters
SELECT-OPTIONS ... VALUE-
REQUEST
for selection options
WHEN Case distinction
WHERE Condition
SELECT ... WHERE with database accesses
LOOP AT ... WHERE with loops on internal tables
DELETE ... WHERE when deleting from internal tables
WHILE Loop
WINDOW List processing: Output in window
WITH-TITLE Output standard page header (NEW-PAGE)
WORK Processing unit
COMMIT WORK Close unit
ROLLBACK WORK Close unit, but undo changes
WRITE List processing: Output
WRITE TO Correct type output in a variable
Z Relational operator: Byte positions occupied by 0
Classification des mots cls par type
Cours ABAP.doc Page 148 sur 181
Classification des mots cls par type



Mots cls dclaratifs :
Ils servent dclarer ou dfinir les objets de donnes qui les suivent.

CONSTANTS Dfinition des constantes
CREATE Gnre un objet externe
DATA Champs internes, variables locales, variables globales, tables internes
FIELD-GROUPS Stocks de donnes intermdiaires pour extractions de donnes
INCLUDE Inclure une structure ou un type
FIELD-SYMBOLS Champs de travail variables
LOCAL Utilisation locale de variables globales dans les sous-programmes
PARAMETERS Champs internes dfinis par lutilisateur aprs le lancement du
programme
RANGES Critres de slection ne pouvant tre que positionns en interne
SELECT-OPTIONS Critres de slection dfinis par lutilisateur aprs le lancement du
programme pour autoriser la slection de donnes
SELECTION-SCREEN layout de lcran de slection
STATICS Objets de donnes statiques dans les sous-programmes
TABLES tables SAP
TYPE-POOL Combiner des types et des constants dans un groupe de types
TYPE-POOLS Inclus un groupe de types
TYPES Dfinition des types

Mots cls lis aux vnements :
Ils servent dclarer un traitement li un vnement.

AT LINE-SELECTION Suite un double-clic sur une ligne lcran
AT PFn Suite une action sur une touche de fonction
AT SELECTION-SCREEN Aprs avoir renseign les champs dans lcran de slection
AT USER-COMMAND Aprs avoir effectuer une action dans un champ de commande
END-OF-PAGE Aprs limpression de la dernire ligne dune page cran
END-OF-SELECTION A la fin du programme
GET Aprs avoir lu un nouvel enregistrement dans une base de donnes
logique
INITIALIZATION Avant limpression dans un cran de slection (ne fonctionne pas avec
un traitement en arrire plan)
START-OF-SELECTION Au dbut du programme
TOP-OF-PAGE Au dbut dune nouvelle page cran
TOP-OF-PAGE DURING LINE-
SELECTION
Au dbut dune nouvelle page cran dans une liste dtaille

Mots cls de contrle :
Ils servent contrler le flot de traitement.

AT FIRST ... ENDAT Excute un traitement sur un groupe donn dans une boucle LOOP
avant de raliser un traitement sur les lignes de la table
AT NEW ... ENDAT Contrle la fin dun groupe pendant la boucle LOOP
AT END OF ... ENDAT Contrle la fin dun dans la boucle LOOP
AT LAST ... ENDAT Excute un traitement sur un groupe donn dans une boucle LOOP
aprs avoir raliser un traitement sur les lignes de la table
AT fg ... ENDAT Traitement spcifique au type enregistrement dans une boucle LOOP
CALL Appel traitement (programmes, fonctions, modules, crans)
Classification des mots cls par type
Cours ABAP.doc Page 149 sur 181
CASE ... WHEN ... ENDCASE Etude de cas
CHECK Condition de slection, quitte la boucle ou le sous-programme
CONTINUE Interrompt le passage courant dans une boucle DO, WHILE, LOOP or
SELECT
DO ... ENDDO Traitement de boucle
EXEC SQL ... ENDEXEC Excute un ensemble dinstructions Native SQL
EXIT Quitte la boucle ou le sous-programme
FORM ... ENDFORM Dfinition dun sous-programme
IF ... ELSE ... ENDIF Traitement des conditions
=, EQ gal
<>, ><, NE diffrent de
>, GT plus grand que
<, LT plus petit que
>=, =>, GE plus grand ou gal
<=, =<, LE plus petit ou gal
O, Z, M comparaison binaire (bit)
CO, CN, CA, NA, CS, NS, CP, NP comparaison) de
chanes de
caractres
BETWEEN... AND conditions sur un
intervalle
IS INITIAL test si la valeur est initiale
IS REQUESTED existence du paramtre actuel
IN condition de saisie
LEAVE Quitter le traitement du programme vers une transaction, une liste ou
un menu
LOOP ... ENDLOOP Boucle sur une table ou extraire en ensemble de donnes
MODULE ... ENDMODULE Dfinition dun module de dialogue
ON CHANGE OF ... ENDON Traitement li aux changements dans un champ
PERFORM ... USING Appel un sous-programme
SELECT ... ENDSELECT Lire une table de la base de donnes
STOP Fin de slection
WHILE ... ENDWHILE Traitement de boucles

Mots cls lis aux oprations :
Ils servent raliser des oprations sur les donnes certains moments (vnements) et sous certaines
conditions.

ADD Addition de champs
ADD-CORRESPONDING Addition de champs identiques dans une variable
APPEND met une entre dans une table interne
ASSIGN Assigne un champ un symbole de champ
AUTHORITY-CHECK Test l'autorisation
BACK Retour en tte de page
BREAK-POINT Positionne un point d'arrt
CALL Appel une transaction, un cran, un module de dialogue ou un module
de fonction
CLEAR Rinitialise les variables
COLLECT Rajoute une entre dans une table interne
COMMIT Traite les changements dans la base de donnes
COMPUTE Calculer:
ABS valeur absolue
ACOS arc cosinus
ASIN arc sinus
ATAN Arc tangent
CEIL valeur entire suprieure la plus proche
COS Cosinus
COSH cosinus hyperbolique
Classification des mots cls par type
Cours ABAP.doc Page 150 sur 181
EXP fonction Exponentiel (base e)
FLOOR valeur entire infrieure la plus proche
FRAC partie dcimale
LOG logarithme (base e)
LOG10 logarithme (base 10)
SIGN signe
SIN sinus
SINH sinus hyperbolique
SQRT racine carre
STRLEN longueur d'une chane de caractres
TAN tangent
TANH tangente hyperbolique
TRUNC partie entire d'un nombre
CONCATENATE Concatne les chanes de caractres
CONDENSE Condense un champ (limine les espaces)
DELETE Supprime la ligne
DIVIDE Division de deux champs
DIVIDE-CORRESPONDING Division de champs identiques dans une variable
EDITOR-CALL Appelle l'diteur SAP
EXPORT Exporte un objet de donnes
EXTRACT Ecrit un enregistrement dans un ensemble de donnes interne
FILL Remplit une variable
FORMAT Etablit un format pour une sortie de liste
FREE Effectue une rservation d'espace mmoire pour une table interne
GET Lit les parameters, cursor, etc.
HIDE Note le contenue d'une ligne
IMPORT Importe un objet de donnes
INCLUDE Insert des composantes d'un programme externe
INSERT Insert des oprations
MESSAGE Affiche des messages
MODIFY Change une table ou une ligne dans une liste
MOVE Transfre le contenu des champs
MOVE-CORRESPONDING Transfre le contenu de champs identiques dans une variable
MULTIPLY Multiplication de champs
MULTIPLY-CORRESPONDING Multiplication de champs identiques dans une variable
NEW-LINE Place le curseur sur une nouvelle ligne
NEW-PAGE Place le curseur sur une nouvelle page
POSITION Position d'une variable dans une colonne
PRINT-CONTROL Dtermine le format d'impression
PUT Ralise l'extraction des vnements GET
READ Lire les tables et bases de donnes ; (direct) lecture de lignes de listes
REFRESH Rafrachir les tables internes l'cran
REPLACE Remplace des chanes de caractres
RESERVE Rserve des lignes de sortie cran sur la page courante
SEARCH Recherche une chane de caractres dans une table
SET Etablir les paramtres de traitement
SHIFT Dplace le contenu d'un champ
SKIP Cre des lignes vierges
SORT Trie une table interne ou un ensemble de donnes
SPLIT Dcoupe une chane de caractres
SUBMIT Lance un autre programme
SUBTRACT Soustraction de champs
SUBTRACT-CORRESPONDING Soustraction de champs identiques dans une variable
SUM Addition durant une boucle
TRANSFER Affichage de donnes squentiellement
TRANSLATE Convertit les majuscules en minuscules et inversement
UPDATE Mise jour de la base de donnes
ULINE Souligne
Classification des mots cls par type
Cours ABAP.doc Page 151 sur 181
UNPACK Change le type P (packed) en type C
WINDOW Dfinie la section d'un cran
WRITE Affichage des donnes

Commentaires

* En premire colonne : lensemble de la ligne est un commentaire
" Dans nimporte quelle colonne, la fin de la ligne est un commentaire

Appel aux composantes dautres programmes :

INCLUDE nom1 Insre la composante nom1 dun programme lendroit courant
PERFORM form(prog) Appelle la sous-routine form du programme prog (PERFORM
externe)
Quelques transactions utiles connatre
Cours ABAP.doc Page 152 sur 181
Quelques transactions utiles connatre

Vous trouverez, ci-dessous, un extrait des transactions standards utiles au dveloppeur ABAP/4, ils recouvrent
une grande partie des transactions propres l'ABAP/4 Workbench plus quelques transactions propres
l'administration. les plus utilises sont marques en gras.

Il est intressant d'en connatre les plus importants car le saut direct par le menu n'est pas toujours possible et la
navigation via divers cran est fastidieuse.

La totalit des transactions standards disponibles peut tre trouve sur le bouton de commande << MENU
DYNAMIQUE >> ou transaction SMEN.

A partir d'un cran de menu, les codes de transaction sont taper dans la petite fentre Ok,
Exemple :
SE38 puis ., pour accder l'diteur ABAP/4.

Lorsque vous tes dans un cran de transaction vous devrez taper :
/nSE38 et ., pour interrompre la transaction en cours et aller l'diteur.
L'utilisation du bouton de commande "BACK" , vous permet de retourner la
transactionprcdente.

Vous pouvez toujours connatre la transaction en cours d'utilisation en allant dans le menu SYSTEME et
STATUT.

SYNTHESE AUTRES OUTILS Extensions / user exits.

S000
S001
SE09
SE16
SE80
SE84
SMEN
SU55

Menu initial
Menu ABAP/4 Worbench
Worbench organizer
Data browser (BDD)
Object browser
Systme information
Menu dynamique
Menu utilisateur
Objets autorisation

CMOD
SMOD


Gestion projet
Dfinition
SU20
SU21
SCDO
SE43
SE54
SE93



Zones
Objets
Docts modification
Menus de domaines
Gn. Dial. Gest Tab
Transactions

ABAP/4 Query

SQ01
SQ02
SQ03


Queries
Domaines application
Groupes utilisateurs
DEVELOPPEMENT Types objets gestion Documentation

SE32
SE35
SE36
SE39
SE91
SE92

Elments de texte
Modules dialogue
BD logiques
Editeur cran part
Messages
Messages syslog

SWO1
SWO2
SD11
SE11
SE37
SE38
SE41
SE51
SE 63
SQ07


Gestion
Synthse
Data modeler
Dictionnaire
Biblio fonctions
Editeur ABAP/4
Menu painter
Screen painter
Dsign./desccriptifs
ABAP/4 Query

SE61

Documentation

Test Workbench

SE30
SLIN
SM21
ST22

Analyse dure exc
Contrle tendu
Journal systme
Analyse vidage mm.

Quelques transactions utiles connatre
Cours ABAP.doc Page 153 sur 181
ADMINISTRATION Moniteur Administration
Jobs Monitorage systme

SARA
SM01
SM02
SMLT
USMM

Archivage
Codes transactions
Messages systme
Transport de langues
Analyse systme


SM36
SM37

Dfinition de job
Synthse des jobs


SM04
SM50
SM51
SMGW

Synth. Utilisateurs
Synthse processus
Serveur
Monit passerelles
Gestion utilisateurs
Computing center jobs

SM12
SM13
SM21
SM35
SM56
SM58
ST22
SU56


Entres de blocage
Mise jour
Journal systme
Batch input
Buffer tranches N
RFC transactionnel
Analyse vidage mm.
Buffer utilisateurs

SM39
SM49
SM61
SM62
SM64
SM65

Performance analysis
External commands
Background objects
Define events
Raise events
Check environment

PFCG
SU01
SU02
SU03
SU05
SUIM


Groupes d'activits
Utilisateur
Profils
Autorisation
Utilisateur Internet
Systme information
ANNEXE: les codes barres
Cours ABAP.doc Page 154 sur 181
ANNEXE

Les codes barres

Les codes barres dans SAPscript et le Systme de Spool.
Ceci n'est que la traduction franaise de la documentation (en anglais) intitule BARCODES.
Pour les illustrations et programmes exemples veuillez vous reporter cette documentations.


Concept

Les donnes sur les codes barres sont des donnes de texte standard qui sont converties par le lecteur de codes
barres.
Limprimante peut imprimer des donnes de type codes barres grce aux contrle dimpression.

Le contrle dimpression permet de dbuter et darrter limpression du format code barres .
Le contrle dimpression est spcifique au type dimprimante et au type du code barres.

En gnral, le code barres que vous utiliserez ce trouve dans le formulaire de SAPscript. Dans ce cas, vous
aurez seulement besoin de fournir les donnes sur le code barres. SAPscript prend garde prvenir
limpression du format code barres et de stopper ce format la fin de limpression.

Vous pouvez, sinon, entrer les donnes dun code barres directement dans un document SAPscript. Vous devez
alors explicitement entrer les contrles dimpression afin de sortir des donnes de type code barres. Au
moment de limpression, les donnes sont de type code barres.

La suite dcrit comment les codes barres sont imprims depuis le formulaire et directement depuis un
document SAPscript.

Impression des codes barres

Dans un formulaire de SAPscript, les codes barres sont gnrs en tant que format caractre .

Le systme de codes barres est dfini dans le menu TOOLS TEXT PROCESSING FONT AND GOTO
SYSTEM BARCODES (transaction SE73). La dfinition du systme de codes barres inclut les contrles
dimpression qui sont utiliss pour mettre le format dimpression en mode "codes barres" puis aprs impression
remettre le format dimpression sur normal.

SAPscript insert automatiquement ces contrles dimpression dans le flux vers limprimante lorsque vous
imprimez avec le formulaire.

ANNEXE: les codes barres
Cours ABAP.doc Page 155 sur 181
Impression dun code barres depuis un document SAPscript

Dans le programme de traitement de texte de SAPscript, la donne du code barres est du texte normal qui est
converti lors de laffichage ou de limpression par un lecteur de codes barres. Cette conversion est ralise par
les contrles dimpression qui prcdent et suivent les donnes codes barres dans le document SAPSCRIPT. Le
premier contrle dimpression met le mode dimpression de limprimante sur codes barres. le texte de donne
code barres est alors imprim comme un code barres sur limprimante cible. Le second contrle dimpression
met le mode dimpression de limprimante sur texte, les donnes suivantes sont ainsi imprimes au format texte.

EXEMPLE


La squence suivante dans un document SAPscript doit imprimer le code barres qui correspond
12334567 : SBP01 1234567 SBS01 . Le contrle dimpression SBP01 contient les squences de
sorties de limprimante qui met le mode dimpression sur code barres. Le contrle dimpression
SBS01 contient les squences de sortie qui restaurent le mode dimpression normal.


Dfinition dun code barres dans l Overview de SAP.

Pour imprimer un code barres, le format doit tre dfini dans les trois menus suivant :

- Systme de code barres de SAPscript dans OUTIL TRAITEMENT DE TEXTE POLICE DE
CARACTERES.
Utilisation : Le systme de code barres spcifie un nom pour un code barres et sa taille. Vous
pouvez utiliser ce nom pour introduire un code barres dans un formulaire.
Pour y arriver : SAP a dfini tous les systme code barres utiliss par les formulaires standards
de SAP. Vous devez dfinir un systme de code barres seulement pour ajouter un nouveau format
de code barres pour votre formulaire.

- Systme de code barres de SAPscript dans OUTIL TRAITEMENT DE TEXTE POLICE DE
CARACTERES.
Utilisation : Identifie les contrles dimpression pour un type de procd (modle dimprimante).
ils sont utiliss pour mettre le format dimpression soit en mode code barres soit en mode normal.
Pour y arriver : SAP a prdfini les contrles dimpression pour certains type dimprimantes. Voir
la liste des codes barres prdfinis pour plus dinformations.

Pour les autres types dimprimantes, vous devez spcifier les noms des contrles dimpression
utiliss pour imprimer les code barres.

- Contrle dimpression du systme de la file dattente.
Utilisation : les contrles dimpression avec un nom ayant le format SBP<nn> sont utiliss pour le
mode dimpression code barres. la donne qui suit est imprime au format code barres.
Le mode dimpression est remis sur normal lorsque le contrle dimpression dont le format du nom
est SBS<nn> . <nn> reprsente le code didentification unique que vous pouvez slectionner .
Pour y arriver : Vous devez spcifier la squence de sortie qui met en mode impression code
barres ou en mode normal.

ANNEXE: les codes barres
Cours ABAP.doc Page 156 sur 181
Impression des codes barres.

Avec SAPscript, vous pouvez imprimer les donnes au format code barres. Les codes barres sont souvent
imprims comme des tiquettes qui sont utiliss dans diffrent domaine comme par exemple linventaire dun
stock, le transport
Les codes de donnes des codes barres sont comme des sries de lignes dont lpaisseur et/ou la distance entre
chaque trait varient. Quelque fois ils incluent un nombre de vrification (check number), qui peut tre utilis
pour dtecter et analyser des erreurs. Quelques fois la donne du code barres est reprise sous une forme
numrique lisible.

Les chapitres suivant reprennent :

Les codes barre prdfinis par SAP et prt lemploi.
Les procdures pour lajout de nouveaux codes barres et rendre possible limpression de codes barres sur
dautres types dimprimantes que celles prdfinies par SAP.

Pour information sur limpression des codes barres sur les imprimantes sous Windows utilisant le programme
de transfert SAPLPD, sil vous plait reportez vous au chapitre les codes barres et SAPWIN.

Impression OCR dans le systme de SAP

Gnralement, les imprimantes utilisent diffrent caractres pour une impression normale ou OCR.
Habituellement, la diffrence est limite par les codes hexadcimaux utiliss par les caractres spciaux OCR.

Pour imprimer les donnes OCR, SAPscript doit passer dans le mode caractres OCR sur le flux dimpression, et
alors revenir au mode normal une fois que les caractres OCR ont t imprims.

Contrles dimpressions

Vous devez utiliser les contrles dimpression de SAPscript pour basculer d'un mode l'autre. Il y a deux types
de contrles dimpression :
SF<nnn> / SF<nnn> .
S4001 / S4004 / S0000.
Vous pouvez les utiliser pour passer en mode caractres OCR et revenir au mode normal.

Vous pouvez utiliser un des deux type de contrle dimpression ou les deux pour imprimer en mode OCR et
revenir au mode normal. Cependant, vous devriez laisser les contrles dimpression S4001 / S4004 / S0000
vides. Entrer les squences de sorties de limprimante pour imprimer en mode OCR et en ressortir, seulement
dans les contrles dimpression SF<nnn>. SAPscript envoie automatiquement les deux types de contrles
dimpression limprimante. Cependant, seulement les contrles dimpression SF peuvent tre entrer dans les
attributs dimpression de SAPscript.

ANNEXE: les codes barres
Cours ABAP.doc Page 157 sur 181
EXEMPLE

Lexemple suivant montre le format de la sortie.

Texte entr sous SAPscript : text <OA> 1234 hook</>text
Sortie sur le driver de limprimante : text S4001 SF009 1234 hookS0000 SF001 text

O :

S4001 est le contrle dimpression standard pour le type de caractre OCR-A. Habituellement, le contrle
dimpression est vide. A la place, SAPscript utilise les contrles dimpression SF pour passer en mode OCR
et revenir au mode normal.
SF009 est le contrle dimpression avec lequel OCR-A est envoy sur limprimante. SF009 est dfini dans
les attributs dimpression SAPscript. Vous devez entrer les commandes dimpression correctes pour passer
en mode OCR-A dans SF009.

Le nom est un exemple choisit arbitrairement

S0000 est le contrle dimpression standard pour revenir vers le mode standard. Habituellement, ce contrle
dimpression est vide. A la place, SAPscript utilise les contrle dimpression SF pour passer en mode OCR
et revenir au mode normal.
SF001 est le contrle dimpression qui permet de remettre l'imprimante dans son tat initial qu'elle avait
avant l'appel du mode OCR-A ( par exemple, Courrier 120).

Vous devez entrer les commandes ncessaires dans chaque contrle dimpression SF<nnn>.

SF001 est un exemple choisit arbitrairement.

Ensemble de caractres

En interne, SAPscript utilise deux types d'ensemble de caractres OCR qui sont prdfinis par SAP pour
reprsenter les donnes OCR. Les identifiants sont 4001 pour OCR-A et 4004 pour OCR-B dans la fonction
"ensemble de caractres" du systme spool. Ces reprsentations de caractres sont cartographies par SAPscript
et le systme spool, en un ensemble de caractres pour l'impression. vous devez dfinir lensemble des caractres
dimpression dans le systme spool. Vous devez aussi identifier lensemble des caractres dans SAPscript.

Lensemble des caractres dimpression, comme ils sont dfinies dans le systme spool, doit tre compris par les
deux OCR et le mode normal dimpression. Cest dire, ils doivent contenir les codes hexadcimaux pour les
caractres spciaux OCR. Et pour les autres, ils doivent fournir les codes hexadcimaux que limprimante peut
utilise peut importe les donnes OCR ou les donnes normales. Cette restriction existe parce que le systme
spool ne peut pas passer dun ensemble de caractre dimpression un autre pendant limpression.

Codes barres et SAPWIN

Vous pouvez imprimer les codes barres sur nimporte quelle imprimante Windows, si vous faites comme suit :

1. Dfinissez limprimante dans le systme spool de SAP avec le type dappareil SAPWIN.
2. Spcifiez ACCESS METHOD 8 dans la dfinition de limprimante dans le systme spool.
3. Achetez une DLL ( Dynamic Linked Library ) de vos codes barres, pour votre PC Windows.
SAP ne fournit pas de DLL de code barres. Vous devez les obtenir chez un autre vendeur.
Littralement, chaque DLL convertit les codes barres en graphique. Toutes imprimante capable
dimprimer des graphiques peut, il va sen dire, imprimer des codes barres, et aucune fonte de police nest
ncessaire.

Le code barres .DLL doit rencontrer les conditions suivantes :

Il doit tre compatible avec vos imprimantes Windows et avec le programme de transfert SAPLPD qui
tourne sur PC Windows.
Pour tre compatible avec SAPLPD le code barre .DLL doit offrir une interface de programmation qui
rencontre les conditions de SAPLPD. Ces conditions dinterfaces et les produits compatibles connus sont
ANNEXE: les codes barres
Cours ABAP.doc Page 158 sur 181
regroups dans la note 25344 dans le systme dinformation SAP on Line. Vous pouvez voir les conditions
dinterface partir du moment o cela est crit dans la compatibilit du code barres .DLL avec SAPLPD.

Le .DLL doit tre nomm BARCODE.DLL.

Le .DLL doit tre install dans lun de ces dossier :
- Dans le dossier Windows et Windows\System.
- Le dossier dans lequel se trouve SAPLPD.EXE.
SAPLPD n'utilise pas la variable PATH pour trouver BARCODE.DLL.

Compatibilit entre le code barres .DLL et SAPLPD

Pour assurer la comptabilit avec le programme SAP SAPLPD, le vendeur de code barres .DLL doit vrifier
que :
la fonctionnalit du code barre est dclare en tant que .DLL,
le code barre peut tre configur par le biais de spcifications dans les donnes enregistres (voir
les conditions dinterface ci-dessous),
le code barres .DLL calcule lui-mme les chiffres de vrification et les lgendes,
lpaisseur et la taille du code barres peut tre calcule.

Tout code barres .DLL qui exporte les deux fonctions ci-dessous peut tre compatible avec SAPLPD (sil vous
plait allez voir la note 25344 dans le systme de service OnLine de SAP pour les descriptions des paramtres
dans lappel des fonctions) :


Configuration requise

Gnralement, les imprimantes ont besoin dun supplment hardware ou software pour imprimer des codes
barres. Plusieurs imprimantes ne peuvent imprimer les codes barres du tout. Soyez sr de vrifier que cette
caractristique est disponible avant dacqurir une imprimante.
Certaines imprimantes sont capable de gnrer d'elles-mmes les nombres de vrification relatifs aux codes
barres. Pour dautres modles, vous devrez fournir le nombre de vrification dans les donnes envoyes
limprimante. Si votre imprimante ne peut pas gnrer des nombres de vrification, allez voir dans la
documentation de vos applications SAP pour dterminer comment sont envoys les nombres de vrification
comme partie intgrante des codes barres.

NOTE :

Pour informations sur les codes barres .DLL pour les utiliser sur les PC Microsoft Windows, voir Les codes
barres et SAPWIN.

Test dimpression des codes barres

Pour tester limpression des codes barres faites ce qui suit :

Slectionnez TOOLSWORD PROCESSING STANDARD TEXT
Imprimez le document prdfini SAPscript-BARCODETEST, en spcifiant ST comme Document
ID et D ou E pour la langue.
Le document imprime tout les code barre qui sont prdfinis par SAP (voir code barres
prdfinis pour plus dinformations). le document est habituellement utilisable seulement dans le
client 000.


ANNEXE: les codes barres
Cours ABAP.doc Page 159 sur 181
Ajouter vos propres dfinition des codes barres

Si vous dsirez :

ajouter un nouveau code barres ; ou ,
utiliser un code barre prdfini sur votre imprimante au lieu de celle de la liste dans code barres
prdfini.

Vous devez alors dfinir le code barres dans le systme spool de SAP et dans SAPscript. Plus spcifiquement,
vous devez dfinir :

le code barre dans SAPscript, si ce nest pas un standard, prdfini par SAP. Cest la dfinition du code
barres systme,
le nom des contrles dimpression pour passer en mode dimpression code barres et revenir ensuite au
mode dimpression normal. Cest la dfinition de limpression du code barres,
les squences de sortie de limpression avec lesquels le mode dimpression passe en code barres et revient
en mode normal.

Pour dfinir un code barres et activer limpression de ceux-ci, faites ce qui suit :

1. Dfinir le code barre dans SAPscript si ce nest pas dj fait.
Slectionnez TOOLSWORD PROCESSING FONT et cliquez sur SYSTEM BARCODES. Sur cet
cran, vous pouvez entrer votre dfinition de format de votre nouveau code barres.

NOTE :

Le nom de votre code barres doit commencer par un Z pour viter tout conflit de nom avec les codes
barres de SAP.

2. Copiez la dfinition du type dimprimante avec laquelle vous allez travailler. Vous pouvez sauter cette tape
si vous ajoutez un nouveau type dimprimante au systme SAP.

Pour copier la dfinition, slectionnez TOOLSADMINISTRATION SPOOLSPOOL
ADMINISTRATIONUTILITIESCOPY DEVICE TYPE.

Dans le premier champ, entrez le nom du type dimprimante que vous voulez copier. Dans le second champ,
choisissez un nom commenant par Z pour votre nouveau type d'imprimante. La convention de nom protge
votre dfinition du type dimprimante de tout conflit de nom avec les codes barres de SAP.

Utilisez le nouveau type dimprimante dans toute les dfinitions de limprimante que vous installez pour
imprimer les codes barres.
EXEMPLE :

Vous souhaitez imprimer des codes barres sur une imprimante HP LASERJET 4. Cette
imprimante est prdfinie par SAP sous le type de procd HPLJ4. Pourtant, la dfinition de
limprimante standard ninclut pas les supports pour limpression des codes barres.

Pour viter les conflits avec la dfinition standard de SAP HPLJ4, vous devez crer une copie
du type dimprimante. Le nom doit commencer par un Z comme dans ZHPLJ4.

Vous aurez besoin dajouter le contrle dimpression pour revenir au mode dimpression
normal sur limprimante ZHPLJ4, et pas la dfinition standard de HPLJ4. Vous aurez aussi
besoin dutiliser ZHPLJ4 comme le type dimprimante pour toutes les imprimantes HP
LASERJET 4 que vous avez dfinies dans le systme SAP pour limpression des codes
barres.

3. Dfinir le printer barcodes pour le systme de code barres que vous avez lintention dutiliser. Un printer
barcodes spcifie le nom des contrles dimpression que vous allez utiliser pour passer en mode
dimpression des codes barres et revenir en mode normal. Vous devez dfinir des contrles dimpression
ANNEXE: les codes barres
Cours ABAP.doc Page 160 sur 181
des codes barres pour chaque type dimprimante que vous souhaitez utiliser pour limpression des codes
barres.

Marquez chaque systme de code barres tour de rle et slectionnez printer barcodes.
Entrez les informations suivantes :

Device Type (type dimprimante) : le type dimprimante que vous souhaitez utiliser pour
limpression des codes barres.
Entrez le type dimprimante que vous avez cr ltape 2 ci-dessus.
Barcode (code barres) : le nom du systme code barres que vous souhaitez imprimer. Utilisez
F4 pour afficher le systme code barres que vous avez dfini.
Prefix (prfixe) : le nom du contrle dimpression de la forme SBP<nn>, o <nn> est un nombre
didentification.
Vous pouvez slectionner tout les nombres didentification que vous souhaitez. Le nom du contrle
dimpression doit tre unique parmi les contrles dimpression que vous avez dfinis pour le type
dimprimante.
Exemple : SBP25.
Suffix (suffixe) : le nom du contrle dimpression de la forme SBS<nn>, o <nn> est un nombre
didentification.
Vous pouvez slectionner tout les nombres didentification que vous souhaitez. Le nom du contrle
dimpression doit tre unique parmi les contrles dimpression que vous avez dfinis pour le type
dimprimante. Il est judicieux dutiliser le mme identifiant pour chaque prfixe et suffixe.
Exemple : SBS25.

4. Entrez les squences de sorties (commandes dimpression) pour limpression des codes barres dans les
contrles dimpression que vous avez dfinis.

Slectionnez TOOLSADMINISTRATION SPOOLSPOOL ADMINISTRATION et PRINT
CONTROL FOR DEVICE TYPE.

En utilisant le manuel fournit avec lquipement des codes barres, entrez les commandes dimpression
ncessaire pour commencer et arrter limpression des codes barres.

EXEMPLE :
Pour SBP25 (de ltape 2), vous devez entrer la squence de sortie qui met limprimante en mode code
barres. Pour SBS25, vous devez entrer la squence qui met fin au mode code barres.

NOTE :

Sil vous plait veuillez vous reporter aux contrles dimpression des codes barres adapts au driver
dimpression SAPscript avant de dfinir vos contrles dimpression des codes barres. Le driver dimpression
SAP manipule diffremment le marquage des donnes des codes barres, et cela affecte les squences de sortie
que vous devez entrer dans vos contrles dimpression.

ANNEXE: BC410
Cours ABAP.doc Page 161 sur 181
BC410
Ceci n'est qu'un rsum de la documentation BC410, et donc pour de plus amples informations veuillez vous
reporter ce document.

Autres techniques dans Screen Painter et Menu Painter

Elments graphiques :

- Editeur graphique pleine page :

- On les slectionne partir de lcran de synthse et on les positionne laide de la souris sur lcran.

- Pour les boutons doptions, on doit dfinir des groupes graphiques pour chaque jeu de bouton.

- Lorsque lutilisateur slectionne une case cocher ou un bouton doption, la zone concerne doit comporter
un X.

- Pour la gestion des attributs, chaque bouton de commande, on doit affecter un code de fonction.

- Pour saisir les textes accompagnant ces lments graphiques, il faut les rpertorier dans la liste de zones
comme des zones de textes indpendants.

- Tout programme peut contenir un dynpro qui dfinit un domaine de lcran normal comme un sous-cran,
grce linstruction CALL SUBSCREEN domaine INCLUDING <programme> >numro dcran> dans
la logique dexcution, cest--dire dans PROCESS BEFORE OUTPUT et PROCESS AFTER INPUT.

- Mode alphanumrique pleine page :

1
e
tape :
- Pour les cases cocher et les boutons doption, on doit dabord dfinir une zone de saisie /dition, ainsi
quun texte de zone.

- Une fois la liste de zone gre, on positionne le curseur sur la 1
e
zone du groupe de boutons doption, ou de
cases cocher, ou sur un bouton de commande et on choisit Elment graphique pour passer en mode
Slection.

- Pour dfinir une bote, il faut lui affecter un titre, puis positionner le curseur sur ce titre avant de choisir
Elment graphique pour passer en mode Slection.

- Pour dfinir un Sous-cran, on slectionne le coin suprieur gauche laide du curseur puis on choisit le
menu Sous-Ecran On accde une bote de dialogue dans lequel on indique le nom du sous-cran,
puis on passe en mode Slection.

2
e
tape :
- En mode Slection, on dfinit dabord la fin de bloc de chaque groupe dlments graphiques identiques,
avant de slectionner un lment graphique.

- Si on slectionne des Boutons doption, on a alors accs aux fonctions Dfinir groupe graphique et
Supprimer groupe graphique.

- On doit dfinir la fin de domaine des Sous-crans et des Botes.

ANNEXE: BC410
Cours ABAP.doc Page 162 sur 181
- Icnes sur lcran :

- Si on travaille en pleine page alphanumrique, on dfinit un icne pour un bouton de commande en grant
lattribut Nom dicne.

- Si vous avez grez un texte de zone, pour un bouton de commande, licne sera afficher avant le texte.
- La dfinition dune zone de statut nest possible que dans lditeur pleine page.
Les zones de statut permettent dditer un icne qui napparatra quau moment de lexcution.

DEFINITION : Une zone de statut est une zone ddition reprsente par un icne.

- Pour affecter des valeurs une zone ddition de manire dynamique (avec lattribut avec icne) , on
utilise le module fonction ICON_CREATE.


Contrle automatique des saisies :

- Une fois que lutilisateur a fini de travailler sur un cran, et avant que nintervienne le traitement des
modules PAI, plusieurs contrles automatiques sont alors effectues dans le processeur interactif.

- 1
e
contrle : dtermine les zones obligatoires

- 2
e
contrle : contrle des cls externes, effectues que si une zone dcran fait rfrence une zone du
Dictionary pour laquelle une table de contrle a t dfinie, et si lattribut a t slectionn.

- 3
e
contrle : contrle du format de zone (fonctionnalit F4), qui permet dafficher les entres possibles dune
zone, cest--dire les valeurs-cls de la table de contrle.


Les valeurs fixes :
- Dans ABAP/4 Dictionary, on peut dfinir des valeurs fixes pour des domaines dtermins.

- Si on dfinit une zone dcran en faisant rfrence un domaine pour lequel des valeurs fixes ont t
spcifies,
+ Ces valeurs fixes sont affiches lorsquon appuie sur F4 pour visualiser les entres
possibles pour la zone de saisie
+ Le processeur interactif compare la valeur saisie lensemble des valeurs fixes


Dans pool de modules, avec message derreur :
- Pour contrler les valeurs de saisie, on doit utiliser linstruction FIELD avec loption MODULE.
Le module appropri ne sera alors excut que pour la zone indique dans FIELD.

- Si le module gnre un message derreur (E) ou davertissement (W), lcran est de nouveau affich sans
que le module PBO ne soit trait. Le texte du message est alors affich et seule la zone
contrle par ce module devient de nouveau accessible

REMARQUE : Linstruction FIELD peut rendre les zones de nouveau accessibles. Si on formule un message
dans un module sans appeler celui-ci dans une instruction FIELD, le message sera affich mais la zone nest pas
accessible.
ANNEXE: BC410
Cours ABAP.doc Page 163 sur 181
Contrle des Groupes de zones :
- Si on dsire que plusieurs zones deviennent de nouveau accessibles, en cas de message derreur, on doit
toutes les spcifier dans linstruction FIELD, puis les concatner avec linstruction MODULE des fins de
contrle au sein de linstruction CHAIN.
-
PROCESS AFTER INPUT. MODULE modul INPUT.
CHAIN.
FIELD : screen field1,
Screen field2, MESSAGE E .

ENDMODULE.
MODULE modul.
ENDCHAIN.

- Une zone peut tre utilise dans diffrentes instructions CHAIN


Message derreur :
- Le texte du message est affich sur le dynpro
- Toutes les zones affectes au module correspondant (FIELD) deviennent de nouveau accessibles.
- Le systme oblige lutilisateur saisir de nouveau les donnes.

Message davertissement :
- Le texte du message est affich sur le dynpro
- Toutes les zones affectes au module correspondant (FIELD) deviennent de nouveau accessibles.
- Lutilisateur peut saisir de nouveau les donnes (et alors le systme ragira comme un message derreur),
ou ignorer cet avertissement en appuyant sur Entre .

Message dinformation :
- Le texte du message est affich sur le dynpro
- Le traitement est alors interrompu.
- Lexcution du programme reprend au point o elle a t interrompue, une fois que lutilisateur a appuy sur
Entre.

Message de russite :
- Le texte du message est affich sur lcran suivant

Message de fin anormale :
- Le texte du message est affich sur le dynpro
- Lexcution en cours est interrompue une fois que lutilisateur a appuy sur Entre et revient lcran
initial.


ANNEXE: BC410
Cours ABAP.doc Page 164 sur 181

Mmoire des paramtres SAP :

- On peut enregistrer des valeurs sous une identification (ID) de paramtre, qui sont alors mmorises pour
chaque dossier utilisateur et qui restent disponibles pour plusieurs dossiers.

- Le paramtre SET permet de copier les dfinitions ( lexcution du PAI)dans la mmoire SAP

- Le paramtre GET permet de copier des dfinitions la fin de lexcution du PBO, partir de la mmoire
SAP, condition que la zone dcran affiche sa valeur initiale.

- Les attributs de paramtres SET/GET pour une zone dcran faisant rfrence un lments de donnes,
laide dune identification (ID) de paramtre.

Dfinit dans la table TPARA
Ecrans Dynamiques :

- Linstruction SET SCREEN permet dcraser provisoirement lcran suivant

- Linstruction CALL SCREEN permet dinsrer le traitement dun ou plusieurs crans avant le dynpro.
Le traitement du dynpro se poursuivra sur la base des instructions correspondantes aprs cet appel dcran.

- Linstruction SET SCREEN nnnn crase provisoirement lcran suivant
( lcran doit tre un cran du mme pool de modules)

- Linstruction LEAVE SCREEN interrompt le dynpro.

- Linstruction LEAVE TO SCREEN nnn permet de quitter le dynpro et de passer directement lcran
suivant en une seule et mme tape.

- Linstruction CALL SCREEN nnnn interrompt le dynpro pour excuter lcran nnnn ainsi que tous les
crans suivants.
( lcran doit tre un cran du mme pool de modules)

- Linstruction SET SCREEN 0, LEAVE SCREEN, LEAVE TO SCREEN 0 permet de revenir au point
dappel o on peut poursuivre le traitement de lcran dappel
(Si on n'est pas en mode dappel, le programme est interrompu)

Botes de Dialogue :

- Dans linstruction CALL SCREEN, les options STARTING AT et ENDING AT permettent dindiquer la
position et la taille de lcran appel

Dans MENU 100 : Dans MENU 101 :
MODULE OK-CODE INPUT. MODULE OK-CODE INPUT.


CALL SCREEN 101. SET SCREEN 0 .
STARTING AT 30 10 LEAVE SCREEN .
ENDING AT 60 20.
ENDMODULE. ENDMODULE.


REMARQUE : On peut utiliser STARTING AT sans ENDING AT le systme
dtermine alors la taille de la bote de dialogue partir de la taille Utilise dans les attributs
dcran.
Le point de reprise sera alors le coin suprieur gauche


ANNEXE: BC410
Cours ABAP.doc Page 165 sur 181
Excution conditionnelle des modules :

- Si on spcifie ON INPUT aprs MODULE dans une instruction FIELD(cest obligatoire), le module ne
sera excut que si la zone approprie contient une valeur autre que la valeur initiale.

PROCESS AFTER INPUT.
FIELD <screenfield>.
MODULE modul ON INPUT.

- Si on utilise loption ON CHAIN-INPUT dans une instruction CHAIN, le module ne sera trait que si au
moins une des zones dcran dans linstruction CHAIN comporte une valeur diffrente de la valeur initiale.

PROCESS AFTER INPUT.
CHAIN.
FIELD : <screen field 1>,
<screen field 2>,

<screen field n>.
MODULE modul ON CHAIN-INPUT.
ENDCHAIN.

- Si on spcifie ON REQUEST aprs MODULE dans une instruction FIELD(cest obligatoire), le module
ne sera excut que si la zone approprie fait lobjet dune nouvelle saisie.

PROCESS AFTER INPUT.
FIELD <screenfield>.
MODULE modul ON REQUEST.


- Si on utilise loption ON CHAIN-REQUEST dans une instruction CHAIN, le module ne sera trait que si
au moins une des zones dcran dans linstruction CHAIN fait lobjet dune nouvelle saisie.

PROCESS AFTER INPUT.
CHAIN.
FIELD : <screen field 1>,
<screen field 2>,

<screen field n>.
MODULE modul ON CHAIN-REQUEST.
ENDCHAIN.



- Lorsquun utilisateur appelle une fonction de type E, un module avec loption AT EXIT-COMMAND est
excut, mme avant que les contrles automatiques ne soient effectus.

- Lcran est ensuite trait selon la procdure normale (contrles automatiques de saisie, puis excution des
modules PAI).

- On peut aussi programmer une fin anormale avec cette option.

- Linstruction MODULE avec loption AT EXIT-COMMAND ne peut pas avoir de rfrence de zone,
cest--dire elle ne peut pas tre spcifie dans une instruction FIELD.

- Chaque instruction PROCESS AFTER INPUT ne peut comporter quune seule instruction MODULE
avec loption AT EXIT-COMMAND.
ANNEXE: BC410
Cours ABAP.doc Page 166 sur 181
Menu Painter :

Il permet de dfinir dans un cran des fonctions dotes dun statut particulier et de les affecter la barre de
menu, la barre doutils standard ou la barre des boutons de commande approprie.

- Il permet aussi de dfinir un titre.

- Il faut lui affecter un statut dans lequel on dfinit les fonctions qui doivent tre actives /inactives.

- A chaque ajout de statut, on doit rgnrer linterface utilisateur.

- Les instructions SET PF-STATUS et SET TITLEBAR permettent daffecter un cran un statut (au max.
8 caractres) et un titre (au max. 3 caractres) dans le moule PBO appropri.

- Voir complments Cahier A (pages 2-30 2-39)

Mise jour asynchrone


Prsentation :
- Une Unit logique de travail permet la transformation de ltat cohrent dune base de donnes en un tat 2
tout aussi cohrent.
- Dans le systme R/3, les transactions SAP prennent en charge lexcution des Units logiques de travail
appropries.



Unit Logique de Travail :

- Le lancement dune ULT se fait partir dun point de synchronisation activ par lapplication de base de
donnes

- Au cours dune ULT, le systme procde la mise jour des tables, en fonction des Ordres de

- Mise jour mis par le systme R/3.
Les entres de table ainsi modifies font lobjet dun blocage et restent inaccessibles jusqu la fin de la
ULT.

- Aprs chaque mise jour de base de donnes, le systme de base de donnes informe, par un code de retour,
le systme R/3 de la russite ou de lchec de la mise jour.

- Linterruption dune ULT seffectue partir dun autre point de Synchronisation activ par le systme R/3
qui transmet un ordre de COMIT ou de ROLLBACK au systme de bases de donnes. En
guise de rponse, celui-ci excute un COMIT de base de donnes pour confirmer la mise jour des tables,
soit un ROLLBACK qui interrompt les mises jour effectues par lULT. ltat 2 est identique
ltat 1.

- Dans les 2 cas, ceci met fin au blocage des entres de tables initialement mis en place par la base de
donnes.

ANNEXE: BC410
Cours ABAP.doc Page 167 sur 181
Transaction SAP :

- Elle est constitue de plusieurs tapes interactives ou de dialogue
Une tape de dialogue : commence lorsque lutilisateur appuie sur Entre, active une fonction laide
dune touche de fonction, ou choisit une option de menu soit par slection, soit
par un double-clic finit ds que lcran suivant apparat

- Au cours dune tape de dialogue, les modules PAI et PBO appartenant respectivement au dynpro et
lcran suivant sont excuts.

- Chaque tape de dialogue peut contenir diffrents Ordres de mise jour
UPDATE : Mise jour
INSERT : Insertion
DELETE : Suppression
Avec lULT :
- Aprs chaque tape de dialogue ou interactive, R/3 transmet automatiquement un COMMIT de base de
donnes au systme de base de donnes, qui repartit ensuite les ordres de mise jour des tapes de dialogue
entre plusieurs ULT.

- Un ROLLBACK dans une tape de dialogue na pas deffet sur les mises jour de base de donnes
excutes dans les tapes prcdentes


R/3
Etape de Dialogue Commit de base de donnes Ordre de mise jour

Syst. Base
Donnes

Mise jour Plusieurs ULT
asynchrone


Avec Mise jour asynchrone :
- La mise jour asynchrone permet de regrouper en une seule unit (les ULT) plusieurs ordres de mise jour
issus des tapes de dialogue dune transaction SAP.

- Dans lULT, soit toutes les mises jour sont effectues, soit aucune nest excute.
Ici , les ordres de mise jour ne sont pas directement transmit la base de donnes mais sont marqus pour
faire lobjet dune mise jour spcifies dans la table de journalisation.

- Linstruction COMMIT WORK de lABAP/4 marque la fin de lULT. R/3 lance ensuite un processus de
travail de mise jour spcial sur la base de saisie de la table de journalisation.

- En cas derreur, lULT est interrompue par linstruction ROLLBACK WORK de lABAP/4.
Les entres de la table de journalisation sont ensuite supprimes et aucun processus de mise jour nest
excut.



Unit Logique de Travail SAP (LUW) :

- Le dbut dune transaction SAP marque toujours le dbut dune ULT SAP.

- Linstruction COMMIT WORK interrompt la tche de dialogue et poursuit celle de la mise jour.

- LULT SAP ne sachve quune fois la tche de mise jour termine. La tche de dialogue


ANNEXE: BC410
Cours ABAP.doc Page 168 sur 181
Mise jour asynchrone :

- 1
e
tape : le prog. Interactif enregistre lordre de mise jour sous forme de code dans la table de
journalisation
- 2
e
tape : la partie dialogue de lULT termine, le prog. Interactif lance alors le processus de Mise jour.
- 3
e
tape : le processus de Mise jour lit les entres protocolaires pour lULT enregistre dans la table de
journalisation au cours du processus de Dialogue
- 4
e
tape : le processus de Mise jour transmet ensuite les ordres de Mise jour la Base de donnes et
analyse les rsultats.
- 5
e
tape : Si lopration est russie, le processus de Mise jour transmet un COMMIT la base de donnes
aprs sa dernire Mise jour, puis supprime les entres protocolaires.
OU : Si erreur, le processus de Mise jour met un ordre de ROLLBACK, quitte les entres protocolaires
de la table de journalisation, puis dlimite lenregistrement protocolaire en consquence.


Mise jour V1 :
- Elle concerne la dure critique.
- Une fois les mises jour effectues avec succs, Les saisie V1 sont conserves dans la table de
journalisation, et un autre ordre de mise jour est excut par le processus correspondant pour chaque saisie
V2 (tape 6).


Mise jour V2 :
- Elle concerne la dure moins critique.
- Selon les informations fournies par le processus de mise jour V1, les ordres de mise jour V2 (tape 7)
sont ensuite lus par un ou plusieurs processus ; chaque processus transmet les ordres de mise jour V2 la
base de donnes et analyse les rsultats.(tape 8)

- Si lopration est russie, chaque processus de mise jour transmet un COMMIT la base de donnes pour
les mises jour V2
En cas derreur, il met un ROLLBACK pour ces dernires puis dlimite en consquence les saisies V2
dans la table de journalisation.

- Si toutes les mises jour, lenregistrement protocolaire est entirement supprim lissue de la dernire
mise jour V2
Ds quune erreur se produit au cours dune mise jour V2, lenregistrement protocolaire est dlimit en
consquence.


Module fonction de Mise jour :

Il faut quon dispose dun prog. Interactif ou dun ou plusieurs modules fonction prvus cet effet

- Si dans le prog. Interactif, linstruction CALL FUNCTION est accompagne de loption IN UPDATE
TASK, lappel nest pas excut immdiatement mais enregistr dans la table de journalisation.

- Les paramtres EXPORTING et TABLES contiennent les informations ncessaires la mise jour de la
base de donnes, qui sont galement enregistres dans la table de journalisation.

Le module fonction contient les instructions de mise jour. Il est appel par le processus de mise jour en
fonction des saisies de la table de journalisation qui lui fournit les donnes appropries.

- On peut affecter les modules fonction de mise jour diffrents groupes de fonctions.

- Dans lcran Gestion on indique quon utilise le module fonction pour les mises jour V1 (lancement
immdiat) ou V2 (lancement retard).

- Dans le module fonction de mise jour, seuls les paramtres dimport et de tables sont pris en compte. Le
systme ne tient pas compte des paramtres dexport et des exceptions.

ANNEXE: BC410
Cours ABAP.doc Page 169 sur 181
- Si on souhaite ignorer la fonction qui permet deffectuer la mise jour ultrieure laide de la transaction
SM13, la suite derreurs, on slectionne loption Lancement immdiat, aucune reprise.

Table de journalisation :

- Chaque fois que linstruction CALL FUNCTION IN UPDATE TASK est excute, une saisie est
ajoute la table de journalisation sous le nom de module de fonction de mise jour et des paramtres
correspondants

- Dans une ULT, tous les ordres de MAJ possdent la mme cl (= cl de MAJ) qui permet didentifier une
ULT de faon univoque.

- Une zone Intitul pour les entres protocolaires associes nest cre quaprs lexcution dune instruction
COMMIT WORK.


Instruction ROLLBACK :

Dans un prog. Interactif :
- ROLLBACK WORK ncessite la suppression de tous les codes de MAJ de lULT SAP courante.
- ROLLBACK annule toutes les MAJ effectues dans lULT de la base de donnes actuelle.

Dans un prog. De MAJ :
- Les instructions COMMIT WORK et ROLLBACK WORK ne sont pas autorises dans les modules
fonction de MAJ autorises que dans les prog. Interactifs

- Le module fonction de MAJ transmet les ordres de MAJ la base de donnes puis analyse les codes retour

- Voir Cahier A page 3-15


Instruction PERFORM <sous-prog.> ON COMMIT :

Dans un prog. Interactif :
- Lorsquun sous-prog. est appel laide , il nest excut quaprs linstruction COMMIT WORK
suivante.

- Elle permet de regrouper des ordres de MAJ issus de diffrentes tapes, puis de les excuter ensemble la
fin du processus interactif dune ULT SAP .

- Chaque fois quon la lance, le nom du sous-prog. est ajout une table syst. Interne.

- Elle ne permet pas de transfrer des paramtres.

- Si on lance plusieurs fois le mme sous-prog. , ce prog. ne pourra tre excut quune seule fois avec
COMMIT WORK

- Linstruction ROLLBACK WORK supprime les saisies de la table interne.
ANNEXE: BC410
Cours ABAP.doc Page 170 sur 181
Concept de blocage SAP

Motifs de blocage.

- Lorsque plusieurs utilisateurs doivent accder aux mmes ressources. Celles-ci doivent tre parfaitement
synchronises pour garantir une cohrence des donnes.

- Par exemple si l'on fait une rservation sur un vol et qu au mme moment une autre personne rserve sur le
mme vol, il peut arriver que l'on rserve des places qui n'existe plus.

- Donc un moyen pour viter cela est le blocage. Le blocage est un moyen de bloquer l'accs aux donnes
critiques (par exemple le nombre de place disponible sur un vol) lorsqu'un utilisateur besoin de l'utiliser
et/ou de les modifier.

- Pour ne pas entraver le travail des autres utilisateurs il est essentiel de maintenir le blocage que pendant le
temps ncessaire .

Blocage de base de donnes.

- Si un programme interactif contient des instructions de mise jour. Le systme de base de donnes active
les blocages appropris.

- A la fin d'une unit logique de travail, le systme de base de donnes dsactive tous les blocages dfinis
durant la transaction.

- Puisque le systme R/3 transmet un COMMIT implicite au systme de base de donnes chaque
changement d'cran, les blocages de la base de donnes effectus au cours d'une tape de dialogue restent
activs, au plus tard, jusqu' la fin de cette tape.

Prsentation du systme de blocage

- Dans le systme SAP, une transaction existe qui permet d'activer les entres d'une table de blocage pour les
enregistrements traiter.

- Une entre de blocage ne peut russir que si aucune autre entre n'existe dj pour les enregistrements de
table concerns.

- La transaction SAP reoit les informations relatives la russite d'un ordre de blocage par l'intermdiaire
d'un 'return code' (code de retour), l'analyse de ce code de retour permet la transaction de ragir en
consquence:
- Si un autre utilisateur traite les donnes un message d'erreur apparat.

- A la fin du traitement, les blocages doivent tre dsactivs par le programme interactif de faon explicite.

- Si l'utilisateur interrompt le programme interactif de manire impromptue les blocages sont dsactiv
automatiquement (implicitement).

ANNEXE: BC410
Cours ABAP.doc Page 171 sur 181
Objet de blocage SAP

- Pour lancer les ordres de blocage, vous devez:

- Dfinir un objet de blocage dans l'ABAP/4 DICTIONARY. Cet objet comprend les diffrentes tables
qui doivent tre bloques dans un ordre de blocage.
- Vous pouvez ajouter votre table primaire des tables secondaires l'aide des cl externes.
- Le nom de l'objet de blocage propre au client doit commencer par EY ou EZ.
- L'argument de blocage est labor partir des zones 'cl' des tables.
- Pour chaque table, vous pouvez dfinir le mode de blocage exclusif (mode E) ou partag (mode S).
- On ne peut activer de mode exclusif que si aucun autre mode existe .
- On ne peut activer de mode partag que si d'autre mode partag existe dj.
- Lors d'un blocage partag ou exclusif, aucun autre utilisateur ne peut activer un blocage exclusif.

Module fonction ENQUEUE/DEQUEUE.

- Lorsqu'un objet de blocage est activ avec succs, le systme gnre un module fonction ENQUEUE et un
module fonction DEQUEUE..

- Ces modules fonction ont pour nom ENQUEUE_<objet de blocage> et DEQUEUE_<objet de blocage>.

Appel de modules de blocage.

- A l'appelle d'un module de fonction ENQUEUE, le programme tente d'activer une entre de blocage.

- Les paramtres d'export identifient l'entre ou les entres de table bloquer.

- Le programme interactif (de dialogue) value le return code et rpond en consquence.

- A l'appel d'un module de fonction DEQUEUE, appropri la fin du programme interactif, les entres sont
supprimes de la table de blocage.

- Si vous dsirez supprimer tous les blocages qui ont t activ (par exemple la fin d'un programme), vous
pouvez utiliser le module de fonction DEQUEUE_ALL.

Table de blocage.

- Les arguments de blocage concernant chaque table sont saisis dans la table de blocage.

- Pour afficher la table de blocage, slectionnez Outils Gestion Suivi Entres de blocage (transaction
SM12)
Concept de blocage SAP avec mise jour.

- Si la mise jour est demande dans un programme interactif avec l'instruction COMMIT WORK, les
blocages activs par ce programme sont maintenus pour le programme de mise jour (voir galement le
paramtre _SCOPE).

- A la fin de l'excution du programme de mise jour, tous les blocages contenus dans l'unit logique de
travail de SAP en cours sont automatiquement (cd implicitement) dsactivs.

ANNEXE: BC410
Cours ABAP.doc Page 172 sur 181
Caractristiques spciales de ENQUEUE.

- le paramtre MODE_<table> a priorit sur le mode de blocage (S = partag et E = exclusif) dfini par
l'objet de blocage.

- Le paramtre _SCOPE dtermine l'auteur des demandes de blocage et dsactive ces derniers lorsqu'ils ne
sont plus ncessaires :
- _SCOPE = 1 : le blocage est maintenu dans le programme interactif.
- _SCOPE = 2 (valeur par dfaut) : le blocage est conserv pour le programme de MAJ.
- _SCOPE = 3 : le programme interactif et le programme de MAJ sont les propritaires du
blocage : il existe deux entres de blocage par objet.

- Le paramtre WAIT dtermine si un ordre de blocage doit tre rpt aprs une erreur. Vous pouvez
spcifier la dure des tentatives de rptition avec le paramtre de profil ENQUEUE/DELAY_MAX.

- Si un argument ne contient de valeur ou correspond SPACE, un blocage gnrique est alors activ. Si vous
dsirer bloquer la valeur initiale, vous devez activer le code X_<argument de blocage>.


Modification dynamique des crans.


Table SCREEN/Attributs de zones modifiables.

- Les zones d'crans et leurs attributs de zone modifiables sont automatiquement mmoriss dans la table
(systme) interne SCREEN.

- Pour dterminer la zone pour laquelle vous dsirez modifier un ou plusieurs attributs, vous pouvez lire les
zones SCREEN-NAME ainsi que les zones SCREEN-GROUP1 SCREEN-GROUP4 en effectuant un
LOOP sur la table SCREEN.

- SCREEN-ACTIVE = 0 le mme effet que les trois instructions SCREEN-INVISIBLE = 1, SCREEN-
INPUT = 0, SCREEN-OUTPUT = 0.

Attributs de zone : groupes de modifications.

- Vous pouvez affecter une zone quatre groupes diffrents. Les noms de groupes ont trois caractres .

- Vous pouvez effectuer l'affectation de groupe dans le Screen Painter.

Modification dynamique des crans : programme.

- Vous pouvez programmer la modification d'cran dans un module qui est excut pendant le PBO.

- Vous pouvez modifier les attributs d'une zone et/ou d'un groupe de zones en effectuant un LOOP sur la
table SCREEN (notez que LOOP AT SCREEN WHERE et READ TABLE SCREEN ne sont pas pris
en charge).

- Vous activez ou dsactivez les attributs en leur affectant la valeur 0 ou 1. Pour sauvegarder vos
modifications, utilisez l'instruction MODIFY SCREEN.

- Notez que vous ne pouvez pas utiliser l'instruction SCREEN-ACTIVE = 1 pour activer dynamiquement
une zone que vous avez statiquement comme invisible dans le SCREEN PAINTER . En revanche, vous
pouvez transformer une zone dfinie statiquement comme visible dans le SCREEN PAINTER en une zone
invisible (ou inactive).


ANNEXE: BC410
Cours ABAP.doc Page 173 sur 181
Table Control


Fonctionnalits :

Les fonctions de Table Control permettent dentrer des donnes ligne par ligne, sous forme de tableau

Les fonctionnalits sont :
- Grille de table pouvant tre redimensionne pour laffichage et le traitement des donnes
- Largeur et position de colonne pouvant tre modifies par lutilisateur
- Colonne de slection des lignes avec affichage en couleur des donnes choisies
- Slection de ligne : unique, multiple, toutes, dslection
- Intituls de colonne affichs sous forme de boutons de commande pour la slection de colonne
- Dfilement horizontal et vertical laide de la barre de dfilement
- Dtermination dun nombre indfini de colonne cl (colonne des codes fixes)
- Attributs de cellule modifiables lors de lexcution

Options de table :
Lutilisateur peut mmoriser diffrentes variantes daffichage et dfinir comme option courante ou standard :
- soit lune delles,
- soit loption de base.

Renseignement des zones de Table Control :
Pour une utilisation plus efficace, on doit :
Lire les donnes de la Table Control,
Puis les mettre en mmoire tampon dans une table interne.

Applications de Table Control 1
- Il nexiste quun seul espace de travail pour traiter les lignes dune Table Control on na
besoin dune instruction LOOP ENDLOOP pour chaque Table Control, la fois dans le module PBO et
PAI de la logique dexcution.

- Pour chaque module PBO, seule la ligne de la table interne doit tre copie sur la ligne du Table Control,
chaque fois que la boucle est traite.
- De mme, chaque module PAI doit copier les modifications dune ligne de Table Control sur la ligne de la
table interne correspondante.

- Lorsquon utilise les fonctions, on doit faire la distinction entre celles qui sappliquent uniquement la ligne
du Table Control et celles qui font rfrence lensemble de lcran.

Transfert de zones dans PBO :
- Lorsque les Tables control apparaissent sur les crans, la squence de transfert de zones est modifie.
- Dans le module PBO, le transfert de zones du pool de modules lcran intervient chaque fois quune
boucle est traite dans la logique dexcution.
Les autres zones dcrans sont renseignes en principe en fin de traitement du PBO.

Transfert de zones dans PAI :
- Dans le module PAI, toutes les zones dcran qui nappartiennent pas un Table Control et qui ne sont pas
spcifies dans une instruction FIELD, sont transfres aux zones de tavail appropries du pool de modules.
- Le contenu dun Table Control est transfr ligne par ligne, lespace de travail appropri du pool de
modules, lors du traitement de la boucle correspondante dans la logique dexcution
- De manire gnrale, les zones spcifies dans les FIELD sont immdiatement transfres, avant mme
linstruction FIELD correspondante.

ANNEXE: BC410
Cours ABAP.doc Page 174 sur 181
Cration des Tables Controls (en mode graphique pleine page) :

- Dans lditeur graphique pleine page, on choisit Table pour crer un Table control et on le positionne grce
au bouton gauche de la souris.
- On dfinit ensuite les zones du Table Control, en se servant par exemple de celles du Dictionary de
lABAP/4.
- De manire gnrale, on gre les attributs du Table Control :
- Soit partir de lditeur pleine page
- Soit dans la liste de zones


Attributs de Table Control :

Deux types : - Attributs gnraux : Redimensionnement (vertical, horizontal)
Lignes de sparation (vertical, horizontal)
Possibilits de configuration

- Attributs gnraux : Lignes (aucune, unique multiple)
Colonnes(aucune, unique multiple)
Colonne de slection de lignes

Cration de tables Control (en mode alphanumrique pleine page) :

Dans lditeur pleine page alphanumrique, on peut dfinir un Table Control :
- Dans le menu Traiter, on slectionne Crer lment puis Table Control
- On accde une bote de dialogue o on entre le nom de la Table Control et on initialise les attributs.
- On passe en mode slection et on dtermine la taille du Table Control laide du curseur.
On dfinit ensuite les zones du Table Control.
- On peut aussi utiliser les zones de lABAP/4 Dictionary, soit en crer de nouvelles dans le programme.

Dfinition des TC dans le pool de module :

CONTROLS ctrl TYPE TABLEVIEW USING SCREEN = scr.


Correspond au type Ecran de rfrence pour
de structure CXTAB_CONTROL initialiser le Table Control
de lABAP/4

- Linstruction CONTROLS dfinit un objet de donnes complexes du type TABLEVIEW, qui lui
correspond au type CXTAB_CONTROL dfini dans lABAP/4.
- On gre les valeurs initiales dans SCREEN PAINTER .
A laide de loption USING SCREEN, on dtermine lcran partir duquel on dsire obtenir les valeurs initiales
pour le Table Control concern.

- On peut utiliser linstruction REFRESH CONTROL ctrl FROM SCREEN scr tout moment pour
initialiser un cran, sur la base des valeurs initiales de lcran spcifi.
Il nest pas ncessaire que scr corresponde l cran initial du Table Control

Contenu de TABLEVIEW :
FIXED_COLS TYPE i Nombre de colonnes fixes
LINES TYPE i Nombre de lignes pour le dfilement vertical
TOP_LINE TYPE i 1
e
ligne dans le PBO suivant
CURRENT_LINE TYPE i Ligne actuelle (dans LOOP ENDLOOP)
LEFT_COL TYPE i 1
e
colonne mobile affiche
LINE_SEL_MODE TYPE i Slection ligne (aucune : 0, unique : 1, multiple : 2)
COL_SEL_MODE TYPE i Slection colonne (aucune : 0, unique : 1, multiple : 2)
LINE_SELECTOR Code : Afficher slection ligne
V_SCROLL Code : Dfilement vertical
H_GRIP Code : Ligne de grille horizontale
ANNEXE: BC410
Cours ABAP.doc Page 175 sur 181
V_GRIP Code : Ligne de grille verticale
COLS TYPE CXTAB_COLUMN OCCURS 10



Attributs (structure) de la Table Control :

- Tous les attributs de Table Control sont modifiables dynamiquement
- On peut aussi interprter les attributs.
Ex : lattribut SELECTED indique si lutilisateur a slectionn une colonne particulire.

Table Control dans la logique dexcution :

Option 1 : Lecture de la table interne dans la logique dexcution et des zones de la table interne lcran

PROCESS BEFORE OUTPUT.
LOOP AT spfli_itab
WITH CONTROL CONNEXIONS
CURSOR CONNEXIONS-CURRENT_LINE.
MODULE lecture.
ENDLOOP.

PROCESS AFTER INPUT. MODULE modify_spfli_itab INPUT.
LOOP AT spfli_itab
MODIFY spfli_itab
FIELD spfli_itab-mark INDEX CONNEXIONS-CURRENT_LINE.
MODULE modify_spfli_itab
ON REQUEST. ENDMODULE.
ENDLOOP.


- Dans la logique dexcution, on peut lire une table interne laide de linstruction LOOP. On peut entrer
WITH CONTROL <ctrl> pour dfinir la rfrence au Table Control correspondant.

- On dtermine lentre de la table qui doit tre lue en spcifiant CURSOR <ctrl> CURRENT_LINE. Le
systme dtermine son tour <ctrl> CURRENT_LINE partir de <ctrl>TOP_LINE.
SY-SETPL sert de compteur de boucles spcial pour les instructions LOOP dans la logique dexcution.

- Le systme dtermine lui-mme <ctrl> TOP_LINE lorsque lutilisateur se sert de la barre de dfilement,
mais nen fait pas autant pour le changement de page quon doit nous-mme programmer.

- Une fois la lecture termine, les dfinitions sont mmorises dans la ligne Intitul de la table interne. Si les
zones du Table Control ont le mme nom que les zones de la table interne, ces dernires sont alors
renseignes.

- On doit illustrer dans la table interne correspondante, toutes les modifications apportes par lutilisateur aux
zones dun Table Control. Sinon, elles risquent de ne pas tre prise en compte lorsque lcran
apparatra de nouveau aprs nouvelle excution du PBO.
MAIS, ce traitement ne doit tre excut que si les modifications ont t effectivement apportes une ligne du
Table Control

ANNEXE: BC410
Cours ABAP.doc Page 176 sur 181
Option 2 : Lecture de la table interne dans le pool de modules et des zones du Dictionary lcran


MODULE sflight_itab_read OUTPUT.
READ TABLE sflight_itab.
INDEX FLIGHTS-CURRENT_LINE.
Screen Painter IF SY-SUBRC = 0.
MOVE-CORRESPONDING sflight-itab to
flight.
ELSE.
EXIT FROM STEP-LOOP.
ENDIF.
PROCESS BEFORE OUTPUT. ENDMODULE
LOOP WITH CONTROL FLIGHTS.
MODULE sflight_itab_read.
ENDLOOP.

PROCESS AFTER INPUT. MODULE modify_spfli_itab INPUT.
LOOP WITH CONTROL FLIGHTS. MODIFY spfli_itab
FIELD sflight-price INDEX CONNEXIONS-CURRENT_LINE.
MODULE modify_sflight_itab
ON REQUEST. ENDMODULE.
ENDLOOP.


- Si on utilise une linstruction LOOP sans la prsence dune table interne dans la logique dexcution, on
doit lire les donnes dans un module PBO quon appelle chaque fois que la boucle est traite.

- Comme le systme ne peut pas dfinir, dans ce cas, lui-mme le nombre des entres de table interne, on doit
utiliser linstruction EXIT FROM STEP-LOOP pour assurer quaucune ligne vierge nest affiche dans le
Table Control sil ny a plus dentre de table interne correspondante.

- On doit galement dterminer, au moment opportun, le nombre de lignes concern par le dfilement vertical.


Modification des Tables Controls :

- On peut modifier toutes les valeurs initiales dun Table Control en crasant les attributs.
- Pour modifier les attributs des cellules temporairement, on modifie la table SCREEN dans la module PBO
qui est trait entre LOOP ENDLOOP dans la logique dexcution.



Tri des Tables Controls :

Les attributs de Table Control <ctrl> SELECTED et <ctrl> SCREEN-NAME permettent deffectuer trs
facilement le tri de laffichage par colonne slectionne.
ANNEXE: BC410
Cours ABAP.doc Page 177 sur 181
Lien entre les composantes de programme.

Lien entre traitement interactif et traitement de liste.

- Vous pouvez combiner le traitement interactif (cran) au traitement de liste.
A partir du traitement de liste, vous pouvez passer au traitement d'une squence d'crans. ces crans peuvent
apparatre sous forme de bote de dialogue modales ou en format pleine page.
- A partir du traitement d'cran, vous pouvez passer au traitement de liste. Les listes peuvent apparatre dans
des fentres ou des crans pleine page, sous forme de liste de base ou de liste dtaille. Dans le traitement de
liste, vous pouvez utiliser toutes les techniques de reporting interactives.

Passage du traitement de liste au traitement interactif.

- Dans le traitement de liste, vous pouvez utiliser plusieurs vnements interactifs pour rpondre aux
fonctions dclenches par l'utilisateur, les plus importantes sont AT LINE SELECTION et AT USER-
COMMAND. Le code de fonction appel par l'utilisateur est mmoris dans la zone systme SY-UCOMM.
- Vous pouvez utilisez l'instruction CALL SCREEN pour appeler un cran sous forme de bote de dialogue
ou d'cran pleine page, partir de la liste.
- L'cran appel est une composante du programme d'appel.
- Les instructions SET SCREEN 0 et , dans certain cas, LEAVE SCREEN ou LEAVE TO SCREN 0, vous
permet de revenir l'endroit initial d'o l'cran a t appel.


Passage du traitement interactif au traitement de liste.

- L'instruction LEAVE TO LIST-PROCESSING vous permet de passer du traitement interactif (cran) au
traitement de liste. Pour traiter la liste, vous pouvez utiliser toutes les instructions associes au traitement de
liste, telles que WRITE, ULINE, SKIP, etc., ainsi que tous les vnements spcifiques aux listes.
- Avant que la liste ne soit affiche ,tous les modules PAI du dynpro en cours sont traits.
- L'instruction SET PF-STATUS SPACE vous permet d'activer le statut de liste standard.
- Lorsque le traitement de la liste est termin (interactivement parce que l'utilisateur a appuy sur F3 dans la
liste de base, ou via le programme suite l'instruction LEAVE LIST-PROCESSING), le traitement
interactif reprend sur l'cran suivant. Vous pouvez ignorer cet cran en spcifiant AND RETURN TO
SCREEN <scr>.

Liste dans les bote de dialogue modale.

- Si vous dsirez affricher une liste dans une bote de dialogue, vous devez appeler un cran mais vous devez
occulter son apparition l'aide de l'instruction SUPPRESS DIALOG du module PBO.
- Pour vous assurer que vous revenez l'cran d'appel aprs avoir quitter la liste spcifi LEAVE TO LIST-
PROCESSING AND RETURN TO SCREEN 0.

Encapsulation des dialogues dans les modules fonction.

- Vous pouvez encapsuler les dialogues dans les modules fonction.
- Si vous appelez un cran dans un module fonction, cet cran est associ au programme du groupe de
fonction auquel appartient le module fonction. Le nom du programme est constitu du prfixe SAPL et du
nom de groupe de fonctions.

Appel d'un programme.

- L'instruction SUBMIT vous permet d'appeler et de lancer un programme.
- Si vous spcifi VIA SELECTION-SCREEN, l'cran de slection du programme apparat.
- Si vous spcifi AND RETURN, vous revenez l'endroit d'o le programme a t appel lorsque son
excution prendra fin.
- Lorsque vous appel un programme, vous pouvez utiliser des bases de donnes logiques pour le processus
de lecture.

ANNEXE: BC410
Cours ABAP.doc Page 178 sur 181
Appel d'une transaction.

- L'instruction CALL TRANSACTION vous permet d'appeler un programme interactif partir d'un
traitement de liste ou d'un traitement interactif.
- L'instruction LEAVE PROGRAM vous permet de quitter le programme interactif et de revenir l'endroit
d'o vous l'aviez appel.
- L'instruction LEAVE TO TRANSACTION vous permet de lancer un autre programme interactif et dans ce
cas, vous n'avez pas la possibilit de revenir l'endroit o le programme a t appel. Cette instruction
correspond l'entr de la zone de commande /ntcod.

Techniques de transfert de donnes.

- La mmoire SAP et la mmoire ABAP/4 permettent de transfrer des donnes entre diffrents programmes :
programmes simples et programmes complexes.
- La mmoire SAP est une zone de mmoire propre l'utilisateur servant stocker des valeurs de zones
simples. Elle est conserve pendant toute la dure d'une session utilisateur. Les valeurs contenues dans la
mmoire SAP peuvent tre utilise comme valeurs par dfaut pour les zones d'cran. puisque tous les modes
externes peuvent accder la mmoire SAP, elle convient peu au transfert de donnes des modes externes.
- Vous pouvez actualiser la mmoire ABAP/4 pour transfrer entre diffrent mode internes toutes les
variables ABAP/4 : zones, structures, tables internes, objets complexes.
- Chaque mode externe possde sa propre mmoire ABAP/4. Lorsque l'utilisateur interrompt un mode externe
( en entrant /i dans la zone de commande) la mmoire ABAP/4 associe est libre.

Transfert de paramtres (mmoire SAP)

- L'instruction SET PARAMETER vous permet de stocker dans la mmoire SAP les valeurs servant
d'identifications (ID) de paramtre. Celles-ci sont alors automatiquement transfres aux programmes
interactifs qui activent la fonction GET PARAMETER pour les zones appropries.
- Vous pouvez galement utiliser l'instruction GET PARAMETER pour extraire de la mmoire SAP des
valeurs d'ID de paramtre.
- L'option AND SKIP FIRST SCREEN vous permet de traiter le premier cran en arrire-plan lorsque vous
appelez un programme interactif. Toutefois, les valeurs contenues dans la mmoire SAP doivent tre
affectes toutes les zones obligatoires.

Transfert de donnes entre programmes (mmoire ABAP/4).

- L'instruction EXPORT TO MEMORY vous permet de copier des variables ABAP/4 avec leurs valeurs
courantes sous forme de cluster de donnes dans la mmoire ABAP/4. Vous identifiez les diffrent cluster
de donnes l'aide de l'ID approprie (maximum 32 caractres ).
- L'instruction EXPORT TO MEMORY crase tous les clusters de donnes existants.
- L'instruction IMPORT FROM MEMORY vous permet d'extraire des donnes de la mmoire ABAP/4.
- L'instruction FREE MEMORY ID <id> vous permet de librer un cluster de donnes.

Fonction d'aide automatique et programm

Prsentation des fonctionnalits standard F1 et F4.

- Aide (F1) et Entres possibles (F4) sont des fonctions standard utilisables dans tout le systme.
- Lorsque l'utilisateur appui sur F1 en tant sur une zone de saisie ou un texte de zone, la documentation
relative cette zone est alors affiche.
- Lorsque l'utilisateur appui sur F4 en tant sur une zone de saisie ou, ventuellement, sur la touche des
entres possibles, les valeurs possibles sont alors affiches.
- Pour mettre cette fonctionnalit la disposition des utilisateurs lorsque vous dveloppez des programmes
interactifs, vous pouvez l'obtenir automatiquement en faisant rfrence aux zones du Dictionnary, ou
programmer vous-mme le traitement l'aide des vnements d'cran spciaux PROCESS ON HELP-
REQUEST et PROCESS ON VALUE-REQUEST.

ANNEXE: BC410
Cours ABAP.doc Page 179 sur 181
Objet matchcode : dfinition.

- Vous grez les objets matchcode dans l'ABAP/4 Dictionnary. Le nom doit comporter quatre caractres.
- Commencez par affecter une table primaire. Vous pouvez ensuite inclure les tables secondaires dans la vue,
mais ceci n'est possible que pour les tables lies la table primaire par des relations de cl externes.
- Une table pool permettant de mmoriser des donnes matchcode n'est ncessaire que dans des cas
exceptionnels (pour certains types d'ID de matchcode). En rgle gnrale, vous devez utiliser les vues avec
les objets matchcode. Aucune table pool n'est ensuite ncessaire dans la base de donnes.

Objet matchcode : choix des zones.

- Aprs avoir affect les tables appropri d'un objet matchcode, slectionnez les zones. Ce faisant, vous
dterminez au niveau de l'objet, les zones de base qui peuvent utiliss pour la dfinition des identifications
(ID) de matchcode.
- Vous devez dlimiter une de ces zones comme Zone de recherche elle correspond gnralement la zone
cl de la table primaire. Aprs une recherche par matchcode, la dfinition (ou contenu) de cette zone est
ensuite insre dans la zone d'cran affecte lors de l'excution.
- Vous activez l'objet matchcode une fois que vous avez effectu ces dfinitions.

Fonctionnalit F4 tendue : recherche par matchcode 1.

- Le matchcode est un critre de recherche que vous pouvez utiliser pour accder directement aux
enregistrements sans avoir connaissance de la cl (similaire l'index).
- Un matchcode est diffrent d'un index, en ce sens :
- Que vous pouvez le limiter en spcifiant certaines conditions restrictives.
- Qu'il peut tre constitu partir de plusieurs tables.
- Qu'il est affich sous forme d'aide la saisie dans le systme R/3 lorsque l'utilisateur appuie sur F4.
- Pour un seul objet matchcode, il peut y avoir plusieurs valeurs (identifications de matchcode).
- Si une zone d'cran inclut une relation un objet matchcode (le SCREEN PAINTER : attribut de zone), le
matchcode devient actif lorsque l'utilisateur appuie sur F4 : autrement dit, s'il existe plusieurs identifications
de matchcode, elles sont prsentes l'utilisateur pour qu'il puisse effectuer sa slection.

Liste des SAPistes
Cours ABAP.doc Page 180 sur 181
Liste des SAPistes


UNION TECHNOLOGIE Est W : 03 87 56 14 33
Fax : 03 87 63 78 03

UNION TECHNOLOGIE Paris W : 01 46 99 80 00
Fax : 01 46 99 80 02


Pour se mettre en relation d'autres SAPistes veuillez prendre contact avec Jean-Jacques GUICHARD.


BON COURAGE A TOUS.

LEQUIPE SAPiste.
Mise jour
Cours ABAP.doc Page 181 sur 181
Mise jour

Dictionnaire des expressions informatiques

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z





ABAP/4 : Advanced Business Application Programming / 4
th
generation
Activation de masse: Permet d'activer un grand nombre d'objets de faon plus
performante qu' la main . Ces activations sont faites dans un
ordre cohrent (ex.: domaine puis lment de donnes). De plus,
une table concerne par exemple, ne sera active qu'une seule
fois mme si plusieurs domaines la concernant ont t modifis.
ALE : Application link enabling, garantit une certaine autonomie dans
le cadre d'un traitement distribu, et assure une parfaite
intgration des applications relies entre elles avec les systme
R/3, R/2 et les autres
Alter Table : Catalogue de la base de donnes.
AM : (Fixed Assets Management) Module de gestion des
immobilisations
ASCII : (American Standard Code for Information Interchange)





Batch Input : Transfert d'information d'un ancien systme vers SAP
BD : Base de donnes
BDC : (Batch Data Communication) Batch input
BDL : Base de donnes logique





CAO : Conception assiste par ordinateur
CATT : Outil de test assist par ordinateur, permet d'assembler et
d'automatiser les processus de gestion dans les procdures de
test.
CBN : Calcul des besoins nets
Chane de zones : Table interne conue par le client par le biais de programmes
CMOD : Permet la gestion des modifications des extensions
CO : (Controlling) Module de contrle de gestion
CPI : Caractres par pouce, espacement des caractres
A
B
C
Mise jour

CPI-C : Common Program interface communications, (coupl avec
RFC) facilitent la communications et le traitement d'applications
et de programmes entre les systme R/3, R:2, et les autres
CRS : Responsable du Service Clientle.





Data Modeler : Pour crer des lments de donnes (cf. 15-6 BC400)
DD :
DDIC :
Dboguer : Tester un programme (par exemple l'aide du Dbogueur
ABAP/4, transaction /h)
Dictionnaire : Il regroupe toutes les tables SAP ou celles cres de toutes
pices (mais pas les tables internes)
DLL : Dynamic Link Library
Dynpro : Utilis dans l'Object Browser, un cran avec une gestion par
modules PAI et PBO avant et aprs l'affichage





EDI : Echange de donnes informatises, mcanisme d'change de
donnes commerciales entre diffrents systmes
Elments de texte : (SAPscript) C'est dans ce menu que l'on programme ce que l'on
affichera dans une fentre
EPC : Chane de processus commande par vnement
Etape de Dialogue : Commence lorsque l'utilisateur appuie sur ENTREE, active une
fonction, ou choisit une option de menu (par slection ou
double-clic). Elle s'achve ds que l'cran suivant apparat. Elle
contient l'excution du PAI du dynpro et le PBO de l'cran
suivant






Fentre : (SAPscript) Contient toutes les fentres ncessaire
l'impression d'un tat
Fentres de page : (SAPscript) C'est dans ce menu que l'on place les diffrentes
fentres dans une page
FI : (Financial Accounting) Module de comptabilit financire
D
E
F
Mise jour

Fichier squentiel : Fichier texte, pour le Batch Input, contenant les informations de
l'ancien systme transcrire. Les donnes sont formates selon
leurs caractristiques futures
FLCS : Ligne directe de tlassistance
FM : Module fonction
Formulaire : Contient toutes les donnes relatives l'impression d'un tat






GUI : (Graphical user interface) Interface utilisateur graphique






HR : (Human Resources) Module de gestion du personnel






IC :
ID : Identification
IS : (Industry Solutions) Module solutions mtiers
ITF : (Interchange Text Format) C'est le format sous lequel sont
enregistr les donnes SAPscript. Il existe des programme de
conversion pour passer en format RTF ou ASCII










G
H
I
J
K
Mise jour






LIS : Systme d'information logistique
LPI : Ligne par pouce, interlignage
LUW : Units logiques de travail






MAJ : Mise jour
Menu Painter : Permet d'accder toutes les actions possibles sur un statut (liste
des statuts, barre de menu, allocation des touches, liste des
fonctions, listes des titres)
MM : (Materials Management) Module des achats et stocks
Modification d'cran: Permet de revenir sur un cran et d'afficher certaine donnes
diffremment (en grises par exemple)
MPS : voir PDP
MRP : Calcul des besoins, composante du module PP










Object browser : Permet de travailler sur les pool de modules, les groupes de
fonctions ou encore les objets privs locaux pour voir tout ce
qu'on a cr (transaction, fonctions, includes, )
Objet agrg : C'est un objet form partir de plusieurs tables systme
Objet d'excution : Ensemble d'informations sur une table, mises en mmoire
tampon pour faciliter l'accs rapide par un programme
OCS : Online Correction Services
OCR : (Optical Character Recognition) Reconnaissance optique des
caractres
L
M
N
O
Mise jour

O.F. : Ordre de fabrication
OLE : Object Link Embedding, liaison et incorporation d'objets
permettant d'intgrer des applications PC au systme R/3
Open Interfaces : Interfaces ouvertes, interfaces entre des applications spcifiques
telles que le CAO, l'archivage optique et les lecteurs de codes
barres
OSS : Online Service System
OTF : Output Text Format






PAI : Process After Input, vnement excut une fois que l'utilisateur
a appuy sur ENTREE
Pages : (SAPscript) Contient les diffrentes pages ncessaires
l'impression d'un tat
Paragraphes : (SAPscript) Contient tout les paragraphes contenus dans l'tat
imprimer, c'est dans ce menu que l'on dclare les diffrents
types de police (soulign, italique, gras), de tabulations
PBO : Process Before Output, vnement excut avant l'apparition de
l'cran
PC : Personal Computer
PDP : (ou MPS) Programme directeur de production composante du
module PP
PIC : Planification industrielle & commerciale, composante du
module PP
PM : (Plant Maintenance) Module de maintenance
POH : PROCESS ON HELP-REQUEST, programmation de la
fonctionnalit F1
POV : PROCESS ON VALUE-REQUEST, programmation de la
fonctionnalit F4
PP : (Production Planning) Module de gestion de la production
Programmation Interactive: Pool de modules avec Transactions
PS : (Project System) Module de gestion de projet






QM : (Quality Management) Module de management de qualit


P
Q
Mise jour





Report : Programme cr sous l'diteur ABAP/4
Reporting Interactif: Utilisation de listes de base et secondaires, appel de fentres
et/ou d'crans suivants
Repositoring : Affichage lien arborescence tables
RFC : Remote function calls (coupl avec CPI-C) facilitent la
communications et le traitement d'applications et de
programmes entre les systme R/3, R:2, et les autres
Roll Area : Zone mmoire (appel programme ou transaction)
RTF : (Rich Text Format)






SAP : System Application Product in data processing
SAPscript : Permet l'dition d'tats
Screen Painter : Permet d'accder toutes les actions possibles sur un dynpro
(diteur plein cran, zone dico/prog, liste des zones, attributs de
dynpro, logique d'excution)
SD : (Sales & Distribution) Module de l'administration des ventes
Serveur de prsentation: Frontal, terminal, le PC en somme
SFC : Pilotage de l'atelier, composante du module PP
SGBD : Systme de Gestion de Base de Donnes
SIA : Systme d'information des achats, composante du module MM
SIGM : Systme d'information de gestion de la maintenance,
composante du module PM
SIMQ : Systme d'information de management de la qualit,
composante du module QM
SLCS : Support client niveau 2
SMOD : Permet de programmer des extensions SAP avec des Exits de
programme, des Exits de menu et des Exits d'cran
SPA/GPA : Zone mmoire
SPAU : Traitement aprs mise niveau
SPDD :
SQL : Structured query language
SSCR : (SAP Software Changement Record) enregistrement d'un
changement logiciel SAP


R
S
Mise jour





Tables transparentes: Tables du systme de base de donnes (TRANSP)
TCP/IP : Protocole de communication rseau
Text Module : Groupement d'informations (essentiellement des lignes de texte)
qui peut tre utilis dans plusieurs formulaire mais aussi dans
d'autres Text Module
Transaction : Raccourcis d'appel d'un programme crit dans la zone d'dition
OKCODE





UPDATE : Mise jour











WBO : workbench Organiser
WF : Module Workflow
WM : Sous module du module MM permet de grer l'emplacement du
produit dans le magasin.
Workbench : Banc de travail ABAP/4 qui donne accs aux diffrentes options
(diteur, biblio de fonction, object browser, )





T
U
V
W
X
Mise jour













Y
Z
Mise jour

Les petits piges viter

REPORT:

3 Quand on utilise les CHECKBOX il ne faut pas oublier que si la case est coche la variable
prend la valeur 'X' (et non pas 'x').
3 Lors de l'appel de fonction CALL FUNCTION, il faut:
- tout crire en MAJUSCULE pour viter tout problme.
- ne pas oublier d'ter les T devant tout ce que l'on utilise.
3 L'utilisation de MOVE-CORRESPONDING sous-entend que tout les champs ont le mme nom.
3 Aprs l'utilisation de FIELDS GROUP ne pas oublier de mettre l'instruction SORT.
3 L'instruction AT NEW ne fonctionne pas.
3 La fonction MATERIAL_UNIT_CONVERSION doit tre appele deux fois la suite pour
qu'elle fonctionne.

SAPscript:

3 Dans les lments de texte veillez bien utiliser exactement la dsignation de l'lment de
texte (dcrit dans SAPscript) dans le programme ABAP/4 ) faire trs attention aux
espaces.
3 Faire la distinction entre les types et les noms des fentres ( MAIN et MAIN par exemple).
3 Ne pas oublier d'activer le formulaire en fin de cration ( vrifier dans la fentre header
data du formulaire que son statut est Actif sauvegard.
3 SAPscript ne fait aucune vrification, les erreurs commises ne sont pas dtectes et ne
seront pas affiches l'dition.
3 Lorsque l'on utilise l'adresse automatique faire attention l'orthographe de ADDRESS.
3 L'insertion d'un graphique n'est vraiment vraiment pas vident.
3 L'appel de routine avec PERFORM FORM dans SAPscript est irralisable.
3 Lorsque la langue d'origine est diffrente de la langue de travail, il y aura un problme car
vous ne pourrez pas modifier certaines choses. Donc faire une copie du formulaire
modifier simplement puis ouvrir la copie en modification et aller dans le menu
FORMULAIRE et REPRENDRE l mettre le nom de la copie et la langue d'origine.
3 Pour voir les objets de texte : OUTILS TRAITEMENTS DE TEXTE TEXTES
STANDARDS. Pas de possibilit de transport ( voir).
3 Pour les commentaires : * commentaires : s'imprime
/* commentaires : ne s'imprime pas
3 Ecrire d'abord les donnes et ensuite tracer le cadre autour.


POOL DE MODULE:

3 Ne pas oublier de tout gnrer ds qu'un changement, aussi petit soit-il, a t fait.
3 Si vous utilisez la variable FCODE, n'oublier pas de la dclarer dans le TOP et de l'inscrire
dans les listes de zones du SCREEN PAINTER.
3 Les modules dans le PBO et le PAI sont excuts squentiellement.
Mise jour

3 Si une erreur de type de fentre a t faite (bote modale au lieu de liste) il faut soit
changer les attributs et dans saut dialogue Jenesaisplus soit recommencer le dynpro
depuis le dbut.
3 L'instruction SET PF-STATUS SPACE ne marche pas.
3 Si l'on souhaite utiliser les boutons de commande de type EXIT, il ne faut pas oubliez de les
dclarer de type E et de faire un module AT_USER_COMMAND spcifique.

USERS EXIT:












BATCH INPUT:

3 Pour faire une interface sortante il faut utiliser RLGRAP-FILENAME au lieu de
FILENAME-FILEINTERN (utilis pour les interfaces entrantes).

Mise jour

Pool de Module:
Mise jour

Dynpro 1
Statut 1 : Type dynpro

PAI :
Module USER_COMMAND.
CASE SY-UCOMM.
WHEN 'LIST'.
LEAVE TO SCREEN 2
Dynpro 2
Statut 2 : Type liste

PBO :

Module SET_PFSTATUS.
SET PF-STATUS 'MENU2'.

Module INIT.
SUPRESS DIALOG.
LEAVE TO LIST PROCESSING
AND RETURN TO SCREEN 1.

PAI :

Module AFFICHER.
SELECT * FROM tab.
WRITE
ENDSELECT.






INSTRUCTIONS:
FIELD nomzone.
Module VERIF.
IF zone < SY-DATUM.
MESSAGE E
ENDIF.

LIST
E
Liste

___________________
___________________
___________________
___________________
___________________
___________________
___________________
Mise jour


CHAIN.
FIELD : zone1, zone2.
Module VERIF.
ENDCHAIN.

Mise jour

Batch Input:

OPEN DATASET <(nom_fichier) C:\FICHIER.TXT>
Ouvre le fichier.
TRANSFER <nom_zone_table_interne> TO <nom_fichier>
Copie le contenu de la table interne dans le fichier.
READ DATASET <nom_fichier> TO <nom_table_interne>
Lit le contenu du fichier et le copie dans la table interne, cela se fait ligne par ligne.
CLOSE DATASET <nom_fichier>
Ferme le fichier.

Deux autres fonctions que l'on peut utiliser :
WS_DOWNLOAD
WS_UPLOAD

EXPORTING :
FILENAME : 'C:\<NOM_FICHIER>.TXT'
TABLES :
DATA_TAB : TAB.

FICHIER TXT
__________________
__________________
__________________
__________________
__________________
__________________
__________________
__
Table

Interne

SAP

TAB
ARTICLE:
TAB-ZONE1(10)
type C

PRIX :
TAB-ZONE2(10)

DEVISE :
TAB-ZONE3(10)
WS_UPLOAD
BLOC NOTE
ANCIEN SYSTEME
Fiche
articl
e
Fiche
articl
e
FICHIER
SEQUENTIE
LS
SAP
Fiche
articl
e
Fiche
articl
e
BATCH
INPUT
Mise jour

Article est class dans la table: RMMGL-MATNR.
N de programme :SAPLMGMM.
N de dynpro :0060.

Langue: zone de dynpro : SKTEXT-SPRAS
Pour la deuxime zone de dynpro ont la mme chose, donc pour les
diffrencier il suffit de mettre:
SKTEXT-SPRAS(01) pour la 1
ere
.
Et SKTEXT-SPRAS(02) pour la 2
ime
.



FICHIERS
SEQUENTIE
LS
DYNPROTAB
(table
systme)
LANCER
BATCH
INPUT
Mise jour

SAPscript:


Impression du formulaire:

OPEN_FORM Prpare le programme l'impression d'un formulaire.
START_FORM Indique quel formulaire doit on utiliser.
FORM = 'NOM_FORMULAIRE'
LANGUAGE = SY-LANGU

WRITE_FORM Indique o il crit.
ELEMENT = 'TOTO'

TYPE = TOP
BODY Valable seulement pour la fentre MAIN
BOTTOM

WINDOW = 'MAIN'
END_FORM Ferme
CLOSE_FORM Ferme
FENETRE EN-TETE
FENETRE
ADRESSE
TOP





FENETRE MAIN

BODY







FENETRE PIED DE PAGE
Mise jour

Commandes utiles:

/: PROTECT
P1 &CITYFROM& &CITYTO&
P2 &DEPTIME& &ARRTIME&
B1 &DATE&
/: ENDPROTECT


SET DATE MASK : Permet d'avoir le format de date que l'on souhaite.

METZ, le 26 aot 1998 /: SET DATE MASK ' METZ, le DD MMMM YYYY'
/: &DATE&

SAPSCRIPT-FORMPAGES : Contient le nombre total de pages qu'il y a en sortie.

/: Page &PAGE&/& SAPSCRIPT-FORMPAGES+3&
Page 2 / 6
Module FI

Il y a cinq grands axes:

. Comptabilit gnrale,
. Comptabilit fournisseurs,
. Comptabilit clients,
. AM => les immobilisations,
. IM => les investissements (FI-CO).

Comptabilit gnrale :

. Plan de compte CAFR

Socit 001

Devise
Affichage postes individuels
Donnes de bases :

N de compte
Nature du compte
Groupe de compte

. Type de pices
1 type = 1 type d'opration

grer les comptes imputer

. Cl de comptabilisation
. sens des postes de la pice (dbit / crdit)
. type de compte possible (gnral, client, etc.)
31 crdit du compte tiers fournisseurs
40 dbit du compte gnral

. Comptabilit fournisseur
. Compte CPD fournisseurs occasionnels
. Comptes gnraux spciaux (CGS)
. Demande d'acompte
Permet de ne pas casser ces
3 lignes s'il n'y a pas
assez de place pour crire
ces trois lignes alors on
change de page
Mise jour

. Acompte
. Provisions
. Cautions

. comptabilit clients
. relances
paramtres principaux :
. intervalle entre deux relances
. niveau de relance
. nombre de jour de retard maximum
. nombre de jour de tolrance par poste
. montant minimum
. dcompte des frais de relance
. Contrle de crdit
. Lorsque le plafond est dpass on fait un blocage au niveau SD

. AM : Comptabilit des immobilisations:
. Btiments
. Vhicules
. Machines
. Financires
. Immobilisations en cours

. La fiche immobilisation
. Donnes gnrales
. Catgorie IMMO: programme de reprise

. Catgorie d'immobilisation
. Tableau 01
. Tableau 02 Fiscal
. Code d'amortissement
. Dure d'amortissement
. Tableau 060 T.P. (Taxe Professionnel)
. Structure d'cran

. Investissements
. Programme d'investissement
. Poste programme , sous-poste
. Mesure d'investissement

Mise jour

Type d'ordre :
INVB : investissements budgts
INVR : investissements raliss


Cr un ordre INVB
Cr un ordre INVR
. Rcepteur = IEC
. Montant budget
. Engag
. Ralis

Rattach au poste du programme d'investissement
Ordre :
Ouverture
Lancement
Clture technique
Clture

. Etats , systme d'informations.
. Standard, loi
. Crer tat = report WRITE

simultan
Mise jour

F key
German English Spanish Italian French
BARRE DE MENU
Bearbeiten (B)
Springen (S)
Zustze (Z)
Umfeld (U)

Einstellungen (E)
Hilfsmittel (M)
Pflegen (P)
Werkzeuge (W)
Sicht (I)
System (Y)
Hilfe (H)

Edit (E)
Goto (G)
Extras*
Environment (N)

Settings (S)
Utilities (U)
Maintain (M)
Tools (T)
View (V)
System (Y)
Help (H)

Tratar (T)
Pasar a (P)
Detalles (D)
Entorno (E)

Opciones (O)
Utilidades (U)
Actualizar (C)
Herramientas (H)
Vista (V)
Sistema (S)
Ayuda (A)

Elaborare (E)
Passaggio (P)
Opzioni (O)
Ambiente (M)

Impostazioni (I)
Utilities (U)
Aggiornare (A)
Tools (T)
View (V)
Sistema (S)
Help (H)

Traiter (T)
Saut (S)
Dtail (D)
Environnement (E)

Options (P)
Utilitaires (U)
Grer (G)
Outils (O)
Vue (V)
Systme (Y)
Aide (A)

MENU OBJET









F11
F11
F16


F14
F15


Holen (H) (Syn.
ffnen)
Anderes Objekt
(A)
Anlegen (L)
ndern ()
Anzeigen
Vorlage kopieren

Sichern (I)
Buchen (U)
Merken (M)
Generieren (G)
Drucken (D)
Lschen ()
Beenden (B)

<Objekt> ndern

Open (O)

Other <object> (R)

Create (E)
Change (C)
Display (D)
Copy from (F)

Save (S)
Post (T)
Hold (L)
Generate (G)
Print (P)
Delete (D)
Exit (X)

Change <object>
(H)

Traer (T) (sin.
Abrir)
Otro <objeto> (O)

Crear (C)
Modificar (M)
Visualizar (V)
Copiar de (P)

Grabar (G)
Contabilizar (Z)
Retener (R)
Generar (G)
Imprimir (I)
Borrar (B)
Finalizar (L)

Modificar
<objeto> (F)

Fetch (F)

Altro <oggetto>
(A)
Creare (C)
Modificare (M)
Visualizzare (V)
Copiare modello
(O)
Salvare (S)
Registrare (R)
Memorizzare (E)
Generare (G)
Stampare (P)
Cancellare (N)
Terminare (T)

Modificare
<oggetto> (F)

Accder (A)

Autre <objet> (U)

Crer (C)
Modifier (M)
Afficher (F)
Copie (O)

Sauvegarder (V)
Enregistrer (E)
Maintenir (I)
Gnrer (G)
Imprimer (P)
Supprimer (S)
Terminer (T)

Modifier <objet>
(D)

MENU TRAITEMENT




















Alle markieren
(M)
Block markieren
(B)
Alle Mark. lschen
(K)
Neue Eintrge (G)

Anhngen (H)
Auswhlen (W)
Ausschneiden (S)
Einsetzen (N)
Einfgen (E)
Kopieren (P)
Verschieben (V)
Vertauschen (C)
Umsortieren (O)
Suchen (U)
Zeile lschen (Z)

Select all (S)

Select block (B)

Deselect all (D)

New lines (N)

Append (N)
Choose (H)
Cut (T)
Paste (P)
Insert (I)
Copy (C)
Move (M)
Swap (W)
Re-sort (R)
Find (F)
Delete line (L)

Marcar todo (M)

Marcar bloque (Q)

Desmarcar todo
(R)
Nuevas entradas
(N)
Anexar (A)
Seleccionar (S)
Cortar (C)
Pegar (G)
Insertar (I)
Copiar (P)
Desplazar (Z)
Intercambiar (T)
Reclasificar (L)
Buscar (U)
Borrar lnea (B)

Marcare tutto(M)

Marcare blocco
(L)
Cancellare
marcature (U)
Nuovi inserimenti
(V)
Aggiungere (A)
Selezionare (Z)
Cut (C)
Includere (D)
Inserire (I)
Copiare (O)
Spostare (P)
Scambiare (B)
Riclassificare (F)
Cercare (E)
Cancellare riga (G)

Marquer tout (Q)

Marquer bloc (B)

Suppr.marquage
(U)
Nouv.entres (N)

Attacher (A)
Slectionner (L)
Couper (C)
Coller (O)
Insrer (S)
Copier (P)
Dplacer (D)
Permuter (E)
Retrier (R)
Rechercher (H)
Supprimer ligne
(M)
Mise jour




F12

Korrigieren (R)
Sortieren (T)
Widerrufen (D)
Abbrechen (A)

Correct (E)
Sort (S)
Undo (U)
Cancel (A)

Corregir (O)
Clasificar (F)
Deshacer (D)
Cancelar (E)

Corregere (R)
Classificare (S)
Ripristinare (T)
Interrompere (N)

Corriger (G)
Trier (T)
Dfaire (F)
Interrompre (I)

MENU PASSER
bersicht(sbild)
()
Kopf(bild) (K)
Nchste Position
(N)
Vorige Position
(V)

Andere Position
(A)
Zurck (Z)

Overview (O)

Header (H)
Next item (N)
siguiente
Previous item (P)


Other item (I)

Back (B)

Resumen (R)

Cabecera (C)
Posicin (S)

Posicin (A)
anterior

Otra posicin (O)

Back (B)

Riepilogo (R)

Testata (T)
Posizione
successiva (S)
Posizione
precedente (P)

Altra posizione
(A)
Indietro (I)

(Ecran de)
synthse (Y)
En-tte (E)
Poste suivant (S)

Poste prcdent
(P)

Autre poste (A)

Retour (R)

MENU FENETRE DE DIALOGUE
OK,
Enter

OK,
Enter
F12
Weiter (W)

Ausfhren (F)
OK (O)

Abbrechen (A)

Schlieen (S)
Continue (C)

Execute (X)
OK (O)

Cancel (A)

Close (L)
Continuar (C)

Ejecutar (E)
OK (O)

Cancelar (N)

Cerrar (R)
Continuare (C)

Eseguire (E)
OK (O)

Interrompere (I)

Chiudere (U)
Suite (S)

Excuter (E)
OK (O)

Interrompre (I)

Fermer (F)

You might also like