Vous êtes sur la page 1sur 94

Solutions de Scurit & Services

Atelier ABAP pour dbutants


03/06/2010
L. Arzur
2
Solutions de Scurit & Services

Plan
Prsentation gnrale ~ 5 min
Objets ABAP de base ~ 20 min
Instructions ABAP de base ~ 30 min
Fonctionnalits ABAP ~ 30 min
Navigation ABAP ~ 30 min
Le DEBUG ~ 30 min
Utile ~ 10 min
Pratique ~ 40 min
Questions ~ 5 min
TOTAL ~ 3 h 20
3
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

4
Solutions de Scurit & Services

Prsentation
La formation est destine aux dbutants sur le code ABAP et en
particulier aux fonctionnels dsirant comprendre et analyser ce merveilleux
code.
Certains passages pourront sembler vidents certains mais permettent
de fixer certaines rgles et connaissances ncessaires.

Buts de cette formation :
Comprendre les bases du code ABAP
Matriser les lments essentiels du DEBUG ABAP
Savoir utiliser de manire oprationnelle le DEBUG ABAP

La formation ne sattardera pas sur les aspects trop techniques, lapproche
tant de donner un vernis ABAP aux non-ABAPeurs.
Le contenu de cette formation nest bien sr pas exhaustif et invite les
personnes intresss - nombreuses je lespre! - approfondir le sujet via
des formations plus pousses.


5
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

6
Solutions de Scurit & Services

Objets ABAP de base - Dictionnaire
Transaction SE11
Le dictionnaire ABAP concerne les objets lmentaires utiliss par SAP
pour stocker et vhiculer les donnes
Table standard : Objet dans lequel sont stockes les donnes (MARA)
Vue : Combinaison de plusieurs tables (VIQMEL)
Structure : Mme type dobjet que les tables mais ne peut contenir de
donnes
Une table est compose de zones lies un lment de donne, lui li
un domaine.


7
Solutions de Scurit & Services

Objets ABAP de base - Dictionnaire
Une table SE11 possde toujours des zones cls.
Il ne peut pas y avoir plusieurs lignes avec la mme combinaison de cls.
Les zones cls se situent dans les premires zones de la table et ont la
case Cl coche.



Il est possible denrichir les tables standards avec des lments
spcifiques via lutilisation dun APPEND. Les zones de lAPPEND
apparaissent en bleu.


8
Solutions de Scurit & Services

Objets ABAP de base - Dictionnaire
Exemple table VBAP (Postes de commandes de vente)


9
Solutions de Scurit & Services

Objets ABAP de base - Programmes
Transactions SE38/SE80
Standard ou spcifique, le programme manipule les objets du dictionnaire
et les fonctionnalits SAP pour modifier ou rcuprer des donnes dans
SAP.
Un programme peut utiliser tous les objets du dictionnaire ainsi que les
modules fonctions, les Includes et les autres objets dvelopps dans
SAP.
Un Include est un programme qui est forcment appel par un autre
programme : le programme appelant peut alors utiliser les variables et
fonctionnalits dveloppes dans lInclude.
Un programme, mme sil ne sagit pas dun Include, peut tre galement
appel par dautres objets SAP.
Lorganisation du programme en tant que telle sera aborde dans les
chapitres suivants.


10
Solutions de Scurit & Services

Objets ABAP de base Fonctions
Transactions SE37/SE80
Fonction ou Module Fonction (MF) : Objets pouvant tre appels et
utiliss dans dautre programmes ABAP.
Il est utile de dvelopper une fonction appele par un programme chapeau
plutt quun seul programme dans le cas o la fonctionnalit peut servir
dautres programmes (exemple : MF de recherche de code article)
Le MF contient des paramtres dEntres / Sorties permettant de
transporter les valeurs de variables dun programme appelant vers le MF
et vice-versa.
La programmation est la mme que pour les programmes classiques.
Il est possible de tester le fonctionnement dun MF directement et
indpendamment dun programme via la transaction SE37 en renseignant
les paramtres appropris.

11
Solutions de Scurit & Services

Objets ABAP de base Formulaire
Transaction SE71
Un formulaire sert extraire, visualiser et imprimer des informations de
SAP sous une forme facilement comprhensible par un utilisateur final ou
un client.
Il est li un programme dimpression
Le programme rcupre les donnes dans SAP et les envoie au
formulaire appel
Le formulaire met en forme les donnes
Dans le standard SAP, le formulaire est en gnral associ une
correspondance (exemple : pour diter des factures)
Il est possible de rajouter une couche Streamserve aprs la gnration du
formulaire pour une mise en forme des donnes hors SAP.
2 principales technologies de dveloppement des formulaires :
SAPScript : ancienne techno, peu pratique mais la plus courante
SMARTFORMS : techno plus rcente, plus robuste
12
Solutions de Scurit & Services

Objets ABAP de base Exit
Transactions CMOD/SMOD
Un Exit (ou User-Exit) est un emplacement rserv du codage
spcifique dans un programme standard.
Il permet dviter en gnral de modifier le programme standard (trs
dconseill) ou de copier le standard.
Les Exits sont en nombre limit et mis disposition des endroits bien
prcis dans le standard par SAP : il est donc parfois compliqu de trouver
lExit se dclenchant au bon moment et mettant disposition les donnes
dont on a besoin.
En gnral un Exit se prsente sous la forme dun MF appelant un
programme Include.
Depuis SAP ECC6, il existe des Enhancement Points qui permettent de
coder lquivalent des Exits des endroits non prvus par SAP.
Un Exit doit tre li un projet SAP et activ via les transactions
CMOD/SMOD.

13
Solutions de Scurit & Services

Objets ABAP de base Autres objets
Il existe de nombreux autres objets dans SAP.
Ils ne seront pas abords dans la prsentation car destins des
dveloppeurs confirms, ci-dessous quelques exemples :
BADI (Business Add-In) : Technologie permettant dajouter du code dans
les programmes standards, mme but que les User-Exits transaction
SE19).
BAPI : Technologie permettant dintgrer des donnes dans SAP,
fonctionne de la mme faon quun MF (transaction BAPI).
Classe / Mthode : Concerne la programmation par objets, de plus en
plus utilise sur les nouvelles versions SAP (transaction SE24).

14
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

15
Solutions de Scurit & Services

Instructions ABAP de base
Le langage ABAP est un langage assez simple : quelques instructions
permettent de couvrir la majorit des besoins en programmation.
Les instructions les plus utilises peuvent tre dcomposes de la faon
suivante :
Dclarations
Slection des donnes
Traitement des donnes
criture des donnes
Aiguillage dans le programme

Le langage des instructions est langlais.

En gnral une instruction contient 2 balises :
Une balise de dbut
Une balise de fin
16
Solutions de Scurit & Services

Instructions ABAP de base
Les commentaires sont prcds du caractre * ou " et apparaissent en
bleu.

Une instruction ABAP finit toujours par un point.

Il est possible davoir une aide sur une instruction ABAP en positionnant la
souris sur linstruction et en tapant F1 partir de la transaction SE38.

En plus des instructions dcrites dans ce document, il est bien sr possible
dutiliser un grand nombre dinstructions classiques de codage (oprations
arithmtiques, comparaisons, ).
17
Solutions de Scurit & Services

Instructions ABAP de base - Dclarations
Il existe de nombreux objets utiliss dans les programmes ABAP.

Les principaux sont les suivants :
Table standard : dclarer une table standard dans le programme permet
dutiliser la structure de cette table interne pour stocker des informations
Table interne : objet contenant plusieurs lignes de structure identique
Structure : objet structur ne contenant quune ligne
Variable globale : zone une dimension du type lment de donne
pouvant tre utilise dans tout le programme
Variable locale : zone une dimension du type lment de donne
pouvant tre utilise dans une partie du programme uniquement
Paramtres / Select-Options : variables de lcran de slection

Attention : il existe des rgles de nommage pour toutes ces variables (cf.
rgles de nommage du client concern)
18
Solutions de Scurit & Services

Instructions ABAP de base - Dclarations
Exemple pour dclarations
19
Solutions de Scurit & Services

Instructions ABAP de base - Dclarations
Point sur table interne

La table interne est dcompose en 2 parties :
La Working Area (WA) : structure de travail permettant de stocker des
informations de manire temporaire
Les lignes : elles correspondent aux lignes rellement stockes dans la
table interne

Linstruction APPEND permet de transfrer les valeurs de la Working Area
vers les lignes et donc de stocker ces valeurs. Si lAPPEND nest pas fait,
les donnes de la WA ne seront pas mmorises.

Linstruction CLEAR applique une table interne permet de vider la WA.
Linstruction REFRESH permet de vider la totalit des lignes de la table
interne.
20
Solutions de Scurit & Services

Instructions ABAP de base - Dclarations
cran de slection





Rsultat aprs excution
21
Solutions de Scurit & Services

Instructions ABAP de base SELECT
SELECT : permet de slectionner des donnes SAP contenues dans une
table standard / spcifique ou une vue.

SELECT P1 INTO P2 FROM P3 WHERE P4
P1 : zones rcuprer dans la table standard / spcifique ou vue
* signifie quil faut rcuprer toutes les zones
P2 : variable o stocker les donnes rcupres
INTO TABLE XXXX signifie quil faut les stocker dans la table interne XXXX
Il est possible de les stocker dans une variable simple galement
P3 : nom de la table standard / spcifique ou vue
P4 : condition de slection
Restriction de la slection par rapport aux critres de slection (P, S/O)

Il existe dautres options pour cette instruction mais celles mentionnes ci-
dessus sont les principales.



22
Solutions de Scurit & Services

Instructions ABAP de base READ
READ : permet de lire une ligne de table interne suivant certaines
conditions.

La ligne retourne se trouve dans la working area de la table interne.

READ TABLE P1 WITH KEY P2 = P3
P1 : table interne lire
P2 : zone de la table interne tester
P3 : valeur de la zone de table interne tester
READ TABLE P1 INDEX P2
P1 : table interne lire
P2 : numro de ligne de la table interne lire

Il existe dautres options pour cette instruction mais celles mentionnes ci-
dessus sont les principales.



23
Solutions de Scurit & Services

Instructions ABAP de base LOOP
LOOP : permet de boucler sur les lignes dune table interne.

La ligne lue se trouve dans la working area de la table interne.

LOOP AT P1.

ENDLOOP.
P1 : table interne sur laquelle boucler
Entre le LOOP et le ENDLOOP, les instructions portent sur la ligne en
cours de lecture.

Il existe dautres options pour cette instruction mais celles mentionnes ci-
dessus sont les principales.



24
Solutions de Scurit & Services

Instructions ABAP de base MOVE / WRITE
MOVE / WRITE : permet de transfrer une valeur ou la valeur dune
variable vers une autre variable.

MOVE transfre la valeur en brut alors que WRITE transfre la valeur avec
son format.

WRITE / MOVE P1 TO P2.
P1 : paramtre source transfrer
P2 : paramtre cible vers lequel transfrer la valeur

Il existe dautres options pour cette instruction mais celles mentionnes ci-
dessus sont les principales.



25
Solutions de Scurit & Services

Instructions ABAP de base CLEAR / REFRESH
CLEAR : permet de vider la valeur dune zone variable. Dans le cas dune
table interne, cela permet de vider la working area.

REFRESH : permet de vider la totalit dune table interne.

CLEAR P1.
P1 : variable vider

REFRESH P1.
P1 : table interne vider



26
Solutions de Scurit & Services

Instructions ABAP de base APPEND
APPEND : permet dans le cas dune table interne de transfrer la working
area vers les entres de la table interne.

Si un APPEND nest pas fait aprs avoir aliment la working area, les
donnes ne seront pas stockes dans la table internes car crases par la
prochaine alimentation de la working area.

APPEND P1.
P1 : table interne alimenter

Il existe dautres options pour cette instruction mais celles mentionnes ci-
dessus sont les principales.



27
Solutions de Scurit & Services

Instructions ABAP de base MAJ TABLE
Les commandes suivantes concernent les mises jour de table de
donnes standards ou spcifiques accessibles via SE11.

UPDATE : modifie une entre de table si la cl demande existe
MODIFY : modifie ou insre une entre de table
INSERT : insre une entre dans la table. Il ne doit pas exister dentre
avec la mme cl dans la table.
DELETE : supprime une entre dans la table

MODIFY P1.
P1 : table SE11 modifier

Il existe dautres options pour ces instructions mais celles mentionnes ci-
dessus sont les principales.



28
Solutions de Scurit & Services

Instructions ABAP de base CALL FUNCTION
CALL FUNCTION : permet dappeler un module fonction dans un
programme ou dans un autre module fonction.

Un module fonction possde plusieurs paramtres dchange avec le
programme appelant.

CALL FUNCTION P1
EXPORTING P2 = P3
IMPORTING P4 = P5
TABLES P6 = P7.
P1 : nom de la module fonction tel quil est dfini dans le transaction
SE37
P2/P3 : noms de zones et valeurs transfrer en entre du MF
P4/P5 : noms de zones et valeurs rcuprer en sortie du MF
P6/P7 : noms de tables et tables changer avec le MF


29
Solutions de Scurit & Services

Instructions ABAP de base CALL FUNCTION
ATTENTION :
Les paramtres en EXPORTING correspondent aux paramtres dentre
du MF et qui sont exports depuis le programme appelant vers le MF
Les paramtres en IMPORTING correspondent aux paramtres de sortie
du MF et qui sont imports vers le programme appelant vers le MF
Si le programme appelant nutilise pas tous les paramtres obligatoires du
MF, un DUMP se produit.
Il est possible dutiliser la fonction Modles dans lditeur ABAP pour
rcuprer les paramtres du MF :




Aprs validation, lappel du MF est intgr dans le code du programme
appelant avec les paramtres facultatif en commentaires.
30
Solutions de Scurit & Services

Instructions ABAP de base PERFORM
PERFORM : permet dappeler une routine dans un programme.
Cette routine est forcment dfinie dans le programme appelant ou dans
un Include appartenant au programme appelant.
Elle est dfinie par linstruction suivante :
FORM P1.

ENDFORM.
et appele par linstruction
PERFORM P1.
P1 : nom de la routine.

Il est conseill de donner un nom explicite la routine.
Il est galement conseill dutiliser de nombreuses routines dans un
programme pour modulariser le programme par fonctionnalits et
amliorer la lisibilit du code.

31
Solutions de Scurit & Services

Instructions ABAP de base AUTHORITY-CHECK
AUTHORITY-CHECK : permet deffectuer un contrle dautorisation dans un
programme.

AUTHORITY-CHECK OBJECT P1
ID P2 FIELD P3.
P1 : nom de lobjet dautorisation
P2 : nom du paramtre de lauthority-check
P3 : valeur tester pour le paramtre

Linstruction renvoie un code retour via la zone SY-SUBRC en fonction de
lobjet test, des paramtres renseigns et des autorisations dfinies pour
le user de connexion.
Si le SY-SUBRC = 0, le user est autoris, sinon il nest pas autoris.
Il est ensuite possible de continuer ou arrter le traitement.
32
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

33
Solutions de Scurit & Services

Fonctionnalits ABAP
Les programmes ABAP peuvent tre utiliss pour remplir plusieurs types
de fonctionnalits, dont voici les principales :

Reporting

Intgration

Extraction

Modification de fonctionnement standard

34
Solutions de Scurit & Services

Fonctionnalits ABAP - Reporting
Un report est un affichage des donnes issues de SAP.
Il sappuie en gnral sur les tables standards et spcifiques.
Il peut avoir 2 formes principales :
Classique (instruction WRITE) et surtout destine des compte-rendus
dexcution simples



ALV (Abap List Viewer / utilisation de MFs standards) pour affichage du
type EXCEL (avec tris, filtres,), conseiller pour du reporting complexe
destine des utilisateurs finaux.

35
Solutions de Scurit & Services

Fonctionnalits ABAP - Intgration
Un programme dintgration sert mettre jour des donnes dans SAP.

Les donnes peuvent tre issues de SAP ou dun autre systme (SAP ou
non) via un change de fichiers.

Le programme peut tre utilis dans le cas dune interface entrante ou
dune reprise de donnes.

Il est important de prvoir pour ce type de programme la possibilit dtre
excut en avant-plan ou en arrire-plan via une variante de slection.

Il faut galement prvoir un compte-rendu dexcution avec entre autres
les objets standards SAP intgrs ou modifis.


36
Solutions de Scurit & Services

Fonctionnalits ABAP - Intgration
Il existe plusieurs techniques dintgration de donnes, dont les principales
sont :
Le CATT : il ne sagit pas dun programme ABAP mais dun scnario de
test reproductible. Une fois dfini pour une intgration via la transaction
SCAT, il est possible de lutiliser pour un fichier comportant plusieurs
intgrations.

Le DIRECT INPUT : cela consiste mettre jour directement les tables
standards SAP (via UPDATE). Cest trs dconseill voire interdit car cela
contourne les contrles standards de zones SAP et peut corrompre les
bases de donnes

Le BATCH INPUT : ancienne mthode dintgration toujours utilise. Il
sagit dun programme ABAP mais qui simule un enchanement dcrans
tel que le ferait lutilisateur (comme dans un CATT). Les dossiers de
BATCH INPUT crs sont soit excuts en direct lors de lexcution du
programme, soit de manire dsynchronise via la transaction SM35.
Cette technique nest pas prenne sur les transactions de type ENJOY et
peut poser des problmes en arrire-plan.


37
Solutions de Scurit & Services

Fonctionnalits ABAP - Intgration
La BAPI : il sagit dun objet SAP semblable aux MF. En paramtres on
renseigne les diffrentes structures ncessaires la cration ou
modification de lobjet SAP intgrer et la BAPI soccupe de crer ou
modifier lobjet. Technique robuste et conseille.

LIDOC : il sagit dun change de donnes informatises (EDI). LIDoc
peut tre utilis au sein dun mme systme ou avec un autre systme.
Un IDoc correspond un objet crer ou modifier. La transaction
principale de gestion des IDocs est la WEDI. Technique de plus en plus
utilise et impose par certains changes entre entreprises pour ses
avantages de traabilit des informations. Cette technique est robuste et
offre la possibilit de suivre toutes les intgrations de manire assez
directe mme si cela peut savrer assez technique.

38
Solutions de Scurit & Services

Fonctionnalits ABAP - Extraction
Une extraction ressemble un reporting mais permet denvoyer les
donnes rcupres lextrieur de SAP, via la cration dun fichier de
sortie par exemple.

Le format du fichier de sortie peut tre dict par le systme qui utilisera par
la suite le fichier mais est en gnral le format EXCEL ou .CSV.

Le fichier de sortie peut tre dpos par le programme sur un serveur local
(ex : disque C du PC physique) ou sur le serveur SAP (rpertoires via
transaction AL11).

Remarque importante :
Si le programme est excut en arrire-plan, il est impossible de dposer
le fichier sur un serveur local.



39
Solutions de Scurit & Services

Fonctionnalits ABAP USER EXIT
Les USER EXIT permettent dintgrer du code spcifique dans le code
standard SAP.

Ils doivent tre activs via les transactions CMOD/SMOD.
Dautres techniques permettent deffectuer ce type dadaptations du
standard (BADI, ENHANCEMENT POINTS sur ECC6).

Les EXITs permettent dviter les modifications de programmes standards
(trs dconseilles!).

Il ncessitent une bonne connaissance de lABAP et des flux sur
lesquels intervenir car il peuvent perturber fortement le fonctionnement
standard prvu par SAP.
Une attention particulire devra tre porte au passage en Production de
USER-EXITS.




40
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

41
Solutions de Scurit & Services

Navigation ABAP
Il existe plusieurs transactions permettant de visualiser le code ABAP
(SE38/SE37) mais la principale et la plus complte est la SE80.

Elle permet de visualiser facilement tous les objets utiliss par le
programme.

Il existe dans lditeur ABAP de nombreuses options trs utiles pour
naviguer dans le programme ainsi que certaines fonctions essentielles au
dveloppement.

Remarque :
pour ne pas avoir lair ridicule devant un dveloppeur, nutilisez pas la
transaction SA38 : il sagit dune SE38 trs allge!!

42
Solutions de Scurit & Services

Navigation ABAP
Transaction SE80

43
Solutions de Scurit & Services

Navigation ABAP
: Contrle du programme. Permet de vrifier si le programme
respecte les rgles de syntaxe du langage ABAP.
En cas derreur de syntaxe un message apparat en bas de lcran. Un
double-clic sur le message renvoie sur la ligne de code en erreur.





: Activation du programme. Cette action contrle dans un premier
temps le programme puis lactive si aucune erreur nest dtecte. Un
programme non actif ne peut tre utilis.
Le statut dactivation apparat ct du nom du programme.


44
Solutions de Scurit & Services

Navigation ABAP
: Break-point. Permet de mettre un point darrt dans le programme,
i.e lors dune excution du programme le traitement sarrtera sur ce point
darrt en mode debugger (voir chapitre DEBUG).
Le point darrt est propre lutilisateur
Pour mettre le point darrt, il suffit de positionner le curseur sur la ligne
de code concerne puis de cliquer sur le bouton. La ligne apparat alors
surligne lcran.





: Pretty Printer. Permet de changer la mise en forme du code
ABAP du programme pour le rendre plus facile comprendre en fonction
des rgles syntaxiques de lABAP. Cette fonction ne change en rien le
fonctionnement du programme mais en change laspect visuel.

45
Solutions de Scurit & Services

Navigation ABAP
: Excution. Permet de lancer le programme en avant-plan.
Fonction galement accessible par la touche F8.

En renseignant une partie du nom du programme par le caractre * et en
cliquant sur la flche, SAP nous renvoie tous les programmes ayant la
partie demande dans leur nom.
46
Solutions de Scurit & Services

Navigation ABAP
: Recherche. Attention il faut utiliser licne situe tout en haut de
lcran et pas juste au dessus du nom du programme.
Licne ouvre un POP-UP qui permet de rechercher une chane de
caractres dans le programme.
Possibilit de remplacer cette chane par une autre
Possibilit de rechercher la chane dans le programme en cours ou dans
le programme principal (conseill)
Le rsultat est un affichage de toutes les occurrences de la chane
recherche, possibilit de cliquer sur la chane bleute pour accder au
code.
47
Solutions de Scurit & Services

Navigation ABAP
En double-cliquant sur les routines, modules fonctions, Include appels
dans le programme principal, SAP renvoie le curseur sur lobjet appel.

: Un clic sur les flches bleus permet de revenir sur le
positionnement prcdent du curseur.

: Un clic sur ces flches permet de revenir en arrire sur la dernire
action effectue ou de la r-itrer.

48
Solutions de Scurit & Services

Navigation ABAP
Ci-dessous quelques objets lis au programme

Macros : Permettent deffectuer quelques
oprations de code simples et rptitives.
Attention, ne peut tre debugg.
Dynpro : Ecran ABAP
Modules PBO / PAI : Dfinissent les actions
prcdant lapparition de lcran (Process Before
Output) ou conscutives son apparition (Process
After Input)
Statut GUI : Dfinition des actions lies lcran
(boutons SAVE/BACK/)
Titres GUI : Titre de lcran
49
Solutions de Scurit & Services

Navigation ABAP
Penser modulariser le programme lors de la phase de dveloppement.
Cela consiste organiser le programme en Includes et routines pour le
rendre plus lisible et simple comprendre.
Exemple :
Include pour les dclarations
Include pour les routines
1 routine par fonctionnalit
Lorsque lon arrive sur un programme via lditeur, il doit tre possible de
comprendre immdiatement ce quil fait et si possible de visualiser
lalgorithme sur une page dditeur.
Il faut galement commenter le programme : commentaires courts et
explicites.

Modularisation + commentaires = facilit de comprhension pour la
TMA = Indicateurs au vert!!
50
Solutions de Scurit & Services

Navigation ABAP
Exemple de programme modularis et comment :
51
Solutions de Scurit & Services

Navigation ABAP
Il faut dcomposer le programme en blocs laide des instruction :

INITIALIZATION : bloc dinitialisation des variables du programme

START-OF-SELECTION : Dbut des slection

END-OF-SELECTION : Fin des slections


52
Solutions de Scurit & Services

Navigation ABAP
Pour identifier une table ou une zone utiliser dans un programme, il suffit
de positionner le curseur sur la zone en question dans le document SAP
de cliquer sur F1 puis F9
ou F1 puis Info technique
Lcran suivant apparat et donne les informations concernant le
programme et la zone en question

53
Solutions de Scurit & Services

Navigation ABAP - Versions
Une version de programme correspond la gnration dun ordre de
transport (OT) contenant des crations ou modifications lies lobjet.
Aprs chaque libration dun OT sur le systme de recette, SAP demande
de crer un nouvel OT.
Les versions sont visualisables via les menus de la transaction.

54
Solutions de Scurit & Services

Navigation ABAP - Versions
La version dans la BD de dveloppement correspond la version en cours
de modification et non libre
Les autres versions correspondent lhistorisation des anciennes versions
libres.
Par double-clic sur un OT puis sur licne , on accde au journal des
transports avec tous les transports sur les machines SAP ainsi que les
statuts de ces transports.

55
Solutions de Scurit & Services

Navigation ABAP - Versions
: Comparaison de versions. En cochant 2 versions et cliquant sur ce
bouton, SAP compare les versions et affiche les diffrences.

56
Solutions de Scurit & Services

Navigation ABAP - Versions
: Permet de comparer la version en cours avec un
autre environnement SAP (ex : Recette, Production). Un POP-UP permet
de choisir le systme auquel comparer puis lance la comparaison.
Utile pour identifier un cart entre environnements et dtecter un oubli
dOT lors dun transport.




: Rcupration de version. Permet de revenir sur une version
antrieure de lobjet. Cette fonction remet lobjet dans ltat dans lequel il
tait lors de lOT rcupr et crase toutes les modifications des OTs
suivants.
57
Solutions de Scurit & Services

Navigation ABAP - SAPScript
Un formulaire SAPScript est accessible et modifiable via SE71.

Un formulaire est compos de pages, permettant de dfinir la succession
des pages lors de limpression.
Chaque page contient des fentres (exemple : une fentre pour le titre,
une autre pour ladresse du destinataire,).
Les fentres peuvent contenir des lments.
La fentre appele MAIN contient des donnes sous forme de liste de
longueur variable. Par exemple la liste des postes pour une facture. Si le
nombre de postes dpasse la taille de la page, SAP dclenche une
nouvelle page.
Le code lintrieur du formulaire est sensiblement diffrent de lABAP sil
sagit dun formulaire SAPScript : il est situ lintrieur des fentres.
Pour information la squence /* indique un commentaire.

58
Solutions de Scurit & Services

Navigation ABAP - SAPScript
Exemple de formulaire SAPScript:
59
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

60
Solutions de Scurit & Services

Le DEBUG
Le debugger SAP est loutil indispensable du dveloppeur ABAP.
Il peut galement permettre un fonctionnel de rsoudre un certain
nombre danomalies et de complter lanalyse fonctionnelle.

Ce chapitre sera uniquement ax sur le debugger des versions antrieures
ECC6.
Le debugger ECC6 est relativement diffrent en termes dergonomie mais
les fonctionnalits principales sont les mmes.
Pour information, il est possible dans ECC6 de revenir sur le debugger
classique.

La seule faon de bien matriser le debuggage SAP est de pratiquer.

61
Solutions de Scurit & Services

Le DEBUG Accs au DEBUG
Laccs au DEBUG peut se faire de diffrentes manires.
La plus simple est dcrire le code /h la place de code transaction avant
deffectuer laction debugger.


Il est possible de positionner un point darrt dans le programme lui-
mme via SE38/SE37/SE80 (cf. Navigation ABAP). Le traitement
sarrtera alors sur le point darrt et laissera lutilisateur la possibilit de
debugger le programme partir de ce point darrt.
Le bouton point darrt est le suivant :

Glisser-dposer le fichier DEBUG suivant sur la fentre debugger. Trs
utile dans le cas dun debugging de POP-UP pour lequel il nest pas
possible dutiliser la commande /h.

DEBUG
62
Solutions de Scurit & Services

Le DEBUG Accs au DEBUG
Certains programmes standards sont des programmes dits Systme.
Pour identifier si un programme est Systme, il suffit de vrifier les
proprits via SE38




Pour ce type de programmes, il est ncessaire dactiver le Debugging
systme pour rendre possible le debug et les points darrts.



63
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Ecran DEBUG







Navigation

Code ABAP





Valeurs zones



Structure SYST
64
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Navigation

(F5) : Mode pas pas. Permet dexcuter le code ligne par ligne.

(F6) : Permet dexcuter le code ligne par ligne sans rentrer dans les
portions de code appeles via MF / routine / autres programmes.

(F7) : Retour. Permet de revenir dans le programme appelant lorsque
lon se trouve dans le programme appel (routine / MF/).

(F8) : Continuer. Permet dexcuter le code dune seule traite
jusquau prochain point darrt ou la fin du programme le cas chant.



65
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Navigation

: Un point de surveillance est un point darrt
particulier qui permet de narrter lexcution du programme que
lorsquune variable a pris une valeur particulire.
Cette fonction est trs utile pour dtecter une occurrence particulire dans
une boucle sans pour autant excuter toutes les occurrences en pas
pas.

Arrt lorsque la variable WT_TAB1-VBELN
a pour valeur 0195002610




66
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Navigation

La barre de navigation permet de changer les zones afficher dans
lcran du bas.


Il est en particulier possible de visualiser et ventuellement supprimer les
points darrts / surveillance.
Laffichage le plus utile reste laffichage par dfaut : Zones.




67
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Code ABAP
Cet cran affiche le code ABAP en cours de DEBUG.

Les points darrts sont visibles par une icne






Il est possible de supprimer ou rajouter un point darrt en double-cliquant
sur la ligne de code.

Les flches permettent de naviguer dans le code ABAP
pour ventuellement positionner de nouveaux points darrt. Il est
galement possible dutiliser les touches PGUP et PGDWN du clavier.




68
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Valeurs zones
Cet cran permet dafficher les valeurs des variables du code ABAP.
Pour le faire il suffit de renseigner le nom de la zone dans la premire
colonne ou de double-cliquer sur la zone concerne dans le code ABAP.



Dans cette version du debugger, il est possible de visualiser jusqu 8
zones.
: disponible pour les tables internes, permet de visualiser toutes les
entres de la table interne.




: Permet de modifier la valeur dune variable pendant le DEBUG (cf.
rubriques suivantes)
69
Solutions de Scurit & Services

Le DEBUG Ecran DEBUG
Structure SYST
La structure SYST (ou SY) est une structure standard SAP.
Structure alimente et mise jour tout au long du traitement.
Elle contient des zones systmes permettant davoir des informations sur
le traitement et son droulement.
Exemple de zones :
SY-SUBRC : code retour dinstruction. Si elle vaut 0, le traitement est OK et a
fonctionn tel que demand. Ce code est souvent test dans les programme
pour identifier par exemple si une slection a renvoy un rsultat.
SY-TABIX : renvoie le numro de ligne en cours dans une boucle de
traitement.
SY-UNAME : renvoie le user qui excute le traitement
SY-DATUM : renvoie la date systme
SY-REPID : renvoie le nom du programme en cours dexcution
Il est trs important de tester cette structure dans le programme (en
particulier le SY-SUBRC) et de suivre son volution lors dun DEBUG car
elle contient de nombreuses informations utiles.
70
Solutions de Scurit & Services

Le DEBUG Modif DEBUG
Il est possible de modifier la valeur de variables pendant un DEBUG.
Cette option est configurable (ADMIN SAP) et est en gnral dsactive
dans les environnements productifs.
Cette fonctionnalit peut se rvler trs utile car elle permet de changer
des donnes issues de SAP dans le DEBUG pour aiguiller le traitement da
la manire souhaite.
Il suffit de changer la valeur de la zone dans le DEBUG puis cliquer sur le
crayon de modification :
Par exemple : contournement autorisations
Dans un programme, un authority-check est mis en place pour empcher
la suite dun traitement si lon ny est pas autoris.
Le traitement sarrte si le code retour SY-SUBRC renvoy par lauthority-
check est diffrent de 0.
Il suffit de positionner un point darrt sur le test du SY-SUBRC et de
forcer la valeur 0.
Le traitement continuera alors comme si le contrle avait t OK.
71
Solutions de Scurit & Services

Le DEBUG Export tables internes
Lorsquune table interne comporte de nombreuses lignes, il est difficile de
lanalyser dans lcran DEBUG.

Il est alors utile de lexporter sous EXCEL pour identifier les lignes et
valeurs qui nous intressent.

Cette fonction permet de visualiser et analyser facilement les donnes
dune table interne en dehors du debugger.

Cela permet ventuellement de stocker les valeurs pour les comparer
dautres par la suite.
72
Solutions de Scurit & Services

Le DEBUG Export tables internes
Il faut dans ce cas
double-cliquer sur la table interne en question.
Dans lcran DEBUG, diter la structure




Dans le nouvel cran, diter toute la liste

Enfin, sauvegarder la liste dans un fichier local, exploitable par un utilitaire
type EXCEL.

73
Solutions de Scurit & Services

Le DEBUG DEBUG Formulaires
Un formulaire SAPScript ne se debug pas de la mme manire.
Il faut activer le DEBUG formulaire via SE71.
Ensuite, lorsque le formulaire est appel, le DEBUG formulaire apparat.








Ce debugger est relativement complexe et peu intuitif, donc rserv des
initis

74
Solutions de Scurit & Services

Le DEBUG Conseils
Il est ncessaire, avant de se lancer dans un DEBUG, de visualiser le
code du programme afin den identifier les grandes fonctionnalits et
viter dtre perdu lors du DEBUG.
Il est conseill de positionner les points darrts sur des lignes de code
stratgiques avant de se lancer dans un DEBUG : cela permettra de
gagner du temps.
Un debug peut tre relativement long et ncessiter de nombreux passages
afin de dterminer le bout de code analyser.
Lorsque lon rajoute un point darrt dans le code via lcran de DEBUG, il
faut penser cliquer sur la disquette de sauvegarde pour que le point
darrt soit conserv pour la prochaine excution.
Dans cette version du DEBUG, un point darrt est li au user qui la
activ. Lorsque lon se dconnecte, les points darrt sont perdus.
Pour quun point darrt soit pris en compte, il faut quitter et relancer le
programme ou la transaction debugger.


75
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

76
Solutions de Scurit & Services

Utile Lexique
ABAP : Allgemeiner BerichtsAufbereitungsProzessor / Advanced Business
Application Programming
ALV : Abap List Viewer, techno ABAP pour crer un report de type EXCEL
BADI : Business Add-In, adaptation du standard
BAPI : Business Application Programming Interface, fonction dintgration
Batch : arrire-plan, par extension job en arrire-plan
Break Point : Point darrt
BTCI : Batch-Input
CATT : Computer Aided Test Tool
CSV : Comma Separated Values, format de fichier avec sparateur virgule
(point virgule pour les versions franaises)
EDI : Echange de Donnes Informatises
IDoc : Intermediate DOCument
MF : Module Fonction ou Fonction



77
Solutions de Scurit & Services

Utile Lexique
OT : Ordre de Transport
PAI : Process After Input, pour dynpro ABAP
PBO : Process Before Output, pour dynpro ABAP
SAP : Systeme, Anwendungen und Produkte in der Datenverarbeitung /
Systems, Applications, and Products for data processing





78
Solutions de Scurit & Services

Utile Programmes utiles
RGUGBR00 : Activation des rgles de validations et substitutions FI
RPR_ABAP_SOURCE_SCAN : Recherche dans programmes
RSTRANSP : Transports variantes de programmes
RSTXSCRP : Import / Export de formulaires
RSTXTRAN : Transport textes standards
RSTXPDFT4 : Conversion spool en PDF
RV80HGEN : Activation des routines et dispositions de type VOFM
Z_DOWN_PROG : Export programmes en HTML sur TAV WW (VD3)

79
Solutions de Scurit & Services

Utile Transactions utiles
ABAPDOCU : Documentation ABAP
ABAPHELP : Aide ABAP
AL11 : Gestion des rpertoires SAP
CG3Z / CG3Y : Import / Export de fichiers entre PC local et serveur
SBWP : Sap Business WorkPlace, contient lhistorique des objets
SCMP : Comparaison de tables (utile pour les comparaisons de tables de
CUSTO ente environnements SAP)
SE03 : Recherche dOTs par objets, description,
SE11 : Dictionnaire ABAP
SE15 : Recherche dobjets
SE16N : Utilitaire de modification de tables (dangereux)
SE30 : Analyse du temps dexcution
SE37 : Editeur de modules fonctions
80
Solutions de Scurit & Services

Utile Transactions utiles
SE38 : Editeur ABAP
SE71 : Editeur SAPScript
SE80 : Editeur ABAP complet
SE91 : Recherche de messages
SE93 : Recherche de transactions
SEARCH_SAP_MENU : Recherche de menu SAP
SM13 : Entres de blocage
SM37 : Suivi des jobs dexploitation
SM51 : Journal systme
ST05 : Trace systme
ST22 : DUMPs
SU01 / SU01D : Gestion des users
SU53 : Dernier contrle dautorisation effectu sur le user de connexion
WEDI : Transaction chapeau de la gestion des IDocs


81
Solutions de Scurit & Services

Utile SE30
SE30 sert analyser les performances dun programme ou transaction.
Cela peut tre trs utile pour effectuer une premire analyse
doptimisation.
Rentrer le nom du programme tester puis excuter






Excuter le programme comme en rel.
Revenir en arrire avec la flche verte jusqu lcran initial de la SE30.

82
Solutions de Scurit & Services

Utile SE30
Cliquer sur Analyser
Lanalyse montre la rpartition du temps de traitement.
ABAP concerne le code en lui-mme
Base de donne concerne les slections de donnes
Systme R/3 concerne le temps de traitement SAP




Un clic sur le bouton liste dans lordre les oprations les plus
coteuses en temps de traitement.



Il est ensuite plus facile de faire une optimisation efficace.

83
Solutions de Scurit & Services

Utile SE93
Utile pour connatre le programme standard ou spcifique utilis par une
transaction.

Cette transaction peut savrer utile pour contourner les autorisations dans
certains cas.

En effet de nombreux contrles dautorisations sont rattachs la
transaction et pas au programme appel, il suffit donc parfois dexcuter
directement le programme et non la transaction.

Exemple SM51

84
Solutions de Scurit & Services

Utile SE16N
Transaction daffichage et modification de tables SE11, y compris les
tables standards.
Renseigner le nom de la table et le code &sap_edit ( + ventuellement
des critres de slection), valider pour faire apparatre un message en bas
de lcran puis excuter.




Vous pouvez alors modifier les donnes de la table.

85
Solutions de Scurit & Services

Utile SE16N
Toutes les modifications sont listes dans la table SE16N_CD_KEY.

En cas de problmes dautorisations sur la SE16N, il est possible dutiliser
le MF SE16N_INTERFACE.

Attention : manipuler avec une trs grande prcaution.

86
Solutions de Scurit & Services

Utile IDocs
La transaction gnrale des IDocs est la WEDI, qui permet daccder
toutes les transactions lies au IDocs.
Les transactions les plus utiles sont les WE02 (slection et visualisation
des IDocs) et WE19 (permet de rejouer un IDoc).
Dans le cas o un document SAP est gnr ou a gnr un IDocs, il est
possible de visualiser lIDoc en question directement partir de lobjet
SAP.

87
Solutions de Scurit & Services

Utile Liens utiles
Merry\Affaires\AMS_SAP_RUN\Z 99 - Capitalisation
https://www.sdn.sap.com
http://sap.ittoolbox.com



88
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions

89
Solutions de Scurit & Services

Pratique Mon premier programme ABAP
Cahier des charges
Extraction des commandes de ventes ABAP (VA03)
Possibilit de slectionner uniquement certaines commandes
Exemple : commandes de 195002610 196003610
Restriction de la slection sur les commandes cres depuis le dbut de
lanne 2010
Reporting en sortie avec 4 colonnes :
Numro de commande SAP
Numro de commande client
Numro de poste SAP
FLAG
Si la quantit dordre au niveau du poste de commande est suprieur 2,
FLAG = SUP, sinon FLAG = NO


90
Solutions de Scurit & Services

Pratique DEBUG1
JIRA : TAV-10001
Programme : ZFORM_ABAP1
Variante : ZVAR01
Problme : Pour la commande 195004233, la quantit totale dans le
report nest pas bonne : le report affiche une quantit de 11 alors quelle
devrait tre de 21.
ZPL
195002610 196003610


91
Solutions de Scurit & Services

Pratique DEBUG2
JIRA : TAV-10002
Programme : ZFORM_ABAP2
Variante : ZVAR02
Problme : Le programme ne fonctionne pas.
Job arrire-plan excut par user BTCADMIN
Tout est OK sauf commande 195003564 manquante en sortie


92
Solutions de Scurit & Services

Pratique DEBUG3
JIRA : TAV-10003
Programme : ZFORM_ABAP3
Variante : ZVAR03
Problme : Le programme dure trop longtemps, il faudrait loptimiser.


93
Solutions de Scurit & Services

Pratique Programmes
Vous trouverez ci-joint les programmes utiliss pour la pratique du
DEBUG :





Le fichier ci-dessous est une solution propose pour le programme
du chapitre Mon premier programme ABAP :


Fichier WinZip
Fichier WinZip
94
Solutions de Scurit & Services

Plan
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions