Atelier ABAP

March 28, 2018 | Author: Ivy Jackson | Category: Computer Program, Control Flow, Markup Language, Microsoft Excel, Program Optimization


Comments



Description

Solutions de Sécurité & ServicesAtelier ABAP pour débutants 03/06/2010 L. Arzur 2 Solutions de Sécurité & Services Plan Présentation générale ~ 5 min Objets ABAP de base ~ 20 min Instructions ABAP de base ~ 30 min Fonctionnalités 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 Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 4 Solutions de Sécurité & Services Présentation  La formation est destinée aux débutants sur le code ABAP et en particulier aux fonctionnels désirant comprendre et analyser ce merveilleux code.  Certains passages pourront sembler évidents à certains mais permettent de fixer certaines règles et connaissances nécessaires.  Buts de cette formation :  Comprendre les bases du code ABAP  Maîtriser les éléments essentiels du DEBUG ABAP  Savoir utiliser de manière opérationnelle le DEBUG ABAP  La formation ne s’attardera pas sur les aspects trop techniques, l’approche étant de donner un vernis ABAP aux non-ABAPeurs.  Le contenu de cette formation n’est bien sûr pas exhaustif et invite les personnes intéressés - nombreuses je l’espère! - à approfondir le sujet via des formations plus poussées. 5 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 6 Solutions de Sécurité & Services Objets ABAP de base - Dictionnaire  Transaction SE11  Le dictionnaire ABAP concerne les objets élémentaires utilisés par SAP pour stocker et véhiculer les données  Table standard : Objet dans lequel sont stockées les données (MARA)  Vue : Combinaison de plusieurs tables (VIQMEL)  Structure : Même type d’objet que les tables mais ne peut contenir de données  Une table est composée de zones liées à un élément de donnée, lui lié à un domaine. 7 Solutions de Sécurité & Services Objets ABAP de base - Dictionnaire  Une table SE11 possède toujours des zones clés.  Il ne peut pas y avoir plusieurs lignes avec la même combinaison de clés.  Les zones clés se situent dans les premières zones de la table et ont la case ‘Clé’ cochée.  Il est possible d’enrichir les tables standards avec des éléments spécifiques via l’utilisation d’un APPEND. Les zones de l’APPEND apparaissent en bleu. 8 Solutions de Sécurité & Services Objets ABAP de base - Dictionnaire  Exemple table VBAP (Postes de commandes de vente) 9 Solutions de Sécurité & Services Objets ABAP de base - Programmes  Transactions SE38/SE80  Standard ou spécifique, le programme manipule les objets du dictionnaire et les fonctionnalités SAP pour modifier ou récupérer des données dans SAP.  Un programme peut utiliser tous les objets du dictionnaire ainsi que les modules fonctions, les Includes et les autres objets développés dans SAP.  Un Include est un programme qui est forcément appelé par un autre programme : le programme appelant peut alors utiliser les variables et fonctionnalités développées dans l’Include.  Un programme, même s’il ne s’agit pas d’un Include, peut être également appelé par d’autres objets SAP.  L’organisation du programme en tant que telle sera abordée dans les chapitres suivants. 10 Solutions de Sécurité & Services Objets ABAP de base – Fonctions  Transactions SE37/SE80  Fonction ou Module Fonction (MF) : Objets pouvant être appelés et utilisés dans d’autre programmes ABAP.  Il est utile de développer une fonction appelée par un programme chapeau plutôt qu’un seul programme dans le cas où la fonctionnalité peut servir à d’autres programmes (exemple : MF de recherche de code article)  Le MF contient des paramètres d’Entrées / Sorties permettant de transporter les valeurs de variables d’un programme appelant vers le MF et vice-versa.  La programmation est la même que pour les programmes classiques.  Il est possible de tester le fonctionnement d’un MF directement et indépendamment d’un programme via la transaction SE37 en renseignant les paramètres appropriés. 11 Solutions de Sécurité & Services Objets ABAP de base – Formulaire  Transaction SE71  Un formulaire sert à extraire, visualiser et imprimer des informations de SAP sous une forme facilement compréhensible par un utilisateur final ou un client.  Il est lié à un programme d’impression  Le programme récupère les données dans SAP et les envoie au formulaire appelé  Le formulaire met en forme les données  Dans le standard SAP, le formulaire est en général associé à une correspondance (exemple : pour éditer des factures)  Il est possible de rajouter une couche Streamserve après la génération du formulaire pour une mise en forme des données hors SAP.  2 principales technologies de développement des formulaires :  SAPScript : ancienne techno, peu pratique mais la plus courante  SMARTFORMS : techno plus récente, plus robuste 12 Solutions de Sécurité & Services Objets ABAP de base – Exit  Transactions CMOD/SMOD  Un Exit (ou User-Exit) est un emplacement réservé à du codage spécifique dans un programme standard.  Il permet d’éviter en général de modifier le programme standard (très déconseillé) ou de copier le standard.  Les Exits sont en nombre limité et mis à disposition à des endroits bien précis dans le standard par SAP : il est donc parfois compliqué de trouver l’Exit se déclenchant au bon moment et mettant à disposition les données dont on a besoin.  En général un Exit se présente sous la forme d’un MF appelant un programme Include.  Depuis SAP ECC6, il existe des Enhancement Points qui permettent de coder l’équivalent des Exits à des endroits non prévus par SAP.  Un Exit doit être lié à un projet SAP et activé via les transactions CMOD/SMOD. 13 Solutions de Sécurité & Services Objets ABAP de base – Autres objets  Il existe de nombreux autres objets dans SAP.  Ils ne seront pas abordés dans la présentation car destinés à des développeurs confirmés, ci-dessous quelques exemples :  BADI (Business Add-In) : Technologie permettant d’ajouter du code dans les programmes standards, même but que les User-Exits transaction SE19).  BAPI : Technologie permettant d’intégrer des données dans SAP, fonctionne de la même façon qu’un MF (transaction BAPI).  Classe / Méthode : Concerne la programmation par objets, de plus en plus utilisée sur les nouvelles versions SAP (transaction SE24). 14 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 15 Solutions de Sécurité & 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 utilisées peuvent être décomposées de la façon suivante :  Déclarations  Sélection des données  Traitement des données  Écriture des données  Aiguillage dans le programme  Le langage des instructions est l’anglais.  En général une instruction contient 2 balises :  Une balise de début  Une balise de fin 16 Solutions de Sécurité & Services Instructions ABAP de base  Les commentaires sont précédés du caractère * ou " et apparaissent en bleu.  Une instruction ABAP finit toujours par un point.  Il est possible d’avoir une aide sur une instruction ABAP en positionnant la souris sur l’instruction et en tapant F1 à partir de la transaction SE38.  En plus des instructions décrites dans ce document, il est bien sûr possible d’utiliser un grand nombre d’instructions classiques de codage (opérations arithmétiques, comparaisons, …). 17 Solutions de Sécurité & Services Instructions ABAP de base - Déclarations  Il existe de nombreux objets utilisés dans les programmes ABAP.  Les principaux sont les suivants :  Table standard : déclarer une table standard dans le programme permet d’utiliser la structure de cette table interne pour stocker des informations  Table interne : objet contenant plusieurs lignes de structure identique  Structure : objet structuré ne contenant qu’une ligne  Variable globale : zone à une dimension du type élément de donnée pouvant être utilisée dans tout le programme  Variable locale : zone à une dimension du type élément de donnée pouvant être utilisée dans une partie du programme uniquement  Paramètres / Select-Options : variables de l’écran de sélection  Attention : il existe des règles de nommage pour toutes ces variables (cf. règles de nommage du client concerné) 18 Solutions de Sécurité & Services Instructions ABAP de base - Déclarations  Exemple pour déclarations 19 Solutions de Sécurité & Services Instructions ABAP de base - Déclarations  Point sur table interne  La table interne est décomposée en 2 parties :  La Working Area (WA) : structure de travail permettant de stocker des informations de manière temporaire  Les lignes : elles correspondent aux lignes réellement stockées dans la table interne  L’instruction APPEND permet de transférer les valeurs de la Working Area vers les lignes et donc de stocker ces valeurs. Si l’APPEND n’est pas fait, les données de la WA ne seront pas mémorisées.  L’instruction CLEAR appliquée à une table interne permet de vider la WA.  L’instruction REFRESH permet de vider la totalité des lignes de la table interne. 20 Solutions de Sécurité & Services Instructions ABAP de base - Déclarations  Écran de sélection  Résultat après exécution 21 Solutions de Sécurité & Services Instructions ABAP de base – SELECT  SELECT : permet de sélectionner des données SAP contenues dans une table standard / spécifique ou une vue.  SELECT P1 INTO P2 FROM P3 WHERE P4  P1 : zones à récupérer dans la table standard / spécifique ou vue  * signifie qu’il faut récupérer toutes les zones  P2 : variable où stocker les données récupérées  INTO TABLE XXXX signifie qu’il 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 / spécifique ou vue  P4 : condition de sélection  Restriction de la sélection par rapport aux critères de sélection (P, S/O)  Il existe d’autres options pour cette instruction mais celles mentionnées ci- dessus sont les principales. 22 Solutions de Sécurité & Services Instructions ABAP de base – READ  READ : permet de lire une ligne de table interne suivant certaines conditions.  La ligne retournée 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 : numéro de ligne de la table interne à lire  Il existe d’autres options pour cette instruction mais celles mentionnées ci- dessus sont les principales. 23 Solutions de Sécurité & Services Instructions ABAP de base – LOOP  LOOP : permet de boucler sur les lignes d’une 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 d’autres options pour cette instruction mais celles mentionnées ci- dessus sont les principales. 24 Solutions de Sécurité & Services Instructions ABAP de base – MOVE / WRITE  MOVE / WRITE : permet de transférer une valeur ou la valeur d’une variable vers une autre variable.  MOVE transfère la valeur en brut alors que WRITE transfère la valeur avec son format.  WRITE / MOVE P1 TO P2.  P1 : paramètre source à transférer  P2 : paramètre cible vers lequel transférer la valeur  Il existe d’autres options pour cette instruction mais celles mentionnées ci- dessus sont les principales. 25 Solutions de Sécurité & Services Instructions ABAP de base – CLEAR / REFRESH  CLEAR : permet de vider la valeur d’une zone variable. Dans le cas d’une table interne, cela permet de vider la working area.  REFRESH : permet de vider la totalité d’une table interne.  CLEAR P1.  P1 : variable à vider  REFRESH P1.  P1 : table interne à vider 26 Solutions de Sécurité & Services Instructions ABAP de base – APPEND  APPEND : permet dans le cas d’une table interne de transférer la working area vers les entrées de la table interne.  Si un APPEND n’est pas fait après avoir alimenté la working area, les données ne seront pas stockées dans la table internes car écrasées par la prochaine alimentation de la working area.  APPEND P1.  P1 : table interne à alimenter  Il existe d’autres options pour cette instruction mais celles mentionnées ci- dessus sont les principales. 27 Solutions de Sécurité & Services Instructions ABAP de base – MAJ TABLE  Les commandes suivantes concernent les mises à jour de table de données standards ou spécifiques accessibles via SE11.  UPDATE : modifie une entrée de table si la clé demandée existe  MODIFY : modifie ou insère une entrée de table  INSERT : insère une entrée dans la table. Il ne doit pas exister d’entrée avec la même clé dans la table.  DELETE : supprime une entrée dans la table  MODIFY P1.  P1 : table SE11 à modifier  Il existe d’autres options pour ces instructions mais celles mentionnées ci- dessus sont les principales. 28 Solutions de Sécurité & Services Instructions ABAP de base – CALL FUNCTION  CALL FUNCTION : permet d’appeler un module fonction dans un programme ou dans un autre module fonction.  Un module fonction possède plusieurs paramètres d’échange avec le programme appelant.  CALL FUNCTION P1 EXPORTING P2 = P3 IMPORTING P4 = P5 TABLES P6 = P7.  P1 : nom de la module fonction tel qu’il est défini dans le transaction SE37  P2/P3 : noms de zones et valeurs à transférer en entrée du MF  P4/P5 : noms de zones et valeurs à récupérer en sortie du MF  P6/P7 : noms de tables et tables à échanger avec le MF 29 Solutions de Sécurité & Services Instructions ABAP de base – CALL FUNCTION  ATTENTION :  Les paramètres en EXPORTING correspondent aux paramètres d’entrée du MF et qui sont exportés depuis le programme appelant vers le MF  Les paramètres en IMPORTING correspondent aux paramètres de sortie du MF et qui sont importés vers le programme appelant vers le MF  Si le programme appelant n’utilise pas tous les paramètres obligatoires du MF, un DUMP se produit.  Il est possible d’utiliser la fonction ‘Modèles’ dans l’éditeur ABAP pour récupérer les paramètres du MF :  Après validation, l’appel du MF est intégré dans le code du programme appelant avec les paramètres facultatif en commentaires. 30 Solutions de Sécurité & Services Instructions ABAP de base – PERFORM  PERFORM : permet d’appeler une routine dans un programme.  Cette routine est forcément définie dans le programme appelant ou dans un Include appartenant au programme appelant.  Elle est définie par l’instruction suivante : FORM P1. … ENDFORM. et appelée par l’instruction PERFORM P1.  P1 : nom de la routine.  Il est conseillé de donner un nom explicite à la routine.  Il est également conseillé d’utiliser de nombreuses routines dans un programme pour modulariser le programme par fonctionnalités et améliorer la lisibilité du code. 31 Solutions de Sécurité & Services Instructions ABAP de base – AUTHORITY-CHECK  AUTHORITY-CHECK : permet d’effectuer un contrôle d’autorisation dans un programme.  AUTHORITY-CHECK OBJECT P1 ID P2 FIELD P3.  P1 : nom de l’objet d’autorisation  P2 : nom du paramètre de l’authority-check  P3 : valeur à tester pour le paramètre  L’instruction renvoie un code retour via la zone SY-SUBRC en fonction de l’objet testé, des paramètres renseignés et des autorisations définies pour le user de connexion.  Si le SY-SUBRC = 0, le user est autorisé, sinon il n’est pas autorisé.  Il est ensuite possible de continuer ou arrêter le traitement. 32 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 33 Solutions de Sécurité & Services Fonctionnalités ABAP  Les programmes ABAP peuvent être utilisés pour remplir plusieurs types de fonctionnalités, dont voici les principales :  Reporting  Intégration  Extraction  Modification de fonctionnement standard 34 Solutions de Sécurité & Services Fonctionnalités ABAP - Reporting  Un report est un affichage des données issues de SAP.  Il s’appuie en général sur les tables standards et spécifiques.  Il peut avoir 2 formes principales :  Classique (instruction WRITE) et surtout destinée à des compte-rendus d’exécution simples  ALV (Abap List Viewer / utilisation de MFs standards) pour affichage du type EXCEL (avec tris, filtres,…), à conseiller pour du reporting complexe destinée à des utilisateurs finaux. 35 Solutions de Sécurité & Services Fonctionnalités ABAP - Intégration  Un programme d’intégration sert à mettre à jour des données dans SAP.  Les données peuvent être issues de SAP ou d’un autre système (SAP ou non) via un échange de fichiers.  Le programme peut être utilisé dans le cas d’une interface entrante ou d’une reprise de données.  Il est important de prévoir pour ce type de programme la possibilité d’être exécuté en avant-plan ou en arrière-plan via une variante de sélection.  Il faut également prévoir un compte-rendu d’exécution avec entre autres les objets standards SAP intégrés ou modifiés. 36 Solutions de Sécurité & Services Fonctionnalités ABAP - Intégration  Il existe plusieurs techniques d’intégration de données, dont les principales sont :  Le CATT : il ne s’agit pas d’un programme ABAP mais d’un scénario de test reproductible. Une fois défini pour une intégration via la transaction SCAT, il est possible de l’utiliser pour un fichier comportant plusieurs intégrations.  Le DIRECT INPUT : cela consiste à mettre à jour directement les tables standards SAP (via UPDATE). C’est très déconseillé voire interdit car cela contourne les contrôles standards de zones SAP et peut corrompre les bases de données…  Le BATCH INPUT : ancienne méthode d’intégration toujours utilisée. Il s’agit d’un programme ABAP mais qui simule un enchaînement d’écrans tel que le ferait l’utilisateur (comme dans un CATT). Les dossiers de BATCH INPUT créés sont soit exécutés en direct lors de l’exécution du programme, soit de manière désynchronisée via la transaction SM35. Cette technique n’est pas pérenne sur les transactions de type ENJOY et peut poser des problèmes en arrière-plan. 37 Solutions de Sécurité & Services Fonctionnalités ABAP - Intégration  La BAPI : il s’agit d’un objet SAP semblable aux MF. En paramètres on renseigne les différentes structures nécessaires à la création ou modification de l’objet SAP à intégrer et la BAPI s’occupe de créer ou modifier l’objet. Technique robuste et conseillée.  L’IDOC : il s’agit d’un échange de données informatisées (EDI). L’IDoc peut être utilisé au sein d’un même système ou avec un autre système. Un IDoc correspond à un objet à créer ou modifier. La transaction principale de gestion des IDocs est la WEDI. Technique de plus en plus utilisée et imposée par certains échanges entre entreprises pour ses avantages de traçabilité des informations. Cette technique est robuste et offre la possibilité de suivre toutes les intégrations de manière assez directe même si cela peut s’avérer assez technique. 38 Solutions de Sécurité & Services Fonctionnalités ABAP - Extraction  Une extraction ressemble à un reporting mais permet d’envoyer les données récupérées à l’extérieur de SAP, via la création d’un fichier de sortie par exemple.  Le format du fichier de sortie peut être dicté par le système qui utilisera par la suite le fichier mais est en général le format EXCEL ou .CSV.  Le fichier de sortie peut être déposé par le programme sur un serveur local (ex : disque C du PC physique) ou sur le serveur SAP (répertoires via transaction AL11).  Remarque importante :  Si le programme est exécuté en arrière-plan, il est impossible de déposer le fichier sur un serveur local. 39 Solutions de Sécurité & Services Fonctionnalités ABAP – USER EXIT  Les USER EXIT permettent d’intégrer du code spécifique dans le code standard SAP.  Ils doivent être activés via les transactions CMOD/SMOD.  D’autres techniques permettent d’effectuer ce type d’adaptations du standard (BADI, ENHANCEMENT POINTS sur ECC6…).  Les EXITs permettent d’éviter les modifications de programmes standards (très déconseillées!).  Il nécessitent une bonne connaissance de l’ABAP et des flux sur lesquels intervenir car il peuvent perturber fortement le fonctionnement standard prévu par SAP.  Une attention particulière devra être portée au passage en Production de USER-EXITS. 40 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 41 Solutions de Sécurité & Services Navigation ABAP  Il existe plusieurs transactions permettant de visualiser le code ABAP (SE38/SE37) mais la principale et la plus complète est la SE80.  Elle permet de visualiser facilement tous les objets utilisés par le programme.  Il existe dans l’éditeur ABAP de nombreuses options très utiles pour naviguer dans le programme ainsi que certaines fonctions essentielles au développement.  Remarque :  pour ne pas avoir l’air ridicule devant un développeur, n’utilisez pas la transaction SA38 : il s’agit d’une SE38 très allégée!! 42 Solutions de Sécurité & Services Navigation ABAP  Transaction SE80 43 Solutions de Sécurité & Services Navigation ABAP  : Contrôle du programme. Permet de vérifier si le programme respecte les règles de syntaxe du langage ABAP.  En cas d’erreur de syntaxe un message apparaît en bas de l’écran. Un double-clic sur le message renvoie sur la ligne de code en erreur.  : Activation du programme. Cette action contrôle dans un premier temps le programme puis l’active si aucune erreur n’est détectée. Un programme non actif ne peut être utilisé.  Le statut d’activation apparaît à côté du nom du programme. 44 Solutions de Sécurité & Services Navigation ABAP  : Break-point. Permet de mettre un point d’arrêt dans le programme, i.e lors d’une exécution du programme le traitement s’arrêtera sur ce point d’arrêt en mode debugger (voir chapitre DEBUG).  Le point d’arrêt est propre à l’utilisateur  Pour mettre le point d’arrêt, il suffit de positionner le curseur sur la ligne de code concernée puis de cliquer sur le bouton. La ligne apparaît alors surlignée à l’écran.  : Pretty Printer. Permet de changer la mise en forme du code ABAP du programme pour le rendre plus facile à comprendre en fonction des règles syntaxiques de l’ABAP. Cette fonction ne change en rien le fonctionnement du programme mais en change l’aspect visuel. 45 Solutions de Sécurité & Services Navigation ABAP  : Exécution. 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 caractère * et en cliquant sur la flèche, SAP nous renvoie tous les programmes ayant la partie demandée dans leur nom. 46 Solutions de Sécurité & Services Navigation ABAP  : Recherche. Attention il faut utiliser l’icône située tout en haut de l’écran et pas juste au dessus du nom du programme.  L’icône ouvre un POP-UP qui permet de rechercher une chaîne de caractères dans le programme.  Possibilité de remplacer cette chaîne par une autre  Possibilité de rechercher la chaîne dans le programme en cours ou dans le programme principal (conseillé)  Le résultat est un affichage de toutes les occurrences de la chaîne recherchée, possibilité de cliquer sur la chaîne bleutée pour accéder au code. 47 Solutions de Sécurité & Services Navigation ABAP  En double-cliquant sur les routines, modules fonctions, Include appelés dans le programme principal, SAP renvoie le curseur sur l’objet appelé.  : Un clic sur les flèches bleus permet de revenir sur le positionnement précédent du curseur.  : Un clic sur ces flèches permet de revenir en arrière sur la dernière action effectuée ou de la ré-itérer. 48 Solutions de Sécurité & Services Navigation ABAP  Ci-dessous quelques objets liés au programme  Macros : Permettent d’effectuer quelques opérations de code simples et répétitives. Attention, ne peut être debuggé.  Dynpro : Ecran ABAP  Modules PBO / PAI : Définissent les actions précédant l’apparition de l’écran (Process Before Output) ou consécutives à son apparition (Process After Input)  Statut GUI : Définition des actions liées à l’écran (boutons SAVE/BACK/…)  Titres GUI : Titre de l’écran 49 Solutions de Sécurité & Services Navigation ABAP  Penser à modulariser le programme lors de la phase de développement.  Cela consiste à organiser le programme en Includes et routines pour le rendre plus lisible et simple à comprendre.  Exemple :  Include pour les déclarations  Include pour les routines  1 routine par fonctionnalité  Lorsque l’on arrive sur un programme via l’éditeur, il doit être possible de comprendre immédiatement ce qu’il fait et si possible de visualiser l’algorithme sur une page d’éditeur.  Il faut également commenter le programme : commentaires courts et explicites.  Modularisation + commentaires = facilité de compréhension pour la TMA = Indicateurs au vert!! 50 Solutions de Sécurité & Services Navigation ABAP  Exemple de programme modularisé et commenté : 51 Solutions de Sécurité & Services Navigation ABAP  Il faut décomposer le programme en blocs à l’aide des instruction :  INITIALIZATION : bloc d’initialisation des variables du programme  START-OF-SELECTION : Début des sélection  END-OF-SELECTION : Fin des sélections 52 Solutions de Sécurité & 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’  L’écran suivant apparaît et donne les informations concernant le programme et la zone en question 53 Solutions de Sécurité & Services Navigation ABAP - Versions  Une version de programme correspond à la génération d’un ordre de transport (OT) contenant des créations ou modifications liées à l’objet.  Après chaque libération d’un OT sur le système de recette, SAP demande de créer un nouvel OT.  Les versions sont visualisables via les menus de la transaction. 54 Solutions de Sécurité & Services Navigation ABAP - Versions  La version dans la BD de développement correspond à la version en cours de modification et non libérée  Les autres versions correspondent à l’historisation des anciennes versions libérées.  Par double-clic sur un OT puis sur l’icône , on accède au journal des transports avec tous les transports sur les machines SAP ainsi que les statuts de ces transports. 55 Solutions de Sécurité & Services Navigation ABAP - Versions  : Comparaison de versions. En cochant 2 versions et cliquant sur ce bouton, SAP compare les versions et affiche les différences. 56 Solutions de Sécurité & 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 système auquel comparer puis lance la comparaison.  Utile pour identifier un écart entre environnements et détecter un oubli d’OT lors d’un transport.  : Récupération de version. Permet de revenir sur une version antérieure de l’objet. Cette fonction remet l’objet dans l’état dans lequel il était lors de l’OT récupéré et écrase toutes les modifications des OTs suivants. 57 Solutions de Sécurité & Services Navigation ABAP - SAPScript  Un formulaire SAPScript est accessible et modifiable via SE71.  Un formulaire est composé de pages, permettant de définir la succession des pages lors de l’impression.  Chaque page contient des fenêtres (exemple : une fenêtre pour le titre, une autre pour l’adresse du destinataire,…).  Les fenêtres peuvent contenir des éléments.  La fenêtre appelée MAIN contient des données sous forme de liste de longueur variable. Par exemple la liste des postes pour une facture. Si le nombre de postes dépasse la taille de la page, SAP déclenche une nouvelle page.  Le code à l’intérieur du formulaire est sensiblement différent de l’ABAP s’il s’agit d’un formulaire SAPScript : il est situé à l’intérieur des fenêtres.  Pour information la séquence /* indique un commentaire. 58 Solutions de Sécurité & Services Navigation ABAP - SAPScript  Exemple de formulaire SAPScript: 59 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 60 Solutions de Sécurité & Services Le DEBUG  Le debugger SAP est l’outil indispensable du développeur ABAP.  Il peut également permettre à un fonctionnel de résoudre un certain nombre d’anomalies et de compléter l’analyse fonctionnelle.  Ce chapitre sera uniquement axé sur le debugger des versions antérieures à ECC6.  Le debugger ECC6 est relativement différent en termes d’ergonomie mais les fonctionnalités principales sont les mêmes.  Pour information, il est possible dans ECC6 de revenir sur le debugger classique.  La seule façon de bien maîtriser le debuggage SAP est de pratiquer. 61 Solutions de Sécurité & Services Le DEBUG – Accès au DEBUG  L’accès au DEBUG peut se faire de différentes manières.  La plus simple est d’écrire le code /h à la place de code transaction avant d’effectuer l’action à debugger.  Il est possible de positionner un point d’arrêt dans le programme lui- même via SE38/SE37/SE80 (cf. Navigation ABAP). Le traitement s’arrêtera alors sur le point d’arrêt et laissera à l’utilisateur la possibilité de debugger le programme partir de ce point d’arrêt. Le bouton point d’arrêt est le suivant :  Glisser-déposer le fichier DEBUG suivant sur la fenêtre à debugger. Très utile dans le cas d’un debugging de POP-UP pour lequel il n’est pas possible d’utiliser la commande /h. DEBUG 62 Solutions de Sécurité & Services Le DEBUG – Accès au DEBUG  Certains programmes standards sont des programmes dits ‘Système’.  Pour identifier si un programme est ‘Système’, il suffit de vérifier les propriétés via SE38  Pour ce type de programmes, il est nécessaire d’activer le Debugging système pour rendre possible le debug et les points d’arrêts. 63 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Ecran DEBUG Navigation Code ABAP Valeurs zones Structure SYST 64 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Navigation  (F5) : Mode pas à pas. Permet d’exécuter le code ligne par ligne.  (F6) : Permet d’exécuter le code ligne par ligne sans rentrer dans les portions de code appelées via MF / routine / autres programmes.  (F7) : Retour. Permet de revenir dans le programme appelant lorsque l’on se trouve dans le programme appelé (routine / MF/…).  (F8) : Continuer. Permet d’exécuter le code d’une seule traite jusqu’au prochain point d’arrêt ou la fin du programme le cas échéant. 65 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Navigation  : Un point de surveillance est un point d’arrêt particulier qui permet de n’arrêter l’exécution du programme que lorsqu’une variable a pris une valeur particulière. Cette fonction est très utile pour détecter une occurrence particulière dans une boucle sans pour autant exécuter toutes les occurrences en pas à pas. Arrêt lorsque la variable WT_TAB1-VBELN a pour valeur 0195002610 66 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Navigation  La barre de navigation permet de changer les zones à afficher dans l’écran du bas. Il est en particulier possible de visualiser et éventuellement supprimer les points d’arrêts / surveillance. L’affichage le plus utile reste l’affichage par défaut : Zones. 67 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Code ABAP  Cet écran affiche le code ABAP en cours de DEBUG.  Les points d’arrêts sont visibles par une icône  Il est possible de supprimer ou rajouter un point d’arrêt en double-cliquant sur la ligne de code.  Les flèches permettent de naviguer dans le code ABAP pour éventuellement positionner de nouveaux points d’arrêt. Il est également possible d’utiliser les touches PGUP et PGDWN du clavier. 68 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Valeurs zones  Cet écran permet d’afficher les valeurs des variables du code ABAP.  Pour le faire il suffit de renseigner le nom de la zone dans la première colonne ou de double-cliquer sur la zone concernée 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 entrées de la table interne.  : Permet de modifier la valeur d’une variable pendant le DEBUG (cf. rubriques suivantes) 69 Solutions de Sécurité & Services Le DEBUG – Ecran DEBUG  Structure SYST  La structure SYST (ou SY) est une structure standard SAP.  Structure alimentée et mise à jour tout au long du traitement.  Elle contient des zones systèmes permettant d’avoir des informations sur le traitement et son déroulement.  Exemple de zones :  SY-SUBRC : code retour d’instruction. 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 sélection a renvoyé un résultat.  SY-TABIX : renvoie le numéro de ligne en cours dans une boucle de traitement.  SY-UNAME : renvoie le user qui exécute le traitement  SY-DATUM : renvoie la date système  SY-REPID : renvoie le nom du programme en cours d’exécution  Il est très important de tester cette structure dans le programme (en particulier le SY-SUBRC) et de suivre son évolution lors d’un DEBUG car elle contient de nombreuses informations utiles. 70 Solutions de Sécurité & 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 général désactivée dans les environnements productifs.  Cette fonctionnalité peut se révéler très utile car elle permet de changer des données issues de SAP dans le DEBUG pour aiguiller le traitement da la manière souhaitée.  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 empêcher la suite d’un traitement si l’on n’y est pas autorisé.  Le traitement s’arrête si le code retour SY-SUBRC renvoyé par l’authority- check est différent de 0.  Il suffit de positionner un point d’arrêt sur le test du SY-SUBRC et de forcer la valeur à 0.  Le traitement continuera alors comme si le contrôle avait été OK. 71 Solutions de Sécurité & Services Le DEBUG – Export tables internes  Lorsqu’une table interne comporte de nombreuses lignes, il est difficile de l’analyser dans l’écran DEBUG.  Il est alors utile de l’exporter sous EXCEL pour identifier les lignes et valeurs qui nous intéressent.  Cette fonction permet de visualiser et analyser facilement les données d’une table interne en dehors du debugger.  Cela permet éventuellement de stocker les valeurs pour les comparer à d’autres par la suite. 72 Solutions de Sécurité & Services Le DEBUG – Export tables internes  Il faut dans ce cas  double-cliquer sur la table interne en question.  Dans l’écran 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 Sécurité & Services Le DEBUG – DEBUG Formulaires  Un formulaire SAPScript ne se debug pas de la même manière.  Il faut activer le DEBUG formulaire via SE71.  Ensuite, lorsque le formulaire est appelé, le DEBUG formulaire apparaît.  Ce debugger est relativement complexe et peu intuitif, donc réservé à des initiés… 74 Solutions de Sécurité & Services Le DEBUG – Conseils  Il est nécessaire, avant de se lancer dans un DEBUG, de visualiser le code du programme afin d’en identifier les grandes fonctionnalités et éviter d’être perdu lors du DEBUG.  Il est conseillé de positionner les points d’arrêts sur des lignes de code stratégiques avant de se lancer dans un DEBUG : cela permettra de gagner du temps.  Un debug peut être relativement long et nécessiter de nombreux passages afin de déterminer le bout de code à analyser.  Lorsque l’on rajoute un point d’arrêt dans le code via l’écran de DEBUG, il faut penser à cliquer sur la disquette de sauvegarde pour que le point d’arrêt soit conservé pour la prochaine exécution.  Dans cette version du DEBUG, un point d’arrêt est lié au user qui l’a activé. Lorsque l’on se déconnecte, les points d’arrêt sont perdus.  Pour qu’un point d’arrêt soit pris en compte, il faut quitter et relancer le programme ou la transaction à debugger. 75 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 76 Solutions de Sécurité & Services Utile – Lexique  ABAP : Allgemeiner BerichtsAufbereitungsProzessor / Advanced Business Application Programming  ALV : Abap List Viewer, techno ABAP pour créer un report de type EXCEL  BADI : Business Add-In, adaptation du standard  BAPI : Business Application Programming Interface, fonction d’intégration  Batch : arrière-plan, par extension job en arrière-plan  Break Point : Point d’arrêt  BTCI : Batch-Input  CATT : Computer Aided Test Tool  CSV : Comma Separated Values, format de fichier avec séparateur virgule (point virgule pour les versions françaises)  EDI : Echange de Données Informatisées  IDoc : Intermediate DOCument  MF : Module Fonction ou Fonction 77 Solutions de Sécurité & 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 Sécurité & Services Utile – Programmes utiles  RGUGBR00 : Activation des règles 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 Sécurité & Services Utile – Transactions utiles  ABAPDOCU : Documentation ABAP  ABAPHELP : Aide ABAP  AL11 : Gestion des répertoires SAP  CG3Z / CG3Y : Import / Export de fichiers entre PC local et serveur  SBWP : Sap Business WorkPlace, contient l’historique des objets  SCMP : Comparaison de tables (utile pour les comparaisons de tables de CUSTO ente environnements SAP)  SE03 : Recherche d’OTs par objets, description,…  SE11 : Dictionnaire ABAP  SE15 : Recherche d’objets  SE16N : Utilitaire de modification de tables (dangereux…)  SE30 : Analyse du temps d’exécution  SE37 : Editeur de modules fonctions 80 Solutions de Sécurité & 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 : Entrées de blocage  SM37 : Suivi des jobs d’exploitation  SM51 : Journal système  ST05 : Trace système  ST22 : DUMPs  SU01 / SU01D : Gestion des users  SU53 : Dernier contrôle d’autorisation effectué sur le user de connexion  WEDI : Transaction chapeau de la gestion des IDocs 81 Solutions de Sécurité & Services Utile – SE30  SE30 sert à analyser les performances d’un programme ou transaction.  Cela peut être très utile pour effectuer une première analyse d’optimisation.  Rentrer le nom du programme à tester puis exécuter  Exécuter le programme comme en réel.  Revenir en arrière avec la flèche verte jusqu’à l’écran initial de la SE30. 82 Solutions de Sécurité & Services Utile – SE30  Cliquer sur ‘Analyser’  L’analyse montre la répartition du temps de traitement.  ABAP concerne le code en lui-même  Base de donnée concerne les sélections de données  Système R/3 concerne le temps de traitement SAP  Un clic sur le bouton liste dans l’ordre les opérations les plus coûteuses en temps de traitement.  Il est ensuite plus facile de faire une optimisation efficace. 83 Solutions de Sécurité & Services Utile – SE93  Utile pour connaître le programme standard ou spécifique utilisé par une transaction.  Cette transaction peut s’avérer utile pour contourner les autorisations dans certains cas.  En effet de nombreux contrôles d’autorisations sont rattachés à la transaction et pas au programme appelé, il suffit donc parfois d’exécuter directement le programme et non la transaction.  Exemple SM51 84 Solutions de Sécurité & Services Utile – SE16N  Transaction d’affichage et modification de tables SE11, y compris les tables standards.  Renseigner le nom de la table et le code &sap_edit ( + éventuellement des critères de sélection), valider pour faire apparaître un message en bas de l’écran puis exécuter.  Vous pouvez alors modifier les données de la table. 85 Solutions de Sécurité & Services Utile – SE16N  Toutes les modifications sont listées dans la table SE16N_CD_KEY.  En cas de problèmes d’autorisations sur la SE16N, il est possible d’utiliser le MF SE16N_INTERFACE.  Attention : à manipuler avec une très grande précaution. 86 Solutions de Sécurité & Services Utile – IDocs  La transaction générale des IDocs est la WEDI, qui permet d’accéder à toutes les transactions liées au IDocs.  Les transactions les plus utiles sont les WE02 (sélection et visualisation des IDocs) et WE19 (permet de rejouer un IDoc).  Dans le cas où un document SAP est généré ou a généré un IDocs, il est possible de visualiser l’IDoc en question directement à partir de l’objet SAP. 87 Solutions de Sécurité & Services Utile – Liens utiles  Merry\Affaires\AMS_SAP_RUN\Z 99 - Capitalisation  https://www.sdn.sap.com  http://sap.ittoolbox.com 88 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions 89 Solutions de Sécurité & Services Pratique – Mon premier programme ABAP  Cahier des charges  Extraction des commandes de ventes ABAP (VA03)  Possibilité de sélectionner uniquement certaines commandes  Exemple : commandes de 195002610 à 196003610  Restriction de la sélection sur les commandes créées depuis le début de l’année 2010  Reporting en sortie avec 4 colonnes :  Numéro de commande SAP  Numéro de commande client  Numéro de poste SAP  FLAG  Si la quantité d’ordre au niveau du poste de commande est supérieur à 2, FLAG = SUP, sinon FLAG = NO 90 Solutions de Sécurité & Services Pratique – DEBUG1  JIRA : TAV-10001  Programme : ZFORM_ABAP1  Variante : ZVAR01  Problème : Pour la commande 195004233, la quantité totale dans le report n’est pas bonne : le report affiche une quantité de 11 alors qu’elle devrait être de 21.  ZPL  195002610 à 196003610 91 Solutions de Sécurité & Services Pratique – DEBUG2  JIRA : TAV-10002  Programme : ZFORM_ABAP2  Variante : ZVAR02  Problème : Le programme ne fonctionne pas.  Job arrière-plan exécuté par user BTCADMIN  Tout est OK sauf commande 195003564 manquante en sortie 92 Solutions de Sécurité & Services Pratique – DEBUG3  JIRA : TAV-10003  Programme : ZFORM_ABAP3  Variante : ZVAR03  Problème : Le programme dure trop longtemps, il faudrait l’optimiser. 93 Solutions de Sécurité & Services Pratique – Programmes  Vous trouverez ci-joint les programmes utilisés pour la pratique du DEBUG :  Le fichier ci-dessous est une solution proposée pour le programme du chapitre ‘Mon premier programme ABAP’ : Fichier WinZip Fichier WinZip 94 Solutions de Sécurité & Services Plan Présentation Objets ABAP de base Instructions ABAP de base Fonctionnalités ABAP Navigation ABAP Le DEBUG Utile Pratique Questions
Copyright © 2024 DOKUMEN.SITE Inc.