如何基于对象属性创建内部表?

时间:2020-04-16 13:34:28

标签: oop sap abap

我试图基于实例创建排序表。 在我的编码下面:

CLASS my_fancy_pony DEFINITION.
  PUBLIC SECTION.
    DATA mv_nice_key TYPE i.
ENDCLASS.

CLASS my_fancy_pony IMPLEMENTATION.
ENDCLASS.


DATA lt_my_fancy_ponys TYPE SORTED TABLE OF REF TO my_fancy_pony WITH UNIQUE KEY mv_nice_key.
DATA lt_my_fancy_ponys TYPE SORTED TABLE OF REF TO my_fancy_pony WITH UNIQUE KEY table_line->mv_nice_key.

这没有通过语法检查。 你能告诉我我怎么能做到吗?

1 个答案:

答案 0 :(得分:2)

不能将类直接用作结构。

但是,您可以构建符合您需要的地图:

TYPES:
  BEGIN OF map_entry,
    mv_nice_key   TYPE i,
    ref_to_object TYPE REF TO my_fancy_pony,
  END OF map_entry.

TYPES map_type TYPE SORTED TABLE OF map_entry WITH UNIQUE KEY mv_nice_key.

DATA(lt_my_fancy_pony_map) = VALUE map_type(
  FOR each IN lt_my_fancy_ponys
    ( mv_nice_key   = each->mv_nice_key
      ref_to_object = each ) ).

该地图可以为您需要的类的任何属性编号:

TYPES:
  BEGIN OF map_entry,
    mv_nice_key    TYPE i,
    some_other_att TYPE i,
    " ...
    ref_to_object  TYPE REF TO my_fancy_pony,
  END OF map_entry.

TYPES map_type TYPE SORTED TABLE OF map_entry WITH NON-UNIQUE KEY table_line.

DATA(lt_my_fancy_pony_map) = VALUE map_type(
  FOR each IN lt_my_fancy_ponys
    ( mv_nice_key    = each->mv_nice_key
      some_other_att = each->some_other_att 
      " ...
      ref_to_object  = each ) ).