比较选择选项与范围

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条回答
亦是此间程序员
2020-09-04 01:22 .采纳回答

通常,在您要使用S_PARTNR时(在SELECT或条件语句中),并添加其他范围,即可达到此要求:

 SELECT COUNT(*)FROM ...  
合作伙伴IN s_partnr
和合作伙伴IN lr_range ...
如果sy-subrc = 0。 信息"错误,您的选择是错误的" TYPEE。 ENDIF。

请注意,您的示例不需要范围,可以使用运算符BETWEEN编写:

 SELECT COUNT(*)FROM ...
            s_partnr中的合作伙伴
              和合作伙伴'0010000000'和'0069999999'之间... 

一周热门 更多>