如何在ABAP对象中将填充的结构/表定义为类常量

时间:2015-11-13 13:08:24

标签: oop abap

我希望将一个不可变的预定义表作为类变量。我如何定义这样的变量?

4 个答案:

答案 0 :(得分:2)

这是一个老问题,答案很简单: 只需创建一个返回常量数据的静态方法(getter)。

而不是使用:

data(ls_sample) = lcl_myclass=>cs_data.

使用:

data(ls_sample) = lcl_myclass=>cs_data( ).

答案 1 :(得分:0)

我会创建一个属性并将其标记为" Read Only",您可以通过Constructor或Set-Method进行设置。

答案 2 :(得分:0)

你不能在ABAP中使用类常量这样做。 documentation明确表示:

  
      
  • 您可以为ABAP类型字符串和指定起始值val   仅限xstring。

  •   
  • 常量内部表,引用变量和没有的结构   纯粹的字符状扁平组件可以分配它们的初始值   仅由IS INITIAL提供,因此始终为初始值。

  •   

正如Tapio建议的那样,您唯一的选择是只读属性,我还建议您使用静态属性,可以在构造函数中初始化。

例如

CLASS lcl_test DEFINITION.
  PUBLIC SECTION.
  CLASS-DATA: itab TYPE RANGE OF i READ-ONLY.
  METHODS:
      constructor.
ENDCLASS.
CLASS lcl_test IMPLEMENTATION.
  METHOD constructor.
      itab = VALUE #( sign = 'I'  option = 'BT' ( low = 1  high = 10 )
                                                ( low = 21 high = 30 )
                                                ( low = 41 high = 50 )
                                  option = 'GE' ( low = 61 )  ).
  ENDMETHOD.
ENDCLASS.

答案 3 :(得分:0)

毕竟那段时间将成为工作区的一件事情如下:

  • 创建列表
  • 序列化并将其另存为只读字符串
  • 创建一个反序列化的getter