1

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

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

我收到错误local SELECT-OPTIONS are not allowed...

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

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

我得到错误代码是一个没有标题行的表,因此没有名为 sign 的组件

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

4

2 回答 2

1

是的,这是可能的,并且系统准确地说明了问题所在。您需要声明:

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

于 2013-03-28T07:47:10.347 回答
0

请记住,您还可以在事务 SE11 中创建范围表。如果您在多个类中使用相同的范围表,我会推荐这个。使用 SE11 创建一个表数据类型,然后转到 EDIT->DEFINE AS RANGE TABLE TYPE,其余的都是不言自明的。输入您想要范围表的元素类型,然后您可以在所有类中使用此类型。

于 2013-04-04T20:32:12.060 回答