我遇到了一个通过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,剩下的就不言自明了。输入你想要一个范围表的元素类型,然后你可以在你所有的类中使用这个类型。