Publiée le February 01, 2010 16:02

| nombre de lecture : 6159
je vous propose une astuce simple pour avoir la montre affiché avec l'état d'avancement d'un process....

Pour cela on fait appel à une fonction (SM37) SAPGUI_PROGRESS_INDICATOR dans notre boucle ...
Dans un projet réel cette fonction sera incluse dans la dernière boucle de vos loop at TABLE_INTERNE into WORK_AREA.
Et pour etre complet nous calculons le pourcentage d'avancement. Pour cela on applique une règle de 3. On extrait le nb de record traité dans la table interne, par exemple avec un DESCRIBE.
La régle est :
pourcent = ( compteur dans la boucle * 100 ) / nombre total de record qui seront traités.
Mais passons à la pratique avec un code exemple :
REPORT ZJFOPROGRESS.
DATA: nbLoop type i value 0,
cpLoop type i value 0,
pourcentLoop type i value 0,
strNbLoop type string.
DATA: strMessage type STRING value ''.
*** INITIALISER le nb de boucles que vous voulez tester.
nbLoop = 1000.
DO nbLoop TIMES.
cpLoop = cpLoop + 1.
*** calculer le pourcentage de progression.
pourcentLoop = ( cploop * 100 ) / nbLoop.
*** génerer le text du message
MOVE cpLoop to strNbLoop.
CONCATENATE 'nous traitons le record n°' strNbLoop into strMessage.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = pourcentLoop
TEXT = strMessage.
*** Votre traitement
write '*'.
*** une boucle pour ralentir le programme (a remplacer).
DO 1000000 times. ENDDO.
ENDDO.
Voilouuuuuu