Самое простое решение - вместо этого использовать реальный диапазон / выбор для пользовательского (?) Ввода. Затем вы будете использовать этот диапазон для выбора каждого значения из таблицы базы данных.
Если вы не можете использовать реальный диапазон / параметр выбора, то вы можете преобразовать строку в единицу, как показано ниже.
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.
Перед тем как разбить строку, вы должны сжать ее, чтобы удалить все пробелы. Тогда вы бы l oop над результирующими частями и проверили, содержит ли он '-'. Если это так, вы снова разделяете его и создаете в своем диапазоне запись BETWEEN (подумайте, не хотите ли вы провести дополнительную проверку, чтобы увидеть, действительно ли последнее число больше). Если нет «-», вы просто создаете запись EQUAL.
Получив реальный диапазон, вы используете его для выбора из базы данных. Это связано с тем, что не все букры в этом диапазоне должны существовать. Например, у вас может быть только 1000, 1050, 1055 и 1060.
Редактировать : причина нет команды, функционального модуля или класса для преобразования диапазона в отдельные значения, потому что то, что необходимо сделать, сильно изменяется в зависимости от того, ЧЕМ данные предназначены для диапазона, и если / сколько значений необходимо проверить. Если у вас есть целочисленный диапазон, то все, что вам нужно сделать, это взять значение from и добавлять к нему 1, пока не достигнете значения to. Как насчет диапазона двоичных чисел с плавающей точкой? А как насчет диапазона цветов? А как насчет ваших балансовых единиц, где не все они обязательно существуют? Вот почему преобразование должно быть сделано вручную.