我希望将一个不可变的预定义表作为类变量。我如何定义这样的变量?
答案 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)
毕竟那段时间将成为工作区的一件事情如下: