ABAP限制SELECT-OPTIONS


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

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

img

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

img

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

img

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

img

那么,是不是意味着,我需要哪些选项,我就启用哪些选项呢,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.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM