You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过POPUP_GET_VALUES获取弹窗输入并做百分比验证?

解决方案:适配POPUP_GET_VALUES实现单个变量存储+百分比输入限制

我之前刚好处理过一模一样的需求!POPUP_GET_VALUES确实要求把输入值存到内表里,但咱们可以用一个小技巧绕开这个限制,把值转存到单个变量里,同时还能加上百分比的输入校验。下面是具体的实现步骤和代码:

核心思路

我们可以利用系统标准的sval结构创建一个只包含单个字段的临时内表,将这个内表传给POPUP_GET_VALUES函数。用户在弹窗输入完成后,再从内表中取出唯一的那条记录,赋值给我们的目标变量。同时通过配置字段属性和额外校验,实现百分比的输入限制。

完整可运行代码示例

REPORT z_popup_single_percent_input.

* 定义存储最终百分比的单个变量
DATA: gv_target_percent TYPE p DECIMALS 2.

* 用于POPUP_GET_VALUES的临时内表和工作区
DATA: gt_input_fields TYPE TABLE OF sval,
      gs_input_field  TYPE sval.

* 1. 配置弹窗的输入字段参数
gs_input_field-tabname = 'DUMMY_TABLE'. " 虚拟表名,无需真实存在
gs_input_field-fieldname = 'PERCENT_VALUE'.
gs_input_field-fieldtext = '请输入百分比 (%)'.
gs_input_field-type = 'P'. " 设置为数值类型,避免非数字输入
gs_input_field-decimals = 2. " 保留两位小数,适配百分比精度
gs_input_field-length = 5. " 限制输入长度(例如最多99.99)
gs_input_field-low = '0'. " 可选:设置最小值,弹窗自动限制
gs_input_field-high = '100'. " 可选:设置最大值,弹窗自动限制
APPEND gs_input_field TO gt_input_fields.

* 2. 调用弹窗函数获取用户输入
CALL FUNCTION 'POPUP_GET_VALUES'
  EXPORTING
    popup_title = '百分比输入' " 弹窗标题
  TABLES
    fields      = gt_input_fields " 传入配置好的字段表
  EXCEPTIONS
    error_in_fields = 1
    OTHERS          = 2.

IF sy-subrc = 0.
  * 3. 从内表中取出值,转存到单个变量
  READ TABLE gt_input_fields INTO gs_input_field INDEX 1.
  IF sy-subrc = 0.
    gv_target_percent = gs_input_field-value.

    * 额外校验:确保输入在合法百分比范围内(如果没设置low/high的话)
    IF gv_target_percent < 0 OR gv_target_percent > 100.
      MESSAGE '请输入0-100之间的合法百分比' TYPE 'E' DISPLAY LIKE 'I'.
    ENDIF.

    * 测试输出结果
    WRITE: / '您输入的百分比为:', gv_target_percent, '%'.
  ENDIF.
ELSE.
  MESSAGE '弹窗输入过程中出现异常' TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.

关键细节说明

  • 临时内表适配:系统标准结构sval完全满足POPUP_GET_VALUES的参数要求,不需要额外自定义结构。tabname填虚拟名称即可,函数不会校验该表是否真实存在。
  • 百分比输入限制:
    • 通过type = 'P'和decimals = 2确保输入是带小数的数值,过滤非数字输入;
    • 设置low和high属性可以让弹窗自动限制输入范围(0-100),用户无法输入超出范围的值;
    • 后续的IF判断作为兜底校验,确保极端情况下的输入合法性。
  • 值转存单个变量:因为我们只配置了一个输入字段,内表里只会有一条记录,直接通过READ TABLE ... INDEX 1就能快速取出值并赋值给目标变量。

内容的提问来源于stack exchange,提问作者xakal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:42:56