2013-03-08 61 views
4

我有一個名爲ZCL_RM_SPREADSHEETML的類。如何訪問公共類型的對象

它在「類型」選項卡中有一個名爲TY_STYLE的類型,其可見性爲「公共」,並使用直接類型輸入定義。

當我嘗試在調用者的代碼來聲明如下:

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完全沒有。

然後我試圖與蒂爾達如下:

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. 

這工作

+1

你試過了'DATA:wa_blue_style TYPE zcl_rm_spreadsheetml-> ty_style.'使用' - >'代替'-'。 (這只是一條評論,因爲我目前沒有可用的SAP,所以我無法測試自己) – knut 2013-03-08 22:40:02

回答

4

你必須使用適當的component selector

定義字符,可以用來解決上單元的構成要素。結構組件選擇器(-),類組件選擇器(=>),接口組件選擇器(~)和對象組件選擇器(->)。

在這種情況下,您正在訪問某個類的類型(組件),因此您必須使用=>

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

我實際上是指內置於SE80對象中的類型,而不是內嵌對象。但是,在這兩種情況下,'=>'都適用。 – tomdemuyt 2013-03-11 16:45:14

相關問題