将字符串混合输入拆分为单个值的范围

国民党

我有一个允许多个ID的输入。可以这样输入:

[  1000, 1001, 1050-1060, 1100  ]              

从此输入字符串中,我想获取所有单个ID。我已经发现每个之后都可以拆分,,因此具有1000、1001的部分已经可以使用。

data : itab TYPE TABLE OF string,
SPLIT l_bukrs_string AT ';' INTO TABLE itab.

我的问题是自建范围。知道如何将其与上面的情况结合起来以将1050-1060拆分为单个值吗?

我要1050 | 1051 | 1052 | ... | 1060

感谢所有提示:)非常感谢!

最简单的解决方案是改为对用户(?)输入使用实际范围/选择选项。然后,您将使用该范围从数据库表中选择每个值。

如果您不能使用实际范围/选择选项,则可以将字符串转换为一个,如下所示。

DATA: bukrs_string   TYPE string,
      split_bukrs    TYPE TABLE OF string,
      bukrs          TYPE bukrs,
      bukrs_between  TYPE TABLE OF bukrs,
      bukrs_range    TYPE RANGE OF bukrs,
      bukrs_rline    LIKE LINE OF bukrs_range,
      bukrs_table    TYPE TABLE OF bukrs.

FIELD-SYMBOLS: <string>     TYPE string,
               <bukrs>      TYPE bukrs,
               <bukrs_from> TYPE bukrs,
               <bukrs_to>   TYPE bukrs.

bukrs_string = '1000, 1001, 1050-1060, 1100'.
CONDENSE bukrs_string NO-GAPS.
SPLIT bukrs_string AT ',' INTO TABLE split_bukrs.

LOOP AT split_bukrs ASSIGNING <string>.

  bukrs_rline-sign = 'I'.

  IF <string> CA '-'.

    SPLIT <string> AT '-' INTO TABLE bukrs_between.
    bukrs_rline-option = 'BT'.
    READ TABLE bukrs_between INDEX 1 ASSIGNING <bukrs_from>.
    bukrs_rline-low = <bukrs_from>.
    READ TABLE bukrs_between INDEX 2 ASSIGNING <bukrs_to>.
    bukrs_rline-high = <bukrs_to>.

  ELSE.

    bukrs_rline-option = 'EQ'.
    bukrs = <string>.
    bukrs_rline-low = bukrs.

  ENDIF.

  APPEND bukrs_rline TO bukrs_range.
  CLEAR bukrs_rline.

ENDLOOP.

SELECT bukrs
  FROM t001
  INTO TABLE bukrs_table
 WHERE bukrs IN bukrs_range.

在分割字符串之前,您需要压缩它以删除所有空格。然后,您将遍历结果部分,并检查其是否包含任何“-”。如果是这种情况,请再次拆分它并在您的范围内创建一个BETWEEN条目(考虑是否可能需要进行其他检查,以查看后者的数字是否实际上更高)。如果没有“-”,则只需创建一个EQUAL条目。

拥有实际范围后,就可以使用它来从数据库中进行选择。这是因为并非该范围内的每个骗子都必须存在。例如,您可能只有1000、1050、1055和1060。

编辑:之所以没有命令,功能模块或类来将范围转换为单个值,是因为需要执行的操作根据范围所针对的数据以及是否/需要验证多少值而发生重大变化。如果您有一个整数范围,那么您所要做的就是取起始值并将其加1,直到达到目标值。一系列二进制浮点数呢?各种颜色呢?那么您的公司代码范围又如何呢?这就是为什么必须手动完成转换的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将单个二进制字符串值拆分为数组

来自分类Dev

将字符串拆分为多个文本输入

来自分类Dev

将字符串拆分为两个或多个连续的空格,但不拆分为单个

来自分类Dev

将列表值拆分为逗号分隔的字符串

来自分类Dev

将字符串拆分为值数组

来自分类Dev

使用C ++将字符串拆分为键/值对

来自分类Dev

将字符串值拆分为多列

来自分类Dev

将列表值拆分为逗号分隔的字符串

来自分类Dev

将字符串拆分为一个值

来自分类Dev

将字符串拆分为多个值

来自分类Dev

将输入值拆分为字符数组

来自分类Dev

将字符串拆分为令牌

来自分类Dev

将字符串拆分为struct

来自分类Dev

将字符串拆分为数组

来自分类Dev

将字符串拆分为音节

来自分类Dev

将字符串拆分为组件

来自分类Dev

将字符串拆分为列表

来自分类Dev

将字符串拆分为字母

来自分类Dev

将字符串拆分为变量

来自分类Dev

如何将字符串拆分为单个字符

来自分类Dev

仅使用bash将单个字符串拆分为字符数组

来自分类Dev

如何将字符串拆分为单个字符

来自分类Dev

Swift2-将字符串拆分为单个字符

来自分类Dev

将字符串拆分为 jinja2 中的单个字符数组

来自分类Dev

按日期时间值将字符串拆分为子字符串

来自分类Dev

如何将字符串值拆分为字符串数组?

来自分类Dev

根据 PHP 中的 unicode 字符范围将字符串拆分为数组

来自分类Dev

将字符串拆分为较小的字符串

来自分类Dev

将Java字符串拆分为字符串“}”