Select-options restrict

博客讨论了在SAP ABAP中使用SELECT-OPTIONS时如何限制用户仅能输入单个值或值区间。通过示例代码展示了如何配置限制条件,以避免多值输入,并强调了启用所需选项的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写程序定义选择界面参数时,离不开parameters和select-options,今天我们就来聊一聊使用select-options时的一些限定情况。

现有case如下,一个计划录入的程序,在显示计划选项下,需指定一天或者一段时间来展示对应的计划数据,也就是说只允许输入单值或者区间

我们第一印象是不是想在定义select-options时增加NO-EXTENSION来减少上图的多输入选项?

那这样就能满足只能输入单值或者区间了吗?然并卵,并不是这样的,当我们在low值里双击时,即可指定跟多输入按钮一样的选项

从上图我们可以看出,既有选择选项(SIGN为I),也有选择中排除选项(SIGN为E),总结起来,大概就是下图中这些选项(本例日期类型,所以下图中某些选项属性本身是没有的)

那么,是不是意味着,我需要哪些选项,我就启用哪些选项呢,yes,在这里给你一个大大的赞,确实是这样的。

本例中只需要单值和区间,也就是说,只需要EQ和BT,并且Sign为I,代码示例如下:

  DATA: ls_restrict TYPE sscr_restrict,
        ls_optlist  TYPE sscr_opt_list,
        ls_ass      TYPE sscr_ass.


  ls_optlist-name       = 'OBJECTKEY'.
  ls_optlist-options-eq = abap_true.   " 单值
  ls_optlist-options-bt = abap_true.   " 区间
  APPEND ls_optlist TO ls_restrict-opt_list_tab.


  ls_ass-kind           = 'S'.
  ls_ass-name           = 'S_PERID'.   " 选择字段
  ls_ass-sg_main        = 'I'.         " Sign
  ls_ass-sg_addy        = space.
  ls_ass-op_main        = 'OBJECTKEY'.
  APPEND ls_ass TO ls_restrict-ass_tab.


  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
    EXPORTING
      restriction            = ls_restrict
    EXCEPTIONS
      too_late               = 1
      repeated               = 2
      selopt_without_options = 3
      selopt_without_signs   = 4
      invalid_sign           = 5
      empty_option_list      = 6
      invalid_kind           = 7
      repeated_kind_a        = 8
      OTHERS                 = 9.

如果你在学习或者项目过程中遇到有意思的问题或者想进行知识分享,记得关注我们“菜鸟之家”的公众号哦,关注之后添加管理为好友,由管理邀请进群!

往期推荐

S4系统中如何锁定事务代码

ERP:自开发程序涉及权限问题处理-Tcode权限和数据管理

Script form打印Logo问题

SAP:清除系统缓存/快捷退出debug

SAP:解决SMARTFORM中因‘-’导致字符串折行的问题

STRANS高效导出数据到WORD/EXCEL

运行MRP(MD01)屏幕不可编辑增强

smartforms以PDF打印预览

运行MRP(MD01)用户出口增强

SAP通过函数READ_TEXT读取长文本

财务开发必备ABAP语法之 DO VARYING

SAP选择屏幕设置变式实现动态日期

你不知道的视图事件增强

释放的TR自动接收

销售订单——抬头出具发票计划状态计算逻辑

批次特性类里的增强

CI_COBL结构激活不一致问题

数据表的代理对象引发的取数问题

凭证预制时行项目增加成本中心描述列

采购订单增强未生效问题

根据结构动态生成内表的梗

range table取数一步到位法

数据存在性校验小记

打不开soamanager,快看这!!!

小手点一点关注,顾问路上不迷路!

扫描二维码

获取更多精彩

菜鸟家园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值