If statement 逻辑表达式不正确:比较/选择选项后只能跟有“;及&引用;或;或&引用;

If statement 逻辑表达式不正确:比较/选择选项后只能跟有“;及&引用;或;或&引用;,if-statement,abap,If Statement,Abap,我在写一个程序,如果用户给出的日期介于两个固定日期之间,那么它应该执行以下代码 但我收到了以下语法错误消息: 逻辑表达式不正确:比较/选择选项后面只能跟“AND”、“OR”或“)” 代码: sy基准默认值“20190816”的选择选项sdate。 常数:date1类型d值“20190101”, 日期2类型d值“20191231”。 如果sdate介于日期1和日期2之间。“您使用的是SELECT-OPTIONS,它不代表一个日期。它是一个包含多个日期甚至日期间隔的范围/表格。因此无法对其整体进行比

我在写一个程序,如果用户给出的日期介于两个固定日期之间,那么它应该执行以下代码

但我收到了以下语法错误消息:

逻辑表达式不正确:比较/选择选项后面只能跟“AND”、“OR”或“)”

代码:

sy基准默认值“20190816”的选择选项sdate。 常数:date1类型d值“20190101”, 日期2类型d值“20191231”。
如果sdate介于日期1和日期2之间。“您使用的是
SELECT-OPTIONS
,它不代表一个日期。它是一个包含多个日期甚至日期间隔的范围/表格。因此无法对其整体进行比较。您可以在调试器中查看它的外观,也许这会使它更清晰

由于您只需要用户输入一个日期,因此应使用
参数

因此,您不需要使用
SELECT-OPTIONS
,而需要像这样使用
参数

DATA: date1 TYPE d VALUE '20190101',
      date2 TYPE d VALUE '20191231'.

PARAMETERS input_d TYPE d.

IF input_d BETWEEN date1 AND date2.
  "do something
ENDIF.

请说明您尝试了什么,以及为什么这不起作用(对于错误消息),这样会更容易帮助。帖子中有错误消息和代码,但它们很难识别,因此我尝试改进格式。希望这会有所帮助。注意:错误看起来毫无意义(可能是语法分析器的一个非常古老的部分,从未更新过)。我猜这意味着左侧使用的SELECT-OPTIONS变量只能用于经典的3字子表达式(左操作数、运算符、右操作数),下一个字只能是“AND”、“OR”或“)”,用于将子表达式组合在一起。另外请注意,您目前正在测试,但可见值仅存储在第一行中(请参见调试中的)。
DATA: date1 TYPE d VALUE '20190101',
      date2 TYPE d VALUE '20191231'.

PARAMETERS input_d TYPE d.

IF input_d BETWEEN date1 AND date2.
  "do something
ENDIF.