简体   繁体   English

检查语句中的 IN 运算符

[英]IN operator in check statement

In SQ02 transaction, I want to use the check command.SQ02事务中,我想使用 check 命令。 Can I replace the OR operator with another operator, which shorts the command?我可以用另一个运算符替换OR运算符,这会缩短命令吗? Is there an operator like IN , which exists in SQL?是否有像IN这样的运算符,它存在于 SQL 中? The check command is something like: CHECK SKB1-BUKRS EQ '1000' or CHECK SKB1-BUKRS EQ '2001' or CHECK SKB1-BUKRS EQ '5221' .检查命令类似于: CHECK SKB1-BUKRS EQ '1000'CHECK SKB1-BUKRS EQ '2001'CHECK SKB1-BUKRS EQ '5221' Is there an operator like IN , which exists in SQL?是否有像IN这样的运算符,它存在于 SQL 中? CHECK SKB1-BUKRS in ('1000', '2001', '5221')

When I write in the Record Processing section: START-OF-SELECTION.当我在记录处理部分写:START-OF-SELECTION。 CHECK skb1-bukrs IN gt_ranges.检查 gt_ranges 中的 skb1-bukrs。

段记录处理

then I receive ABAP error:然后我收到 ABAP 错误: 错误信息

I am not an expert when it comes to SQ02 I can see however that there are sections for DATA and INITIALIZATION so the example below should work.我不是SQ02的专家,但我可以看到有DATAINITIALIZATION部分,所以下面的例子应该可以工作。 IN operator in ABAP (excluding OpenSQL of course) can only be used with ranges. ABAP 中的IN运算符(当然不包括 OpenSQL)只能用于范围。

Example:例子:

REPORT zzz.

DATA: gt_ranges TYPE RANGE OF bukrs.
TABLES: skb1.

INITIALIZATION.
  gt_ranges = VALUE #(
    ( sign = 'I' option = 'EQ' low = '1000' )
    ( sign = 'I' option = 'EQ' low = '2001' )
    ( sign = 'I' option = 'EQ' low = '5221' )
  ).

START-OF-SELECTION.
  CHECK skb1-bukrs IN gt_ranges.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM