繁体   English   中英

如何根据 object 属性创建内表?

[英]How to create a internal table based on object attribute?

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

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.

这没有通过语法检查。 你能告诉我如何做到这一点吗?

您不能将类直接用作结构。

但是,您可以构建一个 map 来满足您的需要:

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 ) ).

map 可以对您需要的任何类属性进行编号:

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 ) ).

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM