• SAP状态栏中进程条实现[SAPGUI_PROGRESS_INDICATOR/CL_PROGRESS_INDICATOR]


    在执行一些数据量大的程序时,通常在程序下方的状态栏中加一个秒表用来显示进度,供用户了解程序运行到什么程度。实现方法有如下两种:

    1, SAPGUI_PROGRESS_INDICATOR

    常用而古老的方法,调用SAPGUI_PROGRESS_INDICATOR函数,指定函数的两个参数

    • percentage :百分比的数值,用来控制秒表的指针,0到100之间的数字。
    • text:状态栏显示的文本

    2017-02-13_14-45-57

    例子代码:

    选择画面输入循环次数,每次循环等待1秒,然后更新进步条的秒表指针和文本。

    REPORT ztest_progress.
    
    DATA: g_perc TYPE p.
    DATA: g_stxt TYPE string.
    DATA: g_sperc(3) TYPE c.
    
    PARAMETERS: p_times TYPE i DEFAULT  5.
    
    g_perc = 0.
    DO p_times TIMES.
      WAIT UP TO 1 SECONDS.
      CLEAR:g_stxt.
      g_perc = sy-index / p_times * 100.
      g_sperc = g_perc.
      CONCATENATE '已经完成了'  g_sperc '%' INTO g_stxt.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          percentage = g_perc     "百分比的数值,用来控制秒表的指针。
          text       = g_stxt.    "状态栏显示的文本。
    
    ENDDO.

    运行效果:

    2017-02-13_14-48-43

    2, CL_PROGRESS_INDICATOR

    SAP还提供了更方便快捷的类CL_PROGRESS_INDICATOR中的方法PROGRESS_INDICATE来实现这个进度条。

    2017-02-13_14-53-22

    这个类方法其实也是调用了SAPGUI_PROGRESS_INDICATOR函数,只不过是更友好的封装了一下。

    CL_PROGRESS_INDICATOR=>PROGRESS_INDICATE有两种显示模式:

    • 立即显示
    • 每隔10秒更新一下进度条

    通过参数i_output_immediately控制('X' = Display Progress Immediately ).

    立即显示的例子:

    PARAMETERS: p_times1 TYPE i DEFAULT  5. "Immediately
    
    DO p_times1 TIMES.
    
      cl_progress_indicator=>progress_indicate(
        EXPORTING
           i_text               = | Output immediately { sy-index } / { p_times1 } |
    *    i_msgid              = i_msgid    " Message Class (If I_TEXT is not transferred)
    *    i_msgno              = i_msgno    " Message Number (If I_TEXT is not transferred)
    *    i_msgv1              = i_msgv1    " Message Variable (Maximum of 50 Characters)
    *    i_msgv2              = i_msgv2    " Message Variable (Maximum of 50 Characters)
    *    i_msgv3              = i_msgv3    " Message Variable (Maximum of 50 Characters)
    *    i_msgv4              = i_msgv4    " Message Variable (Maximum of 50 Characters)
          i_processed          = sy-index    " Number of Objects Already Processed
          i_total              = p_times1    " Total Number of Objects to Be Processed
          i_output_immediately = abap_true    " X = Display Progress Immediately
    *  importing
    *    e_progress_sent      = e_progress_sent    " X = Progress Information Was Displayed
      ).
      WAIT UP TO 1 SECONDS.
    
    ENDDO.

    运行效果:

    2017-02-13_15-02-48

    每隔10秒显示的例子:

    PARAMETERS:  p_times1 TYPE i DEFAULT  20. "Once per 10 seconds.
    DO p_times1 TIMES.
    
      cl_progress_indicator=>progress_indicate(
        EXPORTING
           i_text               = | Output once per 10 seconds { sy-index } / { p_times1 } |
    *    i_msgid              = i_msgid    " Message Class (If I_TEXT is not transferred)
    *    i_msgno              = i_msgno    " Message Number (If I_TEXT is not transferred)
    *    i_msgv1              = i_msgv1    " Message Variable (Maximum of 50 Characters)
    *    i_msgv2              = i_msgv2    " Message Variable (Maximum of 50 Characters)
    *    i_msgv3              = i_msgv3    " Message Variable (Maximum of 50 Characters)
    *    i_msgv4              = i_msgv4    " Message Variable (Maximum of 50 Characters)
          i_processed          = sy-index    " Number of Objects Already Processed
          i_total              = p_times1    " Total Number of Objects to Be Processed
          i_output_immediately = abap_false    " X = Display Progress Immediately
    *  importing
    *    e_progress_sent      = e_progress_sent    " X = Progress Information Was Displayed
      ).
    
      WAIT UP TO 1 SECONDS.
    ENDDO.

    运行效果:

    2017-02-13_16-01-48

    以上。

  • 相关阅读:
    Android(安卓)全套开发资料视频+源码
    腾讯qlv视频转为MP4格式工具
    优酷爱奇艺视频转换为MP4格式工具
    JAVA全套资料含视频源码(持续更新~)
    PPT、Word、Excel模板免费下载
    图片下载
    aspx使用KindEditor副文本框插件出现检测到有潜在危险
    跨域请求
    WEUI滚动加载
    jq复制
  • 原文地址:https://www.cnblogs.com/datie/p/11435862.html
Copyright © 2020-2023  润新知