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



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

这是一个老问题,有一个简单的答案:只需创建一个返回常量数据的静态方法(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

相关内容

  • 没有找到相关文章

最新更新