我有一个名为ZCL_RM_SPREADSHEETML的课程。
它在“类型”标签中有一个名为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.
此作品
答案 0 :(得分:7)
您必须使用相应的component selector:
可用于处理上部单元组件的已定义字符。有一个结构组件选择器(
-
),一个类组件选择器(=>
),一个接口组件选择器(~
)和一个对象组件选择器(->
)
在这种情况下,您正在访问类的类型(组件),因此您必须使用=>
。
答案 1 :(得分:1)
你的意思是,对吧?
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 ).