比较选择选项与范围

2020-09-04 00:49发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我有一个要求,希望排...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个要求,希望排除所有不在0010000000和0069999999之间的合作伙伴编号。一种简单的方法是填写范围并比较Select-Options中的所有值:

将初始行追加到lr_range ASSIGNING  -sign ='I'。
    -option ='NB'。
    -low ='0010000000'。
    -high ='0069999999'。

   如果s_partnr不是INITIAL。
     在s_partnr []处分配。


       如果 -low不是初始值并且
          -低IN lr_range []。
         pi_error = abap_true。
         出口。
       万一。


       如果 -high不是初始值,并且
          -高IN lr_range []。
         pi_error = abap_true。
         出口。
       万一。


     结局。
   万一。
 

(" -low is NOT INITIAL"是为了避免将空值与范围进行比较)。

但是这种方式并没有利用范围背后的所有逻辑,这意味着如果用户在Select-Options中输入" sign = I option = GT low = 0010000008 high = empty",则要求 不会实现,因为它将包含高于0069999999的值。

我尝试了以下操作:

 LOOP AT s_partnr []分配。

       IF  IN lr_range []。  "带或不带括号
         pi_error = abap_true。
         出口。
       万一。

     结局。
 

没有工作。 我认为,以这种方式可以将Select-Option值视为一个范围,但是正在比较的值是整个工作区(例如:IBT0000000009999999999)。

你能帮我吗?

提前谢谢!

4条回答
太Q了
2020-09-04 01:44

或此

数据gv_partner类型bu_partner。
 数据lt_range类似于lr_range的表。
 数据lt_partner2 bu_partner的类型表。
 SELECT-OPTIONS:gv_partner的lr_range。
 选择开始。
 在lt_range ASSIGNING FIELD-SYMBOL()后面加上首行。
    -sign ='I'。
    -option ='NB'。
    -low ='0010000000'。
    -high ='0069999999'。

   从but000 SELECT伙伴到表@data(lt_partner)
     @lr_range中的伙伴。

 循环至lt_partner INTO DATA(ls_partner),其中lt_range中的伙伴。
 将ls_partner-partner附加到lt_partner2。
 结局。
 

一周热门 更多>