"
Apoiado por

Indicador de progresso

Sabes aquelas barras de progresso que vão indicando quanto falta para terminar um processo? Aquelas que às vezes quando chegam ao fim voltam ao princípio e te deixam frustrado e baralhado sem entender para que servem afinal? Eis como as podes usar num programa ABAP.


DATA: lv_texto TYPE char40,
      lv_valor type i.

DO 10 TIMES.

  WAIT UP TO 1 SECONDS.

  CLEAR lv_texto.
  lv_valor = sy-index * 10.
  lv_texto(3) = lv_valor.
  CONCATENATE lv_texto '%!' INTO lv_texto.
  CONCATENATE 'Já só falta' lv_texto INTO lv_texto SEPARATED BY space.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = lv_valor
      text       = lv_texto.

ENDDO.

Nota que o cronómetro vai ficando preenchido. Infelizmente o comando WAIT UP TO N SECONDS está limitado a inteiros e por isso não sei como se pode fazer uma contagem mais rápida. Mas já é melhor que nada.

E atenção ao comando WAIT porque faz um COMMIT à base de dados.

O Abapinho saúda-vos.

4 comentários a “Indicador de progresso”

  1. Rodrigo Diz:

    Olá, acompanho seu site durante a algum tempo já, pois me ajudou a esclarecer algumas dúvidas que eu possuia.
    Agora possuo uma outra.
    Há a possibilidade de interromper a execução de um programa durante um tempo determinado sem a utilização do WAIT?
    Não posso usar o WAIT justamente pelo COMMIT que ele faz.
    Obrigado pela ajuda.

  2. admin Diz:

    Olá Rodrigo,

    Escrevi há uns tempos um artigo sobre isso. Vê lá se te ajuda:
    https://abapinho.com/2011/06/soneca/

    Abraço,
    Nuno

  3. Rodrigo Diz:

    Olá Nuno,

    esso me ajudou perfeitamente.
    A função ENQUE_SLEEP foi perfeita no meu caso.

    Estava pensando em utilizar um DO 20000000 TIMES que levava em torno de 1 segundo e alguns milésimos.

    Muito obrigado.

  4. admin Diz:

    Que bom que o Abapinho te ajudou!

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).