简体   繁体   English

使用 LET 从 itab 填充范围表

[英]Fill range table from itab using LET

I found this code for filling a range table (source is already offline):我找到了用于填充范围表的代码(源已经离线):

DATA   lr_vkorg   TYPE RANGE OF vkorg.
TYPES: lr_range_t TYPE RANGE OF vkorg.

lr_vkorg = VALUE lr_range_t(
          LET s = 'I'
              o = 'EQ'
          IN sign   = s
             option = o
             ( low = '1100' )
             ( low = '1200' )
             ( low = '1300' )
             ( low = '1400' )
             ( low = '1500' )
).

But instead of doing something like this:但不是做这样的事情:

( low = '1' )
( low = '2' )
...

I want to fill it with the values of an internal table ['1', '2', ...] .我想用内部表['1', '2', ...]的值填充它。
Does anyone have an idea how to do this?有谁知道如何做到这一点?

Update: This is how I did it based on the answer:更新:这是我根据答案做到的:

DATA:
  lt_itab       TYPE TABLE OF string,
  lt_range_itab TYPE RANGE OF string
  .

APPEND '1'  TO lt_itab.
APPEND '2'  TO lt_itab.
APPEND '3'  TO lt_itab.
APPEND '4'  TO lt_itab.

lt_range_itab = VALUE #(
  FOR <ls_itab> IN lt_itab
  ( sign = 'I'
    option = 'EQ'
    low = <ls_itab> )
).

You can declare macro utilizing your declared structures like this:您可以使用您声明的结构来声明宏,如下所示:

DEFINE range.
 lr_vkorg = VALUE lr_range_t( BASE lr_vkorg ( sign = 'I' option = 'EQ' low = &1 ) ).
END-OF-DEFINITION.

And then fill your ranges with this one-liner:然后用这个单行填充你的范围:

range: '1100', '1200', '1300', '1400', '1500', '1600'.

If we speak about filling range from itab, use this statement:如果我们谈论 itab 的填充范围,请使用以下语句:

lr_vkorg = VALUE #( FOR ls_vkorg IN gt_vkorg
                  ( sign = 'I'
                    option = 'EQ'
                    low = ls_vkorg-vkorg )
                  ).
lr_vkorg = VALUE # ( sign   = 'I'  option = 'EQ' ( low = '1100' ) ( low = '1200' )
             ( low = '1300' ) ( low = '1400' )   ( low = '1500' ) ). 

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

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