Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > ERP > SAP
SAP Forum d'entraide sur SAP et sur la programmation avec le langage ABAP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2011, 11h50   #1
Inscrit
 
Consultant SAP
Inscription : novembre 2010
Messages : 276
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : novembre 2010
Messages : 276
Points : 179
Points : 179
Par défaut Arrondi au nombre entier le plus proche

Bonjour à Tous,

j'aurais besoin d'arrondir un nombre décimal en nombre entier le plus proche.

Pour cela j'utilise la fonction : ROUND.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FORM f542_round CHANGING l_value TYPE pc2b5-anzhl.
  CALL FUNCTION 'ROUND'
    EXPORTING
      decimals      = 0
      input         = l_value
      sign          = '+'
    IMPORTING
      output        = l_value
    EXCEPTIONS
      input_invalid = 1
      overflow      = 2
      type_invalid  = 3
      OTHERS        = 4.
ENDFORM .
Le problème de cette fonction est que je dois spécifier vers quelle valeur je dois effectuer mon arrondi :
sign = '+', Arrondi Sup
sign = '-', Arrondi Infé
Alors, que moi j'aimerais qu'il me le détermine tout seul.

Exemple, en entrée j'ai :
l_value = 12.10, en sortie j'aurais 12.00
ou:
l_value = 12.90, en sortie j'aurais 13.00
Avec cette fonction 'ROUND' je vais être obligé de gérer moi même le "sign" à la mano et donc, faire un loop d'indexation sur la chaine de caractère et regarder si le nombre après la virgule est supérieur ou inférieur à 5 . (beurk!)

Y a t il une autre fonction qui permet de faire ça simplement.

Merci.
heliy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 13h49   #2
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
Salut,

Tu n'es pas obligé(e)de passer par une boucle d'indexation, t'as la fonction native frac() qui te retourne la partie décimale d'un nombre.

Sinon, regarde si la fonction native round() existe sur ton système, il est possible qu'elle soit nouvelle.
À ce que j'ai pu lire, ça devrait correspondre... à tester si c'est possible.
ABAP Keyword Documentation - round, rescale - Rounding Functions
__________________
Boaf...signature <= ça suffira ça ??
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 14h25   #3
Membre confirmé
 
Inscription : octobre 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 209
Points : 211
Points : 211
Hello,

pour moi c'est natif ABAP
c'est a dire il suffit juste que tu affectes ton chiffre décimal à une variable de type entier

si tu veux arrondir au supérieur ou à l'inférieur, tu as aussi les commandes ceil(...) et floor(...)
splash1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h21   #4
Nouveau Membre du Club
 
Avatar de txupi
 
Homme Kévin Grenèche
Consultant SAP
Inscription : avril 2009
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Kévin Grenèche
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : avril 2009
Messages : 49
Points : 33
Points : 33
Oui comme le dit splash1 c'est natif.
Il suffit juste d'affecter ta valeur à une variable de type entier.
txupi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 08h44   #5
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
Doc type P -> type I : http://help.sap.com/abapdocu_702/en/...ion_type_p.htm
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h17.


 
 
 
 
Partenaires

Hébergement Web