如何访问对象的公共类型



我有一个类名为ZCL_RM_SPREADSHEETML。

在Types选项卡中有一个名为TY_STYLE的可见性为"Public"的类型,它是通过直接类型条目定义的。

当我尝试在调用者代码中声明以下内容时:

DATA : wa_blue_style TYPE zcl_rm_spreadsheetml-ty_style.

得到如下结果:

The type "ZCL_RM_SPREADSHEETML" has no structure and therefore no
component called "TY_STYLE". .

这是有意义的,我想作为ZCL_RM_SPREADSHEETML是一个类,也双击TY_STYLE绝对没有。

然后我试着用tilda:

DATA : wa_blue_style TYPE zcl_rm_spreadsheetml~ty_style.

我得到了以下内容:

Type "ZCL_RM_SPREADSHEETML~TY_STYLE" is unknown

双击TY_STYLE会把我带到TY_STYLE的定义,所以我必须接近。上次我遇到类似的问题是因为我正在访问一个私有方法,但我明确地将类型标记为Public。

你知道我做错了什么吗?

编辑

我也试过按注释

DATA : wa_blue_style TYPE ref to zcl_rm_spreadsheetml->ty_style. "and
DATA : wa_blue_style TYPE zcl_rm_spreadsheetml->ty_style. 

,

Field "ZCL_RM_SPREADSHEETML" is unknown. It is neither in one of the
specified tables nor defined by a "DATA" statement.

这给了我一个想法,尝试这个'类'的方式,

DATA : wa_blue_style TYPE zcl_rm_spreadsheetml=>ty_style.
这是

你必须使用合适的组件选择器:

已定义的字符,可用于寻址上层单元的组件。有结构组件选择器(-)、类组件选择器(=>)、接口组件选择器(~)和对象组件选择器(->)。

在这种情况下,您正在访问类的类型(组件),因此您必须使用=>

你是这个意思吧?

report  zstructsob.
*&---------------------------------------------------------------------*
*&       Class MYCLASS
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
class myclass definition.
  public section.
    types: begin of mystruct, " ------------> The public type
      field1 type i,
      field2 type string,
    end of mystruct.
    methods print_data importing data type mystruct.
  private section.
    data mydata type mystruct.
endclass.               "MYCLASS
*&---------------------------------------------------------------------*
*&       Class (Implementation)  MYCLASS
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
class myclass implementation.
  method print_data.
    write:/ data-field1, data-field2.
  endmethod.
endclass.               "MYCLASS
start-of-selection.
data ztype type myclass=>mystruct. " ------------> The public type of the class
data zclass type ref to myclass.
create object zclass.
ztype-field1 = 1.
ztype-field2 = 'Field2'.
zclass->print_data( ztype ).

相关内容

  • 没有找到相关文章

最新更新