Select-options restrict

写程序定义选择界面参数时,离不开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,快看这!!!

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

扫描二维码

获取更多精彩

菜鸟家园

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RESTRICT 是一种数据库约束,用于确保在主表中删除或更新行时,如果关联表中存在相关行,则阻止删除或更新操作。当使用 RESTRICT 时,删除或更新操作将被拒绝,直到关联表中的相关行被删除或更新为止,以保持数据的完整性和一致性。 RESTRICT 可以应用于 FOREIGN KEY 约束和 CHECK 约束。在 FOREIGN KEY 约束中,RESTRICT 将阻止删除或更新主表中的行时,存在关联表中的相关行。在 CHECK 约束中,RESTRICT 将阻止更新主表中的行时,CHECK 约束条件不满足的情况。 下面是一个示例,展示 RESTRICT 约束的用法: ``` CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE RESTRICT ); ``` 在这个示例中,orders 表中的 customer_id 列是一个外键,引用了 customers 表中的 customer_id 列。ON DELETE RESTRICT 子句指定了在 customers 表中删除与 orders 表中的行相关联的 customer_id 时,如果存在关联表中的相关行,则阻止删除操作。 同样,在 UPDATE RESTRICT 子句中指定的情况下,如果 customers 表中的 customer_id 列被更新,orders 表中的相关行也会被阻止更新操作。 需要注意的是,RESTRICT 约束可能会导致操作无法完成,因此应该谨慎使用。如果需要删除或更新行,但又不能使用 RESTRICT 约束,可以考虑使用 CASCADE 约束或其他适当的约束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值