Sonar ABAP – Ce qu’il faut savoir

Après avoir débuté, dans le post précédent, cette série qui traite de l’analyse de code ABAP, avec l’aide de Walter, Directeur Qualité de Vision IT et spécialiste des environnements SAP, nous allons voir aujourd’hui ce qu’il est nécessaire de connaître pour implémenter un processus d’analyse de code ABAP avec Sonar.

Comme vous le savez probablement, ABAP (Advanced Business Application Programming) est le langage de programmation de SAP, un logiciel ERP né dans les années 80, qui a connu différentes versions. Les plus souvent rencontrées sont SAP R3, 4.0 à 6.0, ou ECC5 et ECC6. Il ya aussi une version Netweaver pour le développement d’applications type Web et une extension orientée objet – ABAP Objects – mais son utilisation n’est pas vraiment répandue.

SAP est en lui-même un noyau de différents modules encore appelées «areas » et correspondant à différents ensembles de fonctionnalités pour différents types de gestion : finances, ventes, ressources humaines, achats, etc.

Mais comme chaque société a son propre modèle d’entreprise et son propre système de gestion, il faut être capable d’adapter ou de personnaliser l’utilisation de ces différents domaines. C’est-à-dire récupérer les données et les traitements de base de SAP, et les adapter activité de l’entreprise par le biais d’écrans, de rapports, de structures de données additionnelles, etc.

C’est le but du langage ABAP et ce à quoi se consacrent les développeurs ABAP. Ce n’est pas un langage difficile à lire, si vous savez déjà un minimum de connaissances en programmation (ou en SQL). Il appartient au groupe des L4G ou langages de 4ème génération, et est plus proche de Cobol que de Java. Cependant, son organisation n’est pas tout à fait habituel et il présente un vocabulaire assez particulier, qui peut parfois entraîner certaines confusions, mais c’est à peu près tout ce qu’il est nécessaire de connaître et nous que essaierons de voir dans ce post.

Le workbench SAP

SAP n’est pas seulement un logiciel ERP avec ses propres écrans, traitements et structures de données, mais aussi un environnement d’exécution et un environnement de développement pour la réalisation des programmes customisés.

La première chose que vous devez savoir est que le programmeur ABAP ne va pas installer un IDE type Eclipse avec un compilateur sur sa machine : il se connecte à un serveur et travaille avec le Workbench SAP (littéralement « atelier » ou « banc de travail » pour créer un programme, un écran, accéder au dictionnaire ou aux objets du noyau SAP, etc. Et tout est stocké dans ce Workbench, il n’y a pas de fichiers ou de répertoires (même si il ya certaines façons d’organiser le code).

L’accès au Workbench se réalise par le biais de transactions. Par exemple, pour modifier un programme existant, il faut aller dans l’éditeur ABAP du Workbench et entrer un code de transaction (SE38 dans notre cas) pour accéder à un écran où vous saisir plus de détails sur le programme que l’on souhaite modifier. Et donc, le développeur ne travaille pas avec une interface graphique et il ne doit pas seulement connaître la programmation ABAP, mais aussi savoir comment naviguer dans le Workbench.

Ce qui signifie que nous devrons préalablement extraire le code ABAP du Workbench dans le but d’analyser celui-ci. Ce n’est pas un problème, et nous verrons comment procéder dans un prochain article.

Cela signifie également qu’il faut parfois faire attention lorsque vous parlez de transaction. Non seulement tout ce qui se fait dans le Workbench nécessite un code de transaction (même un utilisateur n’appelle pas un programme, mais accéde à celui-ci par le biais d’une transaction). Mais supposons de surcroît que je parle à un consultant ou administrateur SAP, et lui demande quel genre de transactions réalise tel module afin de donner un nom à celui-ci pour mes analyses et le tableau de bord. Bien sûr, je suis en train de parler de transaction fonctionnelle : création d’un client, impression des factures, etc. Mais mes interlocuteurs vont le plus souvent comprendre ‘transaction SAP’ et non pas fonctionnelle, ce qui peut provoquer un malentendu.

J’ai déjà mentionné que le vocabulaire est un peu particulier. Mais bon, ce n’est pas comme parler Klingon (c’est du SAP, pas Star Trek).

Areas SAP

Un autre point important à connaître, car nous aurons quelques questions à ce sujet dans le prochain post : les domaines ou modules SAP. Nous avons vu que SAP secompose de différents modules ou domaines fonctionnels encore appelées ‘areas’. Les plus connus sont FICO (Financial & Controlling), RH (Ressources Humaines) ou SD (Sales & Distribution) et PP (Production Planning).

Bien sûr, tous ces modules se parlent entre eux : une facture en SD passera dans un compte dans FI, mais ils sont assez complexes, nécessitent une connaissance spécifique, et donc toutes les équipes ne travaillent pas dans les mêmes domaines SAP, et n’utilisent pas toutes le même serveur SAP. Donc vous n’allez pas parler, par exemple, de l’application ‘Achats’, mais FI, CO, AM (Asset Management), MM (Material Management) pour la gestion des stocks, etc.

Ceci est important parce que, comme nous devons extraire le code ABAP depuis un serveur :

  • Des serveurs différents vont nécessiter plus qu’une extraction unique.
  • Le code sera toujours organisé par ‘areas’ SAP. Et donc, an niveau supérieur de notre tableau de bord Sonar, nous allons retrouver les domaines FI, CO, HR, etc.

Les objets SAP

Je vais pas présenter tous les types d’objets ABAP, lá encore il ne s’agit pas de faire un cours SAP, et de toutes façons, nous allons les voir plus en détail lorsque nous commencerons les analyses. Maintenant, quand vous allez rencontrer des ‘ABAPers’ pour voir avec eux comment lancer un processus d’analyse, ils peuvent vous demander quels sont les objets qui sont analysés ou non. En voici quelques uns à connaître:

  • Classe : bien qu’il y ait une version objet du langage ABAP, une classe se réfère à un ‘package’, c’est à dire un ensemble de fichiers qui implémentent une fonctionnalité (ou un processus technique). Vous pouvez parler de module aussi, mais il y a un risque de confusion avec une ‘area’ SAP. Dans tous les cas, vous devez savoir qu’une classe ABAP n’est pas l’équivalent d’une classe Java.
  • Report / Module pool : un programme est essentiellement une interface qui permet à un utilisateur d’entrer des données pour produire un rapport ou une série plus complexe de processus (généralement réutilisables) pour interagir avec un utilisateur nommé ‘Module pool’ ou aussi ‘Function pool’.
  • Form: il ne s’agit pas d’un écran, comme on l’appelle parfois ainsi dans d’autres langages, mais d’un sous-programme appelé par un PERFORM.
  • Include: un traitement qui peut être appelé (pour inclusion) dans un programme, tel qu’une Copy Cobol.

Walter : Dans ton équipe Qualité, tu as des personnes qui viennent du monde J2EE, ou qui ne sont pas du monde SAP, et qui analysent du code ABAP ? Est-ce difficile de s’adapter à ce langage nouveau pour eux ? Quel est le niveau d’effort ? Faut-il beaucoup de temps pour y parvenir?

La question est importante, mais nécessite une nuance: il faut tenir compte de deux tâches distinctes : l’analyse et l’interprétation des résultats.

L’adaptation nécessaire pour qu’une personne mette en œuvre une analyse ABAP ABAP est assez simple, un ou deux jours au plus, selon qu’elle connaît ou non Sonar pour l’avoir déjà utilisé avec d’autres technologie.

La tâche d’interprétation des résultats du test nécessite généralement une compréhension plus profonde de la technologie ABAP, et peut s’acquérir en une ou deux semaines, avec le soutien d’un spécialiste de ce langage qui possède un minimum de connaissances des bonnes pratiques de programmation. Ainsi, nos équipes d’analyse de code sont constitués d’experts dans différentes technologies (ABAP, Java, PL/SQL, etc.)

Il y a d’autres activités telles que la création de nouvelles règles ou mesures dans un plugin, qui exigent une compréhension profonde du processus de création ainsi que de la technologie en question.

Merci Walter. Il est vrai que les bonnes pratiques de programmation ABAP ne sont pas toujours aussi normalisées que pour d’autres technologies. Nous verrons cela dans les prochains articles.

Cette publication est également disponible en Leer este articulo en castellano : liste des langues séparées par une virgule, Read that post in english : dernière langue.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *