ABAP - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Composants du langage

Le code source: il est écrit directement dans un composant de SAP appelé SAP Workbench et il sera stocké dans la base d'information de l'outil. Ce langage, de même que java, a besoin d'être compilé pour pouvoir être exécuté. Cependant, à la différence de java, avant chaque utilisation d'un programme, le processeur SAP vérifie qu'il possède la dernière version du programme. Si ce n'est pas le cas, ce dernier est recompilé à la volée.

Le dictionnaire de données (DDIC): la base de données est masquée pour le programmeur. Il y accède donc au travers de clauses faisant partie du langage lui-même. De même, la gestion du modèle de données est réalisée au travers d'un composant qui créera ou modifiera lui-même les tables de données. Ce dictionnaire de données comprend :

  • Des domaines représentant un concept élémentaire (par exemple un fournisseur, une référence article) ; chaque élément de donnée comprend au minimum un type de donnée et la spécification de son occupation mémoire.
  • Des éléments de données . Chaque élément de donnée est construit à partir d'un domaine et correspond à une utilisation particulière de ce dernier pour stocker une information, ou pour afficher un champ. Chaque élément de donnée comprend quatre descriptions textuelles qui peuvent être traduites (de manière à rendre l'application utilisable par des locuteurs de différentes langues).
  • Des structures et des tables de différents types permettant de stocker des informations, d'utiliser des types composites pour les transferts de données entre programmes et de stocker de l'information dans la base.

Un outil de transport . À chaque modification d'un programme, celui-ci doit être transporté de l'environnement dans lequel il est créé vers un environnement de test puis dans l'environnement de production (chacun de ces environnements dispose de jeux de données distincts, il peut exister plus de trois environnements dans un système d'information donné). Cette opération est réalisée par la mise en œuvre d'un ordre de transport.

Exemples de programmes ABAP

Le grand classique:

      REPORT Z_XX_TRANSACTION.      *      * -- Commentaire de ligne      *      PARAMETERS p_input(16) TYPE c DEFAULT 'Hello World!'.            *      *-- Affichage du résultat:      *       WRITE: / 'Lentrée était: ', p_input.      


Un exemple plus commun avec recherche dans la base de données:

      REPORT Z_XX_TRANSACTION.      *      * -- Declaration de données      *      TABLES:       TSTC,                                                 "Tables des transactions       TSTCT.                                                "Tables de leurs descriptions            * Tables internes pour l'exemple      DATA: XT_TSTC TYPE TABLE OF TSTC,             XE_TSTC TYPE TSTC,             XT_TSTCT TYPE TABLE OF TSTCT,             XE_TSTCT TYPE TSTCT.      *      " -- Début de la déclaration de l'écran de sélection      SELECT-OPTIONS S_TCODE FOR TSTC-TCODE OBLIGATORY.      *      *      *------------------      START-OF-SELECTION.  " -- Début de l'extraction des données      *------------------       CLEAR: XT_TSTC,              XT_TSTCT.       SELECT * FROM TSTC INTO TABLE XT_TSTC         WHERE TCODE IN S_TCODE.       IF sy-subrc EQ 0.                                      " Si la sélection s'est bien passée         SORT XT_TSTC BY TCODE.                               " On trie la table par nom de transaction (facultatif)       ENDIF.      *       SELECT * FROM TSTCT INTO TABLE XT_TSTCT         WHERE TCODE IN S_TCODE         AND   SPRSL = SY-LANGU.       IF sy-subrc EQ 0.         SORT XT_TSTCT BY TCODE.                              " On trie la table par nom de transaction                                                              " (obligatoire pour lecture dichotomique plus bas)       ENDIF.      *      *      *------------      TOP-OF-PAGE.      *------------       "    -- Haut de page (sur chaque page)       WRITE / 'Programme exemple: liste de transactions '.       SKIP.                                                  "Saut de ligne       ULINE.                                                 "Ligne continue horizontal      *      *                                                      *------------      END-OF-PAGE.      *------------       "    -- Bas de page (sur chaque page)       ULINE.      *      *      *-----------------      END-OF-SELECTION.  "Traitement des données après sélection      *-----------------       LOOP AT XT_TSTC INTO XE_TSTC.                          "Boucle sur les transactions         " Recherche de la description         READ TABLE XT_TSTCT INTO XE_TSTCT                         WITH KEY TCODE = XE_TSTC-TCODE                                  BINARY SEARCH.              "Lecture dichotomique ⇒ meilleur performance         IF SY-SUBRC NE 0. " Erreur           WRITE: /  "Saut de ligne                   SY-VLINE,                                  "Barre verticale                   XE_TSTC-TCODE, SY-VLINE,                   "Code puis barre                   (25) '-- Pas de description --'            "Largeur du texte spécifiée                   SY-VLINE.                                  "Barre verticale         ELSE.           WRITE: /                                          "Saut de ligne                   SY-VLINE,                                  "Barre verticale                   XE_TSTC-TCODE, SY-VLINE,                   "Code puis barre                   (25) XE_TSTCT-TTEXT,                       "Description sur 25 caractères                   SY-VLINE.                                  "Barre verticale         ENDIF.       ENDLOOP.      


Ce qui donne pour l'écran de selection :

Ecran selection exampl ABAP.PNG


Et pour le résultat :

Resultat example ABAP.PNG

Page générée en 0.171 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales - Signaler un contenu
Version anglaise | Version allemande | Version espagnole | Version portugaise