Class 类中的逻辑选择选项

Class 类中的逻辑选择选项,class,if-statement,conditional,selection,abap,Class,If Statement,Conditional,Selection,Abap,通过SELECT-OPTIONS语句,我在类方法中构建复杂的逻辑条件时遇到了一个问题: IF col IN seltab. ...logic.... ENDIF. 我收到错误不允许使用本地选择选项… 我根据ABAPDOCU中的代码进行编码。下面的代码也没有意义: DATA: codes TYPE RANGE OF tcode. codes-sign = 'I'. codes-option = 'EQ'. codes-low = 'VL32N'. apppend codes. 我得到的错误

通过
SELECT-OPTIONS
语句,我在类方法中构建复杂的逻辑条件时遇到了一个问题:

IF col IN seltab.
  ...logic....
ENDIF.
我收到错误不允许使用本地选择选项…

我根据ABAPDOCU中的代码进行编码。下面的代码也没有意义:

DATA: codes TYPE RANGE OF tcode.
codes-sign = 'I'.
codes-option = 'EQ'.
codes-low = 'VL32N'.
apppend codes.
我得到的错误是,代码是一个没有标题行的表,因此没有名为sign的组件


可以在类中使用逻辑选择表吗?如果没有,还有什么选择?

是的,这是可能的,系统会准确地说明错误所在。您需要声明:

DATA: lt_range_codes TYPE RANGE OF tcode,         " this is an internal table WITHOUT a header line
      ls_range_codes LIKE LINE OF lt_range_codes. " this is a corresponding structure

ls_range_codes-sign   = 'I'.
ls_range_codes-option = 'EQ'.
ls_range_codes-low    = 'VL32N'.
APPEND ls_range_codes TO lt_range_codes.

请记住,在ABAP对象类中不允许使用带有标题行的表,因此您始终需要一个额外的结构。当然,字段符号和
将初始行附加到。。。分配
也可以。

是的,这是可能的,系统会准确地说明错误所在。您需要声明:

DATA: lt_range_codes TYPE RANGE OF tcode,         " this is an internal table WITHOUT a header line
      ls_range_codes LIKE LINE OF lt_range_codes. " this is a corresponding structure

ls_range_codes-sign   = 'I'.
ls_range_codes-option = 'EQ'.
ls_range_codes-low    = 'VL32N'.
APPEND ls_range_codes TO lt_range_codes.

请记住,在ABAP对象类中不允许使用带有标题行的表,因此您始终需要一个额外的结构。当然,字段符号和
将初始行附加到。。。分配
也可以。

请记住,您还可以在事务SE11中创建范围表。如果您在多个类中使用相同的范围表,我建议您这样做。使用SE11创建一个表数据类型,然后转到EDIT->DEFINE AS RANGE table type(编辑->定义为范围表类型),其余内容都是不言自明的。输入要为其创建范围表的元素类型,然后您可以在所有类中使用此类型。

请记住,您也可以在事务SE11中创建范围表。如果您在多个类中使用相同的范围表,我建议您这样做。使用SE11创建一个表数据类型,然后转到EDIT->DEFINE AS RANGE table type(编辑->定义为范围表类型),其余内容都是不言自明的。输入要为其创建范围表的元素类型,然后可以在所有类中使用此类型