我想要一个不可变的预定义表作为类变量。如何定义这样一个变量?
这是一个老问题,有一个简单的答案:只需创建一个返回常量数据的静态方法(getter)。
代替使用:
data(ls_sample) = lcl_myclass=>cs_data.
用途:
data(ls_sample) = lcl_myclass=>cs_data( ).
我会创建一个属性并将其标记为"只读",您可以通过构造函数或set Method进行设置。
在ABAP中使用类常量不能这样做。文件明确指出:
可以为ABAP类型字符串指定起始值val仅xstring。
常量内部表、引用变量和不带的结构纯类似字符的平面组件可以指定其初始值值,因此始终是初始值
正如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.
经过这么长时间后,有一件事会成为一个工作组,那就是:
- 创建您的列表
- 序列化它并将其另存为只读字符串
- 创建一个反序列化的getter