Oop 如何在ABAP对象中将填充结构/表格定义为类常量
我想要一个不可变的预定义表作为类变量。如何定义这样一个变量?我将创建一个属性并将其标记为“只读”,您可以通过构造函数或set方法进行设置。在ABAP中使用类常量无法做到这一点。政府明确表示:Oop 如何在ABAP对象中将填充结构/表格定义为类常量,oop,abap,Oop,Abap,我想要一个不可变的预定义表作为类变量。如何定义这样一个变量?我将创建一个属性并将其标记为“只读”,您可以通过构造函数或set方法进行设置。在ABAP中使用类常量无法做到这一点。政府明确表示: 您可以为ABAP类型字符串和 仅限xstring 常量内部表、引用变量和结构不包含 纯字符类平面组件可以指定其初始值 值by仅为初始值,因此始终为初始值。 正如Tapio所建议的,您唯一的选择是只读属性,我还建议您使用静态属性,它可以在构造函数中初始化 比如说 CLASS lcl_test DEFINI
- 您可以为ABAP类型字符串和 仅限xstring
- 常量内部表、引用变量和结构不包含 纯字符类平面组件可以指定其初始值 值by仅为初始值,因此始终为初始值。
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
- 这是一个老问题,答案很简单:
只需创建一个返回常量数据的静态方法(getter)
而不是使用:
data(ls_sample) = lcl_myclass=>cs_data.
使用:
如果它有一个set.method,它是不可变的吗?只读属性可以从类内更改,所以它不是不可变的。只读属性可以从类内更改,所以它不是不可变的。“另存为常量?”这是什么意思?
data(ls_sample) = lcl_myclass=>cs_data( ).