IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

Améliorer la qualité du code


Sujet :

SAP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Améliorer la qualité du code
    Bonjour,

    Quelqu'un a-t-il une liste des choses à ne pas faire dans du code ABAP ?

    Mon but est d'éviter d'insérer des bugs potentiels dans mes programmes et d'avoir des problèmes de performance. De plus, j'ai récupérer du code écrit par d'autres et je voudrais vérifier s'il a été écrit correctement afin de m'éviter de mauvaise surprise.

    Où puis-je trouver de la doc sur la qualité du code ?

    D'avance merci.

  2. #2
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par jeroc Voir le message
    Bonjour,

    Quelqu'un a-t-il une liste des choses à ne pas faire dans du code ABAP ?

    Mon but est d'éviter d'insérer des bugs potentiels dans mes programmes et d'avoir des problèmes de performance. De plus, j'ai récupérer du code écrit par d'autres et je voudrais vérifier s'il a été écrit correctement afin de m'éviter de mauvaise surprise.

    Où puis-je trouver de la doc sur la qualité du code ?

    D'avance merci.
    Salut,

    il y a plein de choses à ne pas faire en ABAP. A titre d'exemple :
    - faire des requêtes sans inclure les indexes
    - faire des tables internes trop volumineuses
    - imbriquer des tonnes de select/and select
    - ne pas tester les codes retour des modules fonction
    - faire des select for all entries pour une table vide.
    - attaquer des objets sans les avoir verrouillés
    - utiliser des type au lieu des like dans les déclarations ce qui provoque du code difficile à maintenir
    - a l'inverse, utiliser like ou structure dans un contexte objet

    Bref le mieux reste de systématiquement :
    - utiliser des conventions de nommage
    - passer le code inspector au plus strict
    - passer la se30

    Et après, il y a plein d'autres choses à apprendre au cas par cas dans la doc officielle
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Dans les 2 derniers points de la liste, sur l'utilisation de TYPE et de LIKE, je ne comprends pas bien dans quels cas utiliser plutôt l'un que l'autre. Quelles sont les conséquences ?

  4. #4
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    POur le contexte objet : SAP oblige l'utilisation de type dans le contexte d'un code objet.
    POur l'avant dernière, soit une table A avec les champs
    ch1 type A
    ch2 type B
    Toi derrière tu veux récupérer les données de ch1 dans une variable. Si tu défini ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     data : mavariable type A.
    Ca marche. Seulement demain pour une raison x ou y, on vient faire une maintenance de la table et on la fait ainsi :
    ch1 type C
    ch2 type D
    Ton code qui fait toujours référence à type A va foirer ... bon courage pour le maintenir.
    En revanche si tu avais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DATA : ma variable like TABLEA-ch1.
    Meme après la maintenance de la table, ton code restait vrai...
    C'est très bête mais c'est des astuces qui coutent parfois très cher ...
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Donc, dans un Form ou une fonction, il vaut mieux utiliser like et dans une méthode il faut utiliser type.

    Pour revenir à ta liste, à partir de quel volume peut-on raisonnablement considérer qu'une table interne est trop volumineuse ?

    Une autre question me vient au sujet des ASSIGN : on m'a dit qu'il était possible de faire des références à une variable définie dans un autre programme. Est-ce vrai ? C'est dangereux si l'autre programme est modifié, non ? A quoi puis-je voir qu'il y a une telle référence ? (j'ai peu d'expérience en ABAP, comme tu peux le remarquer, et donc je n'en ai jamais vu)

  6. #6
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Salut à tous,

    J'aurais une question sur ce que t'as cité plus haut cladsam:
    Citation Envoyé par cladsam Voir le message
    il y a plein de choses à ne pas faire en ABAP. A titre d'exemple :
    [...]
    - imbriquer des tonnes de select/and select
    Le mieux ne serait pas plutot d'interdire complètement de mettre en place des SELECT/ENDSELECT?
    Parce que d'un, en débugage ça dump 9 fois sur 10 donc déjà c'est une bonne prise de tête pour tester nos traitements et puis de deux, c'est consommateur de temps car on multiplie l'accès à la base donc coté perf, c'est pas génial...
    Ne serait-il pas plus judicieux de privilégier les SELECT[...] FOR ALL ENTRIES?
    Ca limite le nombre d'accès aux bases, et pour croiser les données, on travail avec des données en mémoire donc accès 1000 fois plus rapide.

    J'attends ton avis.

    @++.
    Boaf...signature <= ça suffira ça ??

  7. #7
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Bah mon avis est simple : je n'utilise jamais de select / and select !!! Je deteste. Si je dois faire un traitement particulier pour chaque ligne, je fais le for all entries puis je fais un loop sur la table.
    Je parlais de l'imbrication du select /and select plutot pour la partie de la question qui dit

    Citation Envoyé par jeroc"
    et je voudrais vérifier s'il a été écrit correctement afin de m'éviter de mauvaise surprise.
    Bah la clairement s'il voit une imbrication de cette horrible commande, il sait qu'il peut épurer ... après je ne prétend pas que l'on ait la meilleure vision qui soit, peut-être certains ont ils d'excellents arguments pour justifier l'existence de cette instruction ?
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  8. #8
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Merci pour ta réponse cladsam. Ravie de voir qu'on partage la même vision des choses, 'fin point de vue accès à la base en tout cas ^_^.

    Sinon comme tu dis, chacun sa vision des choses mais c'est vrai que de mon coté, j'ai rien trouvé de mieux que le SELECT [...] FOR ALL ENTRIES suivi d'un LOOP, voire LOOP indexé s'il y a lieu qu'il y en est, si y'a besoin de traiter les données récupérées.

    Bonne fin de journée,
    @++.
    Boaf...signature <= ça suffira ça ??

  9. #9
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 313
    Points : 375
    Points
    375
    Par défaut
    juste petite précision
    le select/endselect fait un accès base a chaque itération
    le for all entries découpe la table par paquets de 5 enregistrements (traces ST05 pour preuve)
    conséquences: avant le for all entries il faut: trier la table et supprimer des doublons

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Bonjour,

    Pourquoi conseillez-vous de passer la SE30 à quoi sert-elle?

    salutations

  11. #11
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Cette transaction permet de mesurer la durée d'execution d'un programme.

    Si on constate que la durée de traitement est excessive, on essait de voir si il n'y aurait pas un peu, voire beaucoup, d'optimisation à faire.

    Voila.
    Boaf...signature <= ça suffira ça ??

Discussions similaires

  1. Réponses: 25
    Dernier message: 26/06/2015, 13h12
  2. [Visual Web] visual web et qualité du code
    Par robert_trudel dans le forum NetBeans
    Réponses: 4
    Dernier message: 11/12/2006, 12h11
  3. qualité du code
    Par clementphp dans le forum Langage
    Réponses: 6
    Dernier message: 10/07/2006, 14h22
  4. Améliorer la qualité d'impression d'une form
    Par akabane dans le forum Delphi
    Réponses: 2
    Dernier message: 08/07/2006, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo