Consultance SAP
  
 English (United States) Français (France)
Register  
 
Wednesday, February 22, 2012
Publicité
Publicité
Articles
26

Si vous avez besoin de faire une pause dans votre programme ABAP j'ai deux solutions

Des pauses en secondes :

FORM MYDELAYINSECOND
USING nbofseconds type I.

    DATA: TIM LIKE SY-UZEIT.

    TIM = SY-UZEIT.
    TIM = TIM + nbofseconds.
    DO.
      GET TIME.
      IF TIM < SY-UZEIT.
        EXIT.
      ENDIF.
    ENDDO.

ENFORM.

Des pauses en micro secondes :



FORM DELAYINMICROSECOND   using mydelay type INT4.
  DATA: myTime TYPE INT4, mycurrenttime TYPE INT4.
  GET RUN TIME FIELD mytime.
  mytime = mytime + mydelay.
  DO.     GET RUN TIME FIELD mycurrenttime.
   IF myTime < mycurrenttime.
     EXIT.
   ENDIF.
 ENDDO.
 ENDFORM.
Actions: E-mail | RSS comment feed |

Comments

Tuesday, March 02, 2010 7:21 AM
Et l'instruction de pause?
Il n'y a pas un wait qui manquerait?

# Datawolf
Tuesday, March 02, 2010 7:33 AM
WAIT UP TO cnt SECONDS. pour les pauses en secondes

Qui a besoin de pauses en microsecondes ?

# jfo
Tuesday, March 02, 2010 8:50 AM
Bah moi j'ai eu besoin de faire un low balancing qui fonctionne en micro seconde... Oui j'ai oublié le wait up to x SECONDS...
# Datawolf
Tuesday, March 02, 2010 9:46 AM
Rien à voir avec les délais, c'est un conseil d'ordre général pour tous les langages: remplace tes x = x + y par add y to x
-> tu gagnes en lisibilité
-> tu gagnes en performance (pas en ABAP mais en Java, en C, ...)
# jfo
Tuesday, March 02, 2010 12:42 PM
là je ne suis pas convaincu....
# Datawolf
Tuesday, March 02, 2010 1:16 PM
Tu gagnes en lisibilité, c'est indubitable (et ce seul argument devrait même suffire).
Pour le gain en performance il faut penser assembleur :
Quand tu fais x = x + y tu sauvegardes x dans un registre, tu calcules x+y dans un autre.
Quand tu fais add y to x tu utilises une seule instruction et un seul registre.
CQFD.
Tuesday, March 02, 2010 1:23 PM
Je vais me rajouter à cette discussion, même si elle me semble éloignée du sujet principal.

l'abap étant un langage interprété compilé, au même titre que JAVA.
Je ne suis pas sûr qu'il y ait une différence entre les 2 manières d'écrire, puisqu'à la fin ce sera certainement traduit en assembleur. Donc merci pour l'indication de l'information du traitement en assembleur, j'aurai appris quelque chose.

Enfin, pour ce qui est de la lisibilité, cela dépend de chacun. A part les compteurs, il y a peu de chance que j'utilise ADD, parce que j'aurai des calcules complexes à faire.

Il y a peu de personnes qui pensent assembleur en programmant de l'ABAP. Mais cela se défend.
# Datawolf
Tuesday, March 02, 2010 1:30 PM
En ABAP tu ne gagneras rien du tout avec le ADD. Mais çe te servira dans d'autres langages.
La lisibilité n'est pas à négliger. J'en connais qui utilisent encore des constantes OK et KO; à la fin de la journée, à force de lire des IF valeur = OK ou IF valeur = KO tu as besoin d'aspro !
# jfo
Tuesday, March 02, 2010 2:23 PM
DataWorlf.... j'aime ton propos alors le plus simple est de le mettre à l'épreuve d'un bench mark... Par contre pour la lisibilité je préfère 0 + 0 = la tete toto plutot que Add 0 to 0 = pas la tete à toto ... Pour le C# ton argument ne marche pas non plus...
# Datawolf
Tuesday, March 02, 2010 2:33 PM
Tant pis... pour toi.
# jfo
Tuesday, March 02, 2010 3:27 PM
lol ....

Post Comment

Only registered users may post comments.
  
 Print   


Les maques SAP, ABAP, BSP, Microsoft, .net, sont des marques déposées par leurs ayant-droiits.

Le site www.sap-integration.net est un site indépendant de SAP et de Microsoft et de tout autre éditeurs de logiciels ou fabricants de matériels.