Upload
ivy-jackson
View
199
Download
3
Embed Size (px)
Citation preview
5/20/2018 Atelier ABAP
1/94Solutions de Scurit & Services
Atelier ABAP pour dbutants
03/06/2010
L. Arzur
5/20/2018 Atelier ABAP
2/942 Solutions de Scurit & Services
Plan
Prsentation gnrale ~ 5 min
Objets ABAP de base ~ 20 minInstructions ABAP de base ~ 30 min
Fonctionnalits ABAP ~ 30 min
Navigation ABAP ~ 30 minLe DEBUG ~ 30 min
Utile ~ 10 min
Pratique ~ 40 minQuestions ~ 5 min
TOTAL ~ 3 h 20
5/20/2018 Atelier ABAP
3/943 Solutions de Scurit & Services
Plan
Prsentation
Objets ABAP de baseInstructions ABAP de base
Fonctionnalits ABAP
Navigation ABAPLe DEBUG
Utile
PratiqueQuestions
5/20/2018 Atelier ABAP
4/944 Solutions de Scurit & Services
Prsentation
La formation est destine auxdbutantssur le code ABAP et enparticulier aux fonctionnels dsirant comprendre et analyser ce merveilleuxcode.
Certains passages pourront sembler vidents certains mais permettentde fixer certaines rgles et connaissances ncessaires.
Buts de cette formation :
Comprendreles bases du code ABAP Matriserles lments essentiels du DEBUG ABAP
Savoir utiliserde 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 viades formations plus pousses.
5/20/2018 Atelier ABAP
5/94
5 Solutions de Scurit & Services
Plan
Prsentation
Objets ABAP de baseInstructions ABAP de base
Fonctionnalits ABAP
Navigation ABAPLe DEBUG
Utile
PratiqueQuestions
5/20/2018 Atelier ABAP
6/94
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 dedonnes
Une table est compose de zones lies un lment de donne, lui li un domaine.
5/20/2018 Atelier ABAP
7/94
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 lacase Cl coche.
Il est possible denrichir les tables standards avec des lments
spcifiques via lutilisation dun APPEND. Les zones de lAPPEND
apparaissent en bleu.
5/20/2018 Atelier ABAP
8/94
8 Solutions de Scurit & Services
Objets ABAP de base - Dictionnaire
Exemple table VBAP (Postes de commandes de vente)
5/20/2018 Atelier ABAP
9/94
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 dansSAP.
Un programme peut utiliser tous les objets du dictionnaire ainsi que lesmodules fonctions, les Includeset les autres objets dvelopps dansSAP.
Un Include est un programme qui est forcment appel par un autreprogramme : le programme appelant peut alors utiliser les variables etfonctionnalits 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.
5/20/2018 Atelier ABAP
10/94
10 Solutions de Scurit & Services
Objets ABAP de baseFonctions
Transactions SE37/SE80
Fonctionou 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 / Sortiespermettant de
transporter les valeurs de variables dun programme appelant vers le MFet 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.
5/20/2018 Atelier ABAP
11/94
11 Solutions de Scurit & Services
Objets ABAP de baseFormulaire
Transaction SE71
Un formulairesert extraire, visualiser et imprimer des informations de
SAP sous une forme facilement comprhensible par un utilisateur final ouun 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 unecorrespondance (exemple : pour diter des factures)
Il est possible de rajouter une couche Streamserveaprs la gnration duformulaire 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
5/20/2018 Atelier ABAP
12/94
12 Solutions de Scurit & Services
Objets ABAP de baseExit
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 bienprcis dans le standard par SAP : il est donc parfois compliqu de trouverlExit 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 Pointsqui permettent decoder lquivalent des Exits des endroits non prvus par SAP.
Un Exit doit tre li un projet SAP et activ via les transactionsCMOD/SMOD.
5/20/2018 Atelier ABAP
13/94
13 Solutions de Scurit & Services
Objets ABAP de baseAutres 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 transactionSE19).
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 enplus utilise sur les nouvelles versions SAP (transaction SE24).
5/20/2018 Atelier ABAP
14/94
14 Solutions de Scurit & Services
Plan
Prsentation
Objets ABAP de baseInstructions ABAP de base
Fonctionnalits ABAP
Navigation ABAPLe DEBUG
Utile
PratiqueQuestions
5/20/2018 Atelier ABAP
15/94
15 Solutions de Scurit & Services
Instructions ABAP de base
Le langage ABAP est un langage assez simple : quelques instructionspermettent de couvrir la majorit des besoins en programmation.
Les instructions les plus utilises peuvent tre dcomposes de la faonsuivante : 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
I i ABAP d b
5/20/2018 Atelier ABAP
16/94
16 Solutions de Scurit & Services
Instructions ABAP de base
Les commentaires sont prcds du caractre *ou "et apparaissent enbleu.
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 possibledutiliser un grand nombre dinstructions classiques de codage (oprations
arithmtiques, comparaisons, ).
I t ti ABAP d b D l ti
5/20/2018 Atelier ABAP
17/94
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 donnepouvant tre utilise dans tout le programme
Variable locale: zone une dimension du type lment de donnepouvant 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)
I t ti ABAP d b D l ti
5/20/2018 Atelier ABAP
18/94
18 Solutions de Scurit & Services
Instructions ABAP de base - Dclarations
Exemple pour dclarations
I t ti ABAP d b D l ti
5/20/2018 Atelier ABAP
19/94
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 latable interne
Linstruction APPENDpermet de transfrer les valeurs de la Working Areavers les lignes et donc de stocker ces valeurs. Si lAPPEND nest pas fait,
les donnes de la WA ne seront pas mmorises.
Linstruction CLEARapplique une table interne permet de vider la WA.
Linstruction REFRESHpermet de vider la totalit des lignes de la tableinterne.
Instructions ABAP de base Dclarations
5/20/2018 Atelier ABAP
20/94
20 Solutions de Scurit & Services
Instructions ABAP de base - Dclarations
cran de slection
Rsultat aprs excution
Instructions ABAP de base SELECT
5/20/2018 Atelier ABAP
21/94
21 Solutions de Scurit & Services
Instructions ABAP de baseSELECT
SELECT: permet de slectionner des donnes SAP contenues dans unetable standard / spcifique ou une vue.
SELECT P1INTO P2FROM P3WHERE 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.
Instructions ABAP de base READ
5/20/2018 Atelier ABAP
22/94
22 Solutions de Scurit & Services
Instructions ABAP de baseREAD
READ: permet de lire une ligne de table interne suivant certainesconditions.
La ligne retourne se trouve dans la working area de la table interne.
READ TABLE P1WITH 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 P1INDEX 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.
Instructions ABAP de base LOOP
5/20/2018 Atelier ABAP
23/94
23 Solutions de Scurit & Services
Instructions ABAP de baseLOOP
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 encours de lecture.
Il existe dautres options pour cette instruction mais celles mentionnes ci-
dessus sont les principales.
Instructions ABAP de base MOVE / WRITE
5/20/2018 Atelier ABAP
24/94
24 Solutions de Scurit & Services
Instructions ABAP de baseMOVE / WRITE
MOVE/ WRITE: permet de transfrer une valeur ou la valeur dunevariable vers une autre variable.
MOVE transfre la valeur en brut alors que WRITE transfre la valeur avecson format.
WRITE / MOVE P1TO 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.
Instructions ABAP de base CLEAR / REFRESH
5/20/2018 Atelier ABAP
25/94
25 Solutions de Scurit & Services
Instructions ABAP de base CLEAR / REFRESH
CLEAR: permet de vider la valeur dune zone variable. Dans le cas dunetable 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
Instructions ABAP de base APPEND
5/20/2018 Atelier ABAP
26/94
26 Solutions de Scurit & Services
Instructions ABAP de base APPEND
APPEND: permet dans le cas dune table interne de transfrer la workingarea 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 laprochaine 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.
Instructions ABAP de base MAJ TABLE
5/20/2018 Atelier ABAP
27/94
27 Solutions de Scurit & Services
Instructions ABAP de base MAJ TABLE
Les commandes suivantes concernent les mises jour de table dedonnes 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 dentreavec 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.
Instructions ABAP de base CALL FUNCTION
5/20/2018 Atelier ABAP
28/94
28 Solutions de Scurit & Services
Instructions ABAP de base CALL FUNCTION
CALL FUNCTION: permet dappeler un module fonction dans unprogramme ou dans un autre module fonction.
Un module fonction possde plusieurs paramtres dchange avec le
programme appelant.
CALL FUNCTION P1
EXPORTING P2= P3IMPORTING 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
Instructions ABAP de baseCALL FUNCTION
5/20/2018 Atelier ABAP
29/94
29 Solutions de Scurit & Services
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 sortiedu 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 programmeappelant avec les paramtres facultatif en commentaires.
Instructions ABAP de basePERFORM
5/20/2018 Atelier ABAP
30/94
30 Solutions de Scurit & Services
PERFORM: permet dappeler une routine dans un programme.
Cette routine est forcment dfinie dans le programme appelant ou dansun Include appartenant au programme appelant.
Elle est dfinie par linstruction suivante :
FORM P1.
ENDFORM.
et appele par linstructionPERFORM 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 etamliorer la lisibilit du code.
Instructions ABAP de baseAUTHORITY-CHECK
5/20/2018 Atelier ABAP
31/94
31 Solutions de Scurit & Services
AUTHORITY-CHECK: permet deffectuer un contrle dautorisation dans unprogramme.
AUTHORITY-CHECK OBJECT P1
ID P2FIELD 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 delobjet 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.
Plan
5/20/2018 Atelier ABAP
32/94
32 Solutions de Scurit & Services
Prsentation
Objets ABAP de baseInstructions ABAP de base
Fonctionnalits ABAP
Navigation ABAPLe DEBUG
Utile
PratiqueQuestions
Fonctionnalits ABAP
5/20/2018 Atelier ABAP
33/94
33 Solutions de Scurit & Services
Les programmes ABAP peuvent tre utiliss pour remplir plusieurs typesde fonctionnalits, dont voici les principales :
Reporting
Intgration
Extraction
Modification de fonctionnement standard
Fonctionnalits ABAP - Reporting
5/20/2018 Atelier ABAP
34/94
34 Solutions de Scurit & Services
Un reportest 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 dutype EXCEL (avec tris, filtres,), conseiller pour du reporting complexe
destine des utilisateurs finaux.
Fonctionnalits ABAP - Intgration
5/20/2018 Atelier ABAP
35/94
35 Solutions de Scurit & Services
Un programme dintgrationsert mettre jour des donnes dans SAP.
Les donnes peuvent tre issues de SAP ou dun autre systme (SAP ounon) 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.
Fonctionnalits ABAP - Intgration
5/20/2018 Atelier ABAP
36/94
36 Solutions de Scurit & Services
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 transactionSCAT, il est possible de lutiliser pour un fichier comportant plusieurs
intgrations.
Le DIRECT INPUT: cela consiste mettre jour directement les tablesstandards SAP (via UPDATE). Cest trs dconseillvoire interditcar cela
contourne les contrles standards de zones SAP et peut corrompre lesbases de donnes
Le BATCH INPUT: ancienne mthode dintgration toujours utilise. Ilsagit 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 duprogramme, 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.
Fonctionnalits ABAP - Intgration
5/20/2018 Atelier ABAP
37/94
37 Solutions de Scurit & Services
La BAPI: il sagit dun objet SAP semblable aux MF. En paramtres onrenseigne les diffrentes structures ncessaires la cration oumodification 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). LIDocpeut tre utilis au sein dun mme systme ou avec un autre systme.
Un IDoc correspond un objet crer ou modifier. La transactionprincipale de gestion des IDocs est la WEDI. Technique de plus en plus
utilise et impose par certains changes entre entreprises pour sesavantages de traabilit des informations. Cette technique est robuste etoffre la possibilit de suivre toutes les intgrations de manire assezdirecte mme si cela peut savrer assez technique.
Fonctionnalits ABAP - Extraction
5/20/2018 Atelier ABAP
38/94
38 Solutions de Scurit & Services
Une extractionressemble un reporting mais permet denvoyer lesdonnes 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 parla 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 viatransaction AL11).
Remarque importante : Si le programme est excut en arrire-plan, il est impossible de dposer
le fichier sur un serveur local.
Fonctionnalits ABAPUSER EXIT
5/20/2018 Atelier ABAP
39/94
39 Solutions de Scurit & Services
Les USER EXITpermettent dintgrer du code spcifique dans le codestandard 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 lABAPet des flux surlesquels 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.
Plan
5/20/2018 Atelier ABAP
40/94
40 Solutions de Scurit & Services
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
PratiqueQuestions
Navigation ABAP
5/20/2018 Atelier ABAP
41/94
41 Solutions de Scurit & Services
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 leprogramme.
Il existe dans lditeur ABAP de nombreuses options trs utiles pour
naviguer dans le programme ainsi que certaines fonctions essentielles audveloppement.
Remarque : pour ne pas avoir lair ridicule devant un dveloppeur, nutilisez pas la
transaction SA38 : il sagit dune SE38 trs allge!!
Navigation ABAP
5/20/2018 Atelier ABAP
42/94
42 Solutions de Scurit & Services
Transaction SE80
Navigation ABAP
5/20/2018 Atelier ABAP
43/94
43 Solutions de Scurit & Services
: Contrledu programme. Permet de vrifier si le programmerespecte 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.
: Activationdu programme. Cette action contrle dans un premiertemps 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.
Navigation ABAP
5/20/2018 Atelier ABAP
44/94
44 Solutions de Scurit & Services
: 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 alorssurligne lcran.
: Pretty Printer. Permet de changer la mise en forme du codeABAP du programme pour le rendre plus facile comprendre en fonction
des rgles syntaxiques de lABAP. Cette fonction ne change en rien lefonctionnement du programme mais en change laspect visuel.
Navigation ABAP
5/20/2018 Atelier ABAP
45/94
45 Solutions de Scurit & Services
: 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 encliquant sur la flche, SAP nous renvoie tous les programmes ayant lapartie demande dans leur nom.
Navigation ABAP
5/20/2018 Atelier ABAP
46/94
46 Solutions de Scurit & Services
: Recherche. Attention il faut utiliser licne situe tout en haut delcran 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 dansle programme principal (conseill)
Le rsultat est un affichage de toutes les occurrences de la chanerecherche, possibilit de cliquer sur la chane bleute pour accder au
code.
Navigation ABAP
5/20/2018 Atelier ABAP
47/94
47 Solutions de Scurit & Services
En double-cliquant sur les routines, modules fonctions, Include appelsdans le programme principal, SAP renvoie le curseur sur lobjet appel.
: Un clic sur les flches bleus permet de revenir sur lepositionnement prcdent du curseur.
: Un clic sur ces flches permet de revenir en arrire sur la dernireaction effectue ou de la r-itrer.
Navigation ABAP
5/20/2018 Atelier ABAP
48/94
48 Solutions de Scurit & Services
Ci-dessous quelques objets lis au programme
Macros: Permettent deffectuer quelquesoprations de code simples et rptitives.Attention, ne peut tre debugg.
Dynpro: Ecran ABAP
Modules PBO / PAI: Dfinissent les actionsprcdant lapparition de lcran (Process Before
Output) ou conscutives son apparition (ProcessAfter Input)
Statut GUI: Dfinition des actions lies lcran(boutons SAVE/BACK/)
Titres GUI: Titre de lcran
Navigation ABAP
5/20/2018 Atelier ABAP
49/94
49 Solutions de Scurit & Services
Penser modulariserle programme lors de la phase de dveloppement.
Cela consiste organiser le programme en Includes et routines pour lerendre 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 visualiserlalgorithme sur une page dditeur.
Il faut galement commenter le programme: commentaires courtsetexplicites.
Modularisation + commentaires = facilit de comprhension pour la
TMA = Indicateurs au vert!!
Navigation ABAP
5/20/2018 Atelier ABAP
50/94
50 Solutions de Scurit & Services
Exemple de programme modulariset comment:
Navigation ABAP
5/20/2018 Atelier ABAP
51/94
51 Solutions de Scurit & Services
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
Navigation ABAP
5/20/2018 Atelier ABAP
52/94
52 Solutions de Scurit & Services
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 F1puis F9
ou F1puis Info technique Lcran suivant apparat et donne les informations concernant le
programme et la zone en question
Navigation ABAP - Versions
U i d d l ti d d d
5/20/2018 Atelier ABAP
53/94
53 Solutions de Scurit & Services
Une versionde programme correspond la gnration dun ordre detransport(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.
Navigation ABAP - Versions
L i d l BD d d l t d l i
5/20/2018 Atelier ABAP
54/94
54 Solutions de Scurit & Services
La version dans la BD de dveloppement correspond la version en coursde 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 lesstatuts de ces transports.
Navigation ABAP - Versions
C i d i E h t 2 i t li t
5/20/2018 Atelier ABAP
55/94
55 Solutions de Scurit & Services
: Comparaison de versions. En cochant 2 versions et cliquant sur cebouton, SAP compare les versions et affiche les diffrences.
Navigation ABAP - Versions
: Permet de comparer la version en cours avec un
5/20/2018 Atelier ABAP
56/94
56 Solutions de Scurit & Services
: Permet de comparer la version en cours avec unautre environnement SAP(ex : Recette, Production). Un POP-UP permetde choisir le systme auquel comparer puis lance la comparaison.
Utile pour identifier un cart entre environnements et dtecter un oublidOT lors dun transport.
: Rcupration de version. Permet de revenir sur une versionantrieure de lobjet. Cette fonction remet lobjet dans ltat dans lequel il
tait lors de lOT rcupr et crase toutes les modifications des OTs
suivants.
Navigation ABAP - SAPScript
Un formulaire SAPScript est accessible et modifiable via SE71
5/20/2018 Atelier ABAP
57/94
57 Solutions de Scurit & Services
Un formulaire SAPScriptest accessible et modifiable via SE71.
Un formulaire est compos de pages, permettant de dfinir la successiondes 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 MAINcontient des donnes sous forme de liste delongueur variable. Par exemple la liste des postes pour une facture. Si lenombre de postes dpasse la taille de la page, SAP dclenche unenouvelle 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.
Navigation ABAP - SAPScript
Exemple de formulaire SAPScript:
5/20/2018 Atelier ABAP
58/94
58 Solutions de Scurit & Services
Exemple de formulaire SAPScript:
Plan
P t ti
5/20/2018 Atelier ABAP
59/94
59 Solutions de Scurit & Services
Prsentation
Objets ABAP de base
Instructions ABAP de base
Fonctionnalits ABAP
Navigation ABAP
Le DEBUG
Utile
Pratique
Questions
Le DEBUG
Le debugger SAP est loutil indispensable du dveloppeur ABAP
5/20/2018 Atelier ABAP
60/94
60 Solutions de Scurit & Services
Le debugger SAPest l outil indispensable du dveloppeur ABAP.
Il peut galement permettre un fonctionnel de rsoudre un certainnombre 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 debuggerclassique.
La seule faon de bien matriser le debuggage SAP est de pratiquer.
Le DEBUGAccs au DEBUG
Laccs au DEBUG peut se faire de diffrentes manires
5/20/2018 Atelier ABAP
61/94
61 Solutions de Scurit & Services
L accs au DEBUG peut se faire de diffrentes manires.
La plus simple est dcrire le code/h la place de code transaction avantdeffectuer laction debugger.
Il est possible de positionner un point darrtdans le programme lui-mme via SE38/SE37/SE80 (cf. Navigation ABAP). Le traitementsarrtera 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 DEBUGsuivant sur la fentre debugger. Trsutile dans le cas dun debugging de POP-UP pour lequel il nest paspossible dutiliser la commande /h.
DEBUG
Le DEBUGAccs au DEBUG
Certains programmes standards sont des programmes dits Systme.
5/20/2018 Atelier ABAP
62/94
62 Solutions de Scurit & Services
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 Debuggingsystmepour rendre possible le debug et les points darrts.
Le DEBUGEcran DEBUG
Ecran DEBUG
5/20/2018 Atelier ABAP
63/94
63 Solutions de Scurit & Services
c a UG
Navigation
Code ABAP
Valeurs zones
Structure SYST
Le DEBUGEcran DEBUG
Navigation
5/20/2018 Atelier ABAP
64/94
64 Solutions de Scurit & Services
g
(F5) : Mode pas pas. Permet dexcuter le code ligne par ligne.
(F6) : Permet dexcuter le code ligne par ligne sans rentrer dans lesportions de code appeles via MF / routine / autres programmes.
(F7) : Retour. Permet de revenir dans le programme appelant lorsquelon se trouve dans le programme appel (routine / MF/).
(F8) : Continuer. Permet dexcuter le code dune seule traitejusquau prochain point darrt ou la fin du programme le cas chant.
Le DEBUGEcran DEBUG
Navigation
5/20/2018 Atelier ABAP
65/94
65 Solutions de Scurit & Services
g
: Un point de surveillanceest un point darrt
particulier qui permet de narrter lexcution du programme quelorsquune variable a pris une valeur particulire.
Cette fonction est trs utile pour dtecter une occurrence particulire dansune boucle sans pour autant excuter toutes les occurrences en pas pas.
Arrt lorsque la variable WT_TAB1-VBELNa pour valeur 0195002610
Le DEBUGEcran DEBUG
Navigation
5/20/2018 Atelier ABAP
66/94
66 Solutions de Scurit & Services
La barre de navigation permet de changer les zones afficher dans
lcran du bas.
Il est en particulier possible de visualiser et ventuellement supprimer lespoints darrts / surveillance.
Laffichage le plus utile reste laffichage par dfaut : Zones.
Le DEBUGEcran DEBUG
Code ABAP
5/20/2018 Atelier ABAP
67/94
67 Solutions de Scurit & Services
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-cliquantsur la ligne de code.
Les flches permettent de naviguer dans le code ABAP
pour ventuellement positionner de nouveaux points darrt. Il estgalement possible dutiliser les touches PGUPet PGDWNdu clavier.
Le DEBUGEcran DEBUG
Valeurs zones
5/20/2018 Atelier ABAP
68/94
68 Solutions de Scurit & Services
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 lesentres de la table interne.
: Permet de modifierla valeur dune variable pendant le DEBUG (cf.rubriques suivantes)
Le DEBUGEcran DEBUG
Structure SYST
5/20/2018 Atelier ABAP
69/94
69 Solutions de Scurit & Services
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 surle 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 programmepour identifier par exemple si une slection a renvoy un rsultat.
SY-TABIX : renvoie le numro de ligne en cours dans une boucle detraitement.
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 (enparticulier le SY-SUBRC) et de suivre son volution lors dun DEBUG carelle contient de nombreuses informations utiles.
Le DEBUGModif DEBUG
Il est possible de modifier la valeur de variables pendant un DEBUG.
5/20/2018 Atelier ABAP
70/94
70 Solutions de Scurit & Services
Cette option est configurable (ADMIN SAP) et est en gnral dsactivedans les environnements productifs.
Cette fonctionnalit peut se rvler trs utile car elle permet de changerdes donnes issues de SAP dans le DEBUG pour aiguiller le traitement dala manire souhaite.
Il suffit de changer la valeur de la zone dans le DEBUG puis cliquer sur lecrayon 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.
Le DEBUGExport tables internes
Lorsquune table interne comporte de nombreuses lignes, il est difficile de
l l d l DEBUG
5/20/2018 Atelier ABAP
71/94
71 Solutions de Scurit & Services
lanalyser dans lcran DEBUG.
Il est alors utile de lexporter sous EXCEL pour identifier les lignes etvaleurs qui nous intressent.
Cette fonction permet de visualiser et analyser facilement les donnesdune table interne en dehors du debugger.
Cela permet ventuellement de stocker les valeurs pour les comparer dautres par la suite.
Le DEBUGExport tables internes
Il faut dans ce cas
5/20/2018 Atelier ABAP
72/94
72 Solutions de Scurit & Services
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 utilitairetype EXCEL.
Le DEBUGDEBUG Formulaires
Un formulaire SAPScript ne se debug pas de la mme manire.
5/20/2018 Atelier ABAP
73/94
73 Solutions de Scurit & Services
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 desinitis
Le DEBUGConseils
Il est ncessaire, avant de se lancer dans un DEBUG, de visualiser lecode du programme afin den identifier les grandes fonctionnalits et
5/20/2018 Atelier ABAP
74/94
74 Solutions de Scurit & Services
code du programmeafin d en identifier les grandes fonctionnalits etviter dtre perdu lors du DEBUG.
Il est conseill de positionner les points darrtssur des lignes de codestratgiques avant de se lancer dans un DEBUG : cela permettra degagner du temps.
Un debug peut tre relativement long et ncessiter de nombreux passagesafin de dterminer le bout de code analyser.
Lorsque lon rajoute un point darrt dans le code via lcran de DEBUG, ilfaut penser cliquer sur la disquette de sauvegarde pour que le pointdarrt soit conserv pour la prochaine excution.
Dans cette version du DEBUG, un point darrt est li au userqui laactiv. 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.
Plan
Prsentation
5/20/2018 Atelier ABAP
75/94
75 Solutions de Scurit & Services
Objets ABAP de base
Instructions ABAP de baseFonctionnalits ABAP
Navigation ABAP
Le DEBUGUtile
Pratique
Questions
UtileLexique
ABAP: Allgemeiner BerichtsAufbereitungsProzessor / Advanced BusinessApplication Programming
5/20/2018 Atelier ABAP
76/94
76 Solutions de Scurit & Services
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
UtileLexique
OT: Ordre de Transport
PAI P Aft I t d ABAP
5/20/2018 Atelier ABAP
77/94
77 Solutions de Scurit & Services
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
UtileProgrammes utiles
RGUGBR00 : Activation des rgles de validations et substitutions FI
RPR ABAP SOURCE SCAN R h h d
5/20/2018 Atelier ABAP
78/94
78 Solutions de Scurit & Services
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)
UtileTransactions utiles
ABAPDOCU: Documentation ABAP
ABAPHELP : Aide ABAP
5/20/2018 Atelier ABAP
79/94
79 Solutions de Scurit & Services
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 deCUSTO 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
UtileTransactions utiles
SE38: Editeur ABAP
SE71 : Editeur SAPScript
5/20/2018 Atelier ABAP
80/94
80 Solutions de Scurit & Services
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
UtileSE30
SE30sert analyser les performances dun programme ou transaction.
Cela peut tre trs utile pour effectuer une premire analyse
5/20/2018 Atelier ABAP
81/94
81 Solutions de Scurit & Services
Cela peut tre trs utile pour effectuer une premire analysedoptimisation.
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.
UtileSE30
Cliquer sur Analyser
Lanalyse montre la rpartition du temps de traitement
5/20/2018 Atelier ABAP
82/94
82 Solutions de Scurit & Services
L analyse montre la rpartition du temps de traitement. ABAPconcerne le code en lui-mme
Base de donneconcerne les slections de donnes Systme R/3concerne 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.
UtileSE93
Utile pour connatre le programme standard ou spcifique utilis par unetransaction.
5/20/2018 Atelier ABAP
83/94
83 Solutions de Scurit & Services
Cette transaction peut savrer utile pour contourner les autorisations danscertains 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
UtileSE16N
Transaction daffichage et modification de tables SE11, y compris les
tables standards.
5/20/2018 Atelier ABAP
84/94
84 Solutions de Scurit & Services
Renseigner le nom de la table et le code &sap_edit( + ventuellement
des critres de slection), validerpour faire apparatre un message en basde lcran puis excuter.
Vous pouvez alors modifier les donnes de la table.
UtileSE16N
Toutes les modifications sont listes dans la table SE16N_CD_KEY.
5/20/2018 Atelier ABAP
85/94
85 Solutions de Scurit & Services
En cas de problmes dautorisations sur la SE16N, il est possible dutiliser
le MF SE16N_INTERFACE.
Attention : manipuler avec une trs grande prcaution.
UtileIDocs
La transaction gnrale des IDocs est la WEDI, qui permet daccder toutes les transactions lies au IDocs.
5/20/2018 Atelier ABAP
86/94
86 Solutions de Scurit & Services
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.
UtileLiens utiles
Merry\Affaires\AMS_SAP_RUN\Z 99 - Capitalisation
https://www.sdn.sap.com
https://www.sdn.sap.com/https://www.sdn.sap.com/5/20/2018 Atelier ABAP
87/94
87 Solutions de Scurit & Services
p p
http://sap.ittoolbox.com
Plan
Prsentation
https://www.sdn.sap.com/http://sap.ittoolbox.com/http://sap.ittoolbox.com/https://www.sdn.sap.com/5/20/2018 Atelier ABAP
88/94
88 Solutions de Scurit & Services
Objets ABAP de base
Instructions ABAP de baseFonctionnalits ABAP
Navigation ABAP
Le DEBUGUtile
Pratique
Questions
PratiqueMon premier programme ABAP
Cahier des charges Extraction des commandes de ventes ABAP (VA03)
5/20/2018 Atelier ABAP
89/94
89 Solutions de Scurit & Services
Possibilit de slectionner uniquement certaines commandes Exemple : commandes de 195002610 196003610
Restriction de la slection sur les commandes cres depuis le dbut delanne 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
PratiqueDEBUG1
JIRA: TAV-10001
Programme: ZFORM_ABAP1
5/20/2018 Atelier ABAP
90/94
90 Solutions de Scurit & Services
Variante: ZVAR01
Problme: Pour la commande 195004233, la quantit totale dans lereport nest pas bonne : le report affiche une quantit de 11 alors quelle
devrait tre de 21. ZPL
195002610 196003610
PratiqueDEBUG2
JIRA: TAV-10002
Programme: ZFORM_ABAP2
5/20/2018 Atelier ABAP
91/94
91 Solutions de Scurit & Services
Variante: ZVAR02
Problme: Le programme ne fonctionne pas. Job arrire-plan excut par user BTCADMIN
Tout est OK sauf commande 195003564 manquante en sortie
PratiqueDEBUG3
JIRA: TAV-10003
Programme: ZFORM_ABAP3
5/20/2018 Atelier ABAP
92/94
92 Solutions de Scurit & Services
Variante: ZVAR03
Problme: Le programme dure trop longtemps, il faudrait loptimiser.
PratiqueProgrammes
Vous trouverez ci-joint les programmes utiliss pour la pratique du
DEBUG :
5/20/2018 Atelier ABAP
93/94
93 Solutions de Scurit & Services
Le fichier ci-dessous est une solution propose pour le programme
du chapitre Mon premier programme ABAP :
F ichier WinZip
F ichier WinZip
Plan
Prsentation
Objets ABAP de base
5/20/2018 Atelier ABAP
94/94
94 Solutions de Scurit & Services
Objets ABAP de base
Instructions ABAP de baseFonctionnalits ABAP
Navigation ABAP
Le DEBUGUtile
Pratique
Questions