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