天天看點

SAP CRM 樹視圖(TREE VIEW)

  

  樹視圖可以用于表示資料的層次。

  例如:SAP CRM中的組織結構資料可以表示為樹視圖。

  在SAP CRM Web UI的術語當中,沒有像表視圖(table view)或者表單視圖(form view)那種專門的樹視圖類型。我們可以認為樹視圖是表視圖的一種特例。是以,沒有可以用于建立樹視圖的向導,需要按以下特定的步驟手動改造已存在的視圖。

  首先,這個看起來挺難的,但是随着實踐次數的增多,你會很容易了解它。在本文,我将建立一個如下模樣的樹視圖。

SAP CRM 樹視圖(TREE VIEW)

  如你所見,它有兩級結構。第一級展示線索ID,下一級展示客戶。我使用了這樣一個簡化過的例子。

  為了學習這個教程,我們需要建立一個表視圖。這裡不描述建立表視圖的步驟,因為在先前的文章中已經講過了。

  在本文中,我建立了一個使用了基本實體“BTQLeadDoc”的表視圖。

  在元件控制器中建立了一個具有相同類型的上下文節點,并在其方法DO_INIT_CONTEXT中寫入代碼以擷取資料。

  接着綁定表視圖上下文節點群組件控制器上下文節點,是以表視圖可以擷取到資料。DO_INIT_CONTEXT中寫入的代碼如下。

SAP CRM 樹視圖(TREE VIEW)

  這段代碼做了什麼?

  我簡單地擷取了前10條線索記錄,把它們交給上下文節點LEAD。在表視圖群組件控制器上下文節點間進行了資料綁定,資料就會同樣地流到表視圖。

      我們做好了準備,開始主要環節吧。

  首先,前往表視圖上下文節點實作類并且把它的父類從“CL_BSP_WD_CONTEXT_NODE_TV”改為 “CL_BSP_WD_CONTEXT_NODE_TREE”。如果有詢問特定方法重定義的對話框,選擇“是”。

SAP CRM 樹視圖(TREE VIEW)

  該類提供了兩個重要方法。

  GET_TABLE_LINE_SAMPLE 和 REFRESH.

  第一個方法将傳回基于視圖列的結構。

  REFRESH方法通常用于生成節點第一級或者根節點。

SAP CRM 樹視圖(TREE VIEW)

  我現在僅僅使用了兩列來展示資訊。是以前往GET_TABLE_LINE_SAMPLE按需要增加兩列。

SAP CRM 樹視圖(TREE VIEW)

  方法激活後,使用事務BSP_WD_CMPWB代碼重新打開整個元件。現在你可以在“配置”标簽看到視圖配置中的兩列。将這兩列從可用區域移動到展示區域,修改相應的标題,儲存配置。

  我們将在後面使用REFRESH方法。

  現在有一個重要的步驟要做,就是修改htm檔案中的标簽。使用chtmlb标簽:configTreeto 來顯示樹視圖。前往htm頁面,移除已存在的CONFIGCELLERATOR或者CONFIGTABLE标簽,填入如下的标簽,并激活。

SAP CRM 樹視圖(TREE VIEW)

  标簽中的“LEAD”是一個上下文節點。

  nodeTextColumn屬性用于選擇樹的根節點或者第一列的屬性。這裡我按照需求選擇ID列。

  在使用了需要的節點填充節點表屬性後,我們将它傳遞給LEAD->NODE_TAB。指定用于折疊樹的事件處理器“collapse”和用于展開樹的事件處理器“expand”:OnCollapseNode 和OnExpandNode.

  下一步,我們需要在SE24中建立一個有父類的類。

  CL_BSP_WD_TREE_NODE_PROXY,這個類會提供一個叫作GET_CHILDREN的方法,用于建立子節點。

SAP CRM 樹視圖(TREE VIEW)

  在激活類之前,重定義GET_CHILDREN 方法并激活。讓我們回到REFRESH方法,寫下如下代碼并激活。 

SAP CRM 樹視圖(TREE VIEW)

   隻不過是循環上下文節點中的每條記錄——換言之,LEAD記錄——并且使用NODE_FACTORY的方法GET_PROXY為每條記錄建立節點。接着我們使用方法ADD_ROOT_NODE為樹添加根節點。在該場景中,因為我擷取了10條記錄,因而會建立10個根節點。

  傳入剛剛在SE24中建立的類的名字給proxy type參數。我們已經建立好了根節點,但是還沒顯示它,需要手動地添加GETTER方法給代理類,以顯示樹中的屬性。

  前往代理類“ZCL_TREE_PROXY_MAIN”複制方法IF_BSP_MODEL_SETTER_GETTER~_GET_XYZ點選過濾複選框,并且将其複制到空行。這樣做将會複制方法所需要的所有導入導出參數。接着修改名字為GET_ID。我們隻複制GETTER方法模闆,并且根據屬性名對它重命名。 

SAP CRM 樹視圖(TREE VIEW)
SAP CRM 樹視圖(TREE VIEW)

  寫下如下代碼,以擷取線索的ID。

SAP CRM 樹視圖(TREE VIEW)

  第一級節點的建立和顯示已經完成,下一步要關注子節點(客戶節點)。為建立第二級節點,需要在代理類的get_children方法中寫代碼。我們将為子節點建立一個代理類。前往SE24并且按上面的方法建立一個新的類。

SAP CRM 樹視圖(TREE VIEW)

  我們也需要展示客戶。按照相同的程式添加一個GETTER方法GET_PROSPECT,寫下如下代碼。 

SAP CRM 樹視圖(TREE VIEW)

  需要記住的關鍵點是,我們在代理類中建立GETTER方法,他們不是上下文節點類的一部分。

  子節點的顯示完成了,但我們沒有建立它。現在前往建立的第一個類“ZCL_TREE_PROXY_MAIN”,在GET CHILDREN方法中寫入代碼。

SAP CRM 樹視圖(TREE VIEW)
SAP CRM 樹視圖(TREE VIEW)
SAP CRM 樹視圖(TREE VIEW)

  這些代碼做了什麼?

  這裡我們使用了一些BOL程式設計,來擷取線索對應的客戶,是以需要通過某些關系來到達目标實體BTPARTNER。我讀取了線索的所有合作夥伴。

  擷取所有合作夥伴之後,循環每個合作夥伴,使用NODE FACTORY方法和上面建立的“ZCL_TREE_PROXY_CUSTOME”來建立子節點。

  建立子節點後,設定IS_LEAF屬性為TRUE,因為在該場景中,CUSTOMER是最後一級,在這之後不顯示任何客戶下的子節點。是以,子節點的檔案夾圖示的相鄰處不會有任何箭頭顯示。

  接下來在視圖實作類中建立兩個事件處理器,名為collapse和expand,并寫下如下代碼。

SAP CRM 樹視圖(TREE VIEW)
SAP CRM 樹視圖(TREE VIEW)

  如名所示,在你折疊或展開節點時會觸發它們。

  我們需要做的最後一件事是在DO PREPARE OUTPUT方法中添加一點代碼,來調用REFRESH方法。

SAP CRM 樹視圖(TREE VIEW)

  現在,你可以運作應用,觀察輸出。

  當你第一次看這篇教程時,看起來會有很多步驟,但實際上,它不是那麼難。

  如果想要将“位址”顯示為“客戶”的子節點,需要建立一個新的代理類,在CUSTOMER代理類的GET CHILDREN方法中通過客戶和位址間的BOL關系寫入代碼,并且需要一個在那個代理類添加GETTER方法以顯示位址。别忘記在GET_TABLE_LINE_SAMPLE中添加一個新的“位址”列。

  你可以自己試試。希望本文能幫助你,也希望你能把這個站點推薦給你的同僚,如果你覺得它值得的話。

本文連結:http://www.cnblogs.com/hhelibeb/p/6035059.html 

原文連結:TREE VIEW   

更多資訊請參考:Tree view change and save

繼續閱讀