{"id":236,"date":"2012-11-11T14:47:47","date_gmt":"2012-11-11T13:47:47","guid":{"rendered":"http:\/\/dev.qualilogy.com\/fr\/?p=236"},"modified":"2013-01-05T14:48:30","modified_gmt":"2013-01-05T13:48:30","slug":"sonar-abap-ce-quil-faut-savoir","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/sonar-abap-ce-quil-faut-savoir\/","title":{"rendered":"Sonar ABAP &#8211; Ce qu&rsquo;il faut savoir"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-2581\" title=\"Qualilogy Sonar&amp;ABAP\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/11\/QualilogyAbap21.jpg\" alt=\"\" width=\"342\" height=\"150\" \/><\/a>Apr\u00e8s avoir d\u00e9but\u00e9, dans <a title=\"Sonar Abap\" href=\"http:\/\/qualilogy.com\/fr\/sonar-et-abap\" target=\"_blank\">le post pr\u00e9c\u00e9dent<\/a>, cette s\u00e9rie qui traite de l&rsquo;analyse de code ABAP, avec l&rsquo;aide de Walter, Directeur Qualit\u00e9 de Vision IT et sp\u00e9cialiste des environnements SAP, nous allons voir aujourd&rsquo;hui ce qu&rsquo;il est n\u00e9cessaire de conna\u00eetre pour impl\u00e9menter un processus d&rsquo;analyse de code ABAP avec Sonar.  <!--more--><\/p>\n<p>Comme vous le savez probablement, ABAP (Advanced Business Application Programming) est le langage de programmation de SAP, un logiciel ERP n\u00e9 dans les ann\u00e9es 80, qui a connu diff\u00e9rentes versions. Les plus souvent rencontr\u00e9es sont SAP R3, 4.0 \u00e0 6.0, ou ECC5 et ECC6. Il ya aussi une version Netweaver pour le d\u00e9veloppement d&rsquo;applications type Web et une extension orient\u00e9e objet &#8211; ABAP Objects &#8211; mais son utilisation n&rsquo;est pas vraiment r\u00e9pandue.<\/p>\n<p>SAP est en lui-m\u00eame un noyau de diff\u00e9rents modules encore appel\u00e9es \u00abareas \u00bb et correspondant \u00e0 diff\u00e9rents ensembles de fonctionnalit\u00e9s pour diff\u00e9rents types de gestion : finances, ventes, ressources humaines, achats, etc.<\/p>\n<p>Mais comme chaque soci\u00e9t\u00e9 a son propre mod\u00e8le d&rsquo;entreprise et son propre syst\u00e8me de gestion, il faut \u00eatre capable d&rsquo;adapter ou de personnaliser l&rsquo;utilisation de ces diff\u00e9rents domaines. C&rsquo;est-\u00e0-dire r\u00e9cup\u00e9rer les donn\u00e9es et les traitements de base de SAP, et les adapter activit\u00e9 de l&rsquo;entreprise par le biais d&rsquo;\u00e9crans, de rapports, de structures de donn\u00e9es additionnelles, etc.<\/p>\n<p>C&rsquo;est le but du langage ABAP et ce \u00e0 quoi se consacrent les d\u00e9veloppeurs ABAP. Ce n&rsquo;est pas un langage difficile \u00e0 lire, si vous savez d\u00e9j\u00e0 un minimum de connaissances en programmation (ou en SQL). Il appartient au groupe des L4G ou langages de 4\u00e8me g\u00e9n\u00e9ration, et est plus proche de Cobol que de Java. Cependant, son organisation n&rsquo;est pas tout \u00e0 fait habituel et il pr\u00e9sente un vocabulaire assez particulier, qui peut parfois entra\u00eener certaines confusions, mais c&rsquo;est \u00e0 peu pr\u00e8s tout ce qu&rsquo;il est n\u00e9cessaire de conna\u00eetre et nous que essaierons de voir dans ce post.<\/p>\n<h3><strong>Le workbench SAP<\/strong><\/h3>\n<p>SAP n&rsquo;est pas seulement un logiciel ERP avec ses propres \u00e9crans, traitements et structures de donn\u00e9es, mais aussi un environnement d&rsquo;ex\u00e9cution et un environnement de d\u00e9veloppement pour la r\u00e9alisation des programmes customis\u00e9s.<\/p>\n<p>La premi\u00e8re 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 \u00e0 un serveur et travaille avec le Workbench SAP (litt\u00e9ralement \u00ab atelier \u00bb ou \u00ab banc de travail \u00bb pour cr\u00e9er un programme, un \u00e9cran, acc\u00e9der au dictionnaire ou aux objets du noyau SAP, etc. Et tout est stock\u00e9 dans ce Workbench, il n&rsquo;y a pas de fichiers ou de r\u00e9pertoires (m\u00eame si il ya certaines fa\u00e7ons d&rsquo;organiser le code).<\/p>\n<p>L&rsquo;acc\u00e8s au Workbench se r\u00e9alise par le biais de transactions. Par exemple, pour modifier un programme existant, il faut aller dans l&rsquo;\u00e9diteur ABAP du Workbench et entrer un code de transaction (SE38 dans notre cas) pour acc\u00e9der \u00e0 un \u00e9cran o\u00f9 vous saisir plus de d\u00e9tails sur le programme que l&rsquo;on souhaite modifier. Et donc, le d\u00e9veloppeur ne travaille pas avec une interface graphique et il ne doit pas seulement conna\u00eetre la programmation ABAP, mais aussi savoir comment naviguer dans le Workbench.<\/p>\n<p>Ce qui signifie que nous devrons pr\u00e9alablement extraire le code ABAP du Workbench dans le but d&rsquo;analyser celui-ci. Ce n&rsquo;est pas un probl\u00e8me, et nous verrons comment proc\u00e9der dans un prochain article.<\/p>\n<p>Cela signifie \u00e9galement qu&rsquo;il faut parfois faire attention lorsque vous parlez de transaction. Non seulement tout ce qui se fait dans le Workbench n\u00e9cessite un code de transaction (m\u00eame un utilisateur n&rsquo;appelle pas un programme, mais acc\u00e9de \u00e0 celui-ci par le biais d&rsquo;une transaction). Mais supposons de surcro\u00eet que je parle \u00e0 un consultant ou administrateur SAP, et lui demande quel genre de transactions r\u00e9alise tel module afin de donner un nom \u00e0 celui-ci pour mes analyses et le tableau de bord. Bien s\u00fbr, je suis en train de parler de transaction fonctionnelle : cr\u00e9ation d&rsquo;un client, impression des factures, etc. Mais mes interlocuteurs vont le plus souvent comprendre &lsquo;transaction SAP&rsquo; et non pas fonctionnelle, ce qui peut provoquer un malentendu.<\/p>\n<p>J&rsquo;ai d\u00e9j\u00e0 mentionn\u00e9 que le vocabulaire est un peu particulier. Mais bon, ce n&rsquo;est pas comme parler Klingon (c&rsquo;est du SAP, pas Star Trek).<\/p>\n<h3><strong>Areas SAP<\/strong><\/h3>\n<p>Un autre point important \u00e0 conna\u00eetre, car nous aurons quelques questions \u00e0 ce sujet dans le prochain post : les domaines ou modules SAP. Nous avons vu que SAP secompose de diff\u00e9rents modules ou domaines fonctionnels encore appel\u00e9es &lsquo;areas&rsquo;. Les plus connus sont FICO (Financial &amp; Controlling), RH (Ressources Humaines) ou SD (Sales &amp; Distribution) et PP (Production Planning).<\/p>\n<p>Bien s\u00fbr, tous ces modules se parlent entre eux : une facture en SD passera dans un compte dans FI, mais ils sont assez complexes, n\u00e9cessitent une connaissance sp\u00e9cifique, et donc toutes les \u00e9quipes ne travaillent pas dans les m\u00eames domaines SAP, et n&rsquo;utilisent pas toutes le m\u00eame serveur SAP. Donc vous n&rsquo;allez pas parler, par exemple, de l&rsquo;application &lsquo;Achats&rsquo;, mais FI, CO, AM (Asset Management), MM (Material Management) pour la gestion des stocks, etc.<\/p>\n<p>Ceci est important parce que, comme nous devons extraire le code ABAP depuis un serveur :<\/p>\n<ul>\n<li>Des serveurs diff\u00e9rents vont n\u00e9cessiter plus qu&rsquo;une extraction unique.<\/li>\n<li>Le code sera toujours organis\u00e9 par &lsquo;areas&rsquo; SAP. Et donc, an niveau sup\u00e9rieur de notre tableau de bord Sonar, nous allons retrouver les domaines FI, CO, HR, etc.<\/li>\n<\/ul>\n<h3><strong>Les objets SAP<\/strong><\/h3>\n<p>Je vais pas pr\u00e9senter tous les types d&rsquo;objets ABAP, l\u00e1 encore il ne s&rsquo;agit pas de faire un cours SAP, et de toutes fa\u00e7ons, nous allons les voir plus en d\u00e9tail lorsque nous commencerons les analyses. Maintenant, quand vous allez rencontrer des &lsquo;ABAPers&rsquo; pour voir avec eux comment lancer un processus d&rsquo;analyse, ils peuvent vous demander quels sont les objets qui sont analys\u00e9s ou non. En voici quelques uns \u00e0 conna\u00eetre:<\/p>\n<ul>\n<li>Classe : bien qu&rsquo;il y ait une version objet du langage ABAP, une classe se r\u00e9f\u00e8re \u00e0 un &lsquo;package&rsquo;, c&rsquo;est \u00e0 dire un ensemble de fichiers qui impl\u00e9mentent une fonctionnalit\u00e9 (ou un processus technique). Vous pouvez parler de module aussi, mais il y a un risque de confusion avec une &lsquo;area&rsquo; SAP. Dans tous les cas, vous devez savoir qu&rsquo;une classe ABAP n&rsquo;est pas l&rsquo;\u00e9quivalent d&rsquo;une classe Java.<\/li>\n<li>Report \/ Module pool : un programme est essentiellement une interface qui permet \u00e0 un utilisateur d&rsquo;entrer des donn\u00e9es pour produire un rapport ou une s\u00e9rie plus complexe de processus (g\u00e9n\u00e9ralement r\u00e9utilisables) pour interagir avec un utilisateur nomm\u00e9 &lsquo;Module pool&rsquo; ou aussi &lsquo;Function pool&rsquo;.<\/li>\n<li>Form: il ne s&rsquo;agit pas d&rsquo;un \u00e9cran, comme on l&rsquo;appelle parfois ainsi dans d&rsquo;autres langages, mais d&rsquo;un sous-programme appel\u00e9 par un PERFORM.<\/li>\n<li>Include: un traitement qui peut \u00eatre appel\u00e9 (pour inclusion) dans un programme, tel qu&rsquo;une Copy Cobol.<\/li>\n<\/ul>\n<p><em>Walter : Dans ton \u00e9quipe Qualit\u00e9, 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&rsquo;adapter \u00e0 ce langage nouveau pour eux ? Quel est le niveau d&rsquo;effort ? Faut-il beaucoup de temps pour y parvenir?<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>La question est importante, mais n\u00e9cessite une nuance: il faut tenir compte de deux t\u00e2ches distinctes : l&rsquo;analyse et l&rsquo;interpr\u00e9tation des r\u00e9sultats.<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>L&rsquo;adaptation n\u00e9cessaire pour qu&rsquo;une personne mette en \u0153uvre une analyse ABAP ABAP est assez simple, un ou deux jours au plus, selon qu&rsquo;elle conna\u00eet ou non Sonar pour l&rsquo;avoir d\u00e9j\u00e0 utilis\u00e9 avec d&rsquo;autres technologie.<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>La t\u00e2che d&rsquo;interpr\u00e9tation des r\u00e9sultats du test n\u00e9cessite g\u00e9n\u00e9ralement une compr\u00e9hension plus profonde de la technologie ABAP, et peut s&rsquo;acqu\u00e9rir en une ou deux semaines, avec le soutien d&rsquo;un sp\u00e9cialiste de ce langage qui poss\u00e8de un minimum de connaissances des bonnes pratiques de programmation. Ainsi, nos \u00e9quipes d&rsquo;analyse de code sont constitu\u00e9s d&rsquo;experts dans diff\u00e9rentes technologies (ABAP, Java, PL\/SQL, etc.)<\/em><br \/>\n<em> <\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Il y a d&rsquo;autres activit\u00e9s telles que la cr\u00e9ation de nouvelles r\u00e8gles ou mesures dans un plugin, qui exigent une compr\u00e9hension profonde du processus de cr\u00e9ation ainsi que de la technologie en question.<\/em><\/p>\n<p>Merci Walter. Il est vrai que les bonnes pratiques de programmation ABAP ne sont pas toujours aussi normalis\u00e9es que pour d&rsquo;autres technologies. Nous verrons cela dans les prochains articles.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s avoir d\u00e9but\u00e9, dans le post pr\u00e9c\u00e9dent, cette s\u00e9rie qui traite de l&rsquo;analyse de code ABAP, avec l&rsquo;aide de Walter, Directeur Qualit\u00e9 de Vision IT et sp\u00e9cialiste des environnements SAP, nous allons voir aujourd&rsquo;hui ce qu&rsquo;il est n\u00e9cessaire de conna\u00eetre pour impl\u00e9menter un processus d&rsquo;analyse de code ABAP avec Sonar.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-236","post","type-post","status-publish","format-standard","hentry","category-sonar-abap"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/236"}],"collection":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/comments?post=236"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/236\/revisions"}],"predecessor-version":[{"id":237,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/236\/revisions\/237"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=236"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}