类中的逻辑选择选项



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

IF col IN seltab.
  ...logic....
ENDIF.

I receive error local SELECT-OPTIONS not allowed.

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

DATA: codes TYPE RANGE OF tcode.
codes-sign = 'I'.
codes-option = 'EQ'.
codes-low = 'VL32N'.
apppend codes.

我得到了错误代码是一个没有标题行的表,因此没有组件称为符号

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

是的,这是可能的,并且系统准确地说明了什么是错误的。你需要声明这个:

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 Objects类中是不允许的,因此您总是需要一个额外的结构。当然,字段符号和APPEND INITIAL LINE TO ... ASSIGNING <...>也可以。

请记住,您也可以在事务SE11中创建范围表。如果您在多个类中使用相同的范围表,我建议这样做。使用SE11创建一个表数据类型,然后转到EDIT->DEFINE AS RANGE table type,剩下的就不言自明了。输入你想要一个范围表的元素类型,然后你可以在你所有的类中使用这个类型。

相关内容

  • 没有找到相关文章

最新更新