Professional Documents
Culture Documents
SAP IS-U/CRM Integration BOL Tree (Generic Tree)
SAP IS-U/CRM Integration BOL Tree (Generic Tree)
Table of content:
1 Summary .........................................................................................................................3
2 Customizing ....................................................................................................................3
2.1 Define a tree profile ...............................................................................................................................3
2.1.1 Profiles ...............................................................................................................................................3
2.1.2 Define Columns ..................................................................................................................................3
2.1.3 Hierarchy ............................................................................................................................................4
2.1.4 One Click Actions (OCAs) ...................................................................................................................6
2.2 Define Node Presentation .....................................................................................................................7
2.2.1 Define Columns ..................................................................................................................................7
3 Implementation Tasks....................................................................................................8
3.1 Manditory Steps ....................................................................................................................................8
3.2 Tree properties ......................................................................................................................................9
3.3 Tree Event Handling............................................................................................................................12
Page
1 Summary
This document describes how to reuse the generic BOL-tree component IUBOTREE. At the beginning, the
required customizing steps are described followed by the descrition how to integrate the tree into a parent
component. The tree can be used in UIU and in IC WebClient scenarios.
2 Customizing
Start View Cluster CRM_IU_IC_BOLTREE in transaction SM34 or go to Customizing for the CRM system
under Customer Relationship Management
Industry-Specific Solutions
Telecommunications
Master
Data
Object Management
Settings for Object Workbench
Define Object Hierarchy and Object
Attributes.
default entry 0 means that there is no maximum height defined-> the tree will grow until
rows per page is reached -> no vertical scrollbar will appear;
an entry >0 defines the number of rows which will be visible -> the rest of the lines can be
reached via the scroll bar)
Page
Column ID: you can define up to 20 columns, the column ID is also used as sorting key
Title: this text appears as the title of the column
Width in %: The visible columns shouldnt exceed 100%, if nothing is defined the system will
calculate the width proportionally
Hidden:
o
If Hidden is marked the column will not appear during runtime, predefined hidden columns
can be defined by SAP and customers just have to activate them, or customers can hide
normally visible columns.
This flag allows to reuse Node Presentations in multiple tree profiles. E.g. there are two
different tree profiles and in both one specific object is defined in the hierarchy. The Node
Presentation of this object is the same except that in one profile one column is not needed.
This column can be defined as hidden in the corresponding tree profile .This means that only
one Node Presentation can be used.
2.1.3 Hierarchy
For the definition of the hierarchy of the BOL Tree the following data are required:
Node ID: the node key in the hierarchy
Parent Node ID: An existing Node ID in the hierarchy can be defined as parent, if no parent is
defined means this node is a root node. Multiple different root nodes can be defined. The Parent
Object Name should display the External Object Name of the corresponding parent node.
Path for Target Nodes: a BOL relation path can be defined for non-root nodes as the relation
between the parent node and the child node. (Alternatively, this relation can be defined via coding in
the node class, see Change Relation flag)
External Object Name: the BOL object type of this node, this BOL type is also the target object type
of the defined relation in Path for Target Nodes
Sequence No: On the same level multiple nodes can be defined (multiple nodes have the same
parent); this field defines the sequence of this nodes on one level.
Presentation ID: this field defines the Node Presentation for this node. A Node Presentation defines
each cell content of a node line. See Define Node Presentation
Hidden: This node is hidden, it is only used as a logical node, e.g to display the children directly
beneath the grandparent. For a hidden node, it is not necessary to define a Presentation ID.
Node is Folder: This node has a folder icon and it inherits the BOL object type from its parent. It is
used to define e.g. semantic or systematic arranging of objects.
Is Recursive: Used to define a recursive hierarchy (of the same object type). E.g. Item -> SubItem >SubItem
Define user exit class (node class):
Page
Class Name: define an ABAP Objects class name which implements the interface
IF_IU_IC_BOL_TREE. Because of possible future enhancements it is recommended to use
CL_IU_IC_BOL_TREE as the superclass!
Change relation: Instead of using the Path for Target Nodes the tree will call the
IF_IU_IC_BOL_TREE~GET_CHILDREN method of the defined class to fill this node with
objects
Change Presentation: Normally, the content of a tree cell is defined in the Node
Presentation (Presentation ID). This can be redefined in the
IF_IU_IC_BOL_TREE~GET_ATTRIBUTE method. Within the method the cell content/value
can be filled dynamically.
Rerender Cell: Normally a cell content is rendered as text, icon, inputfield or link depending
on the definition of the Node Presentation. If this flag is marked the method
IF_IU_IC_BOL_TREE~RENDER_CELL will be called. Within this method the cell content
can be rendered differently, e.g. in the form of a combination of multiple UI elements
(multiple icons, icons + text, inputfield + icon, inputfield + text etc.)
Maximal Sibling Nodes: If there are more siblings than defined in this field, this node will
not be expanded The entry 0 means no maximum is defined and this node will be expanded,
888 means the node stays collapsed.
Maximal Child Nodes: If there are more children than defined in this field this node will not
be expanded. The entry 0 means no maximum is defined and this node will be expanded.
888 means the node stays collapsed.
Hierarchy Overview
Page
Page
Hierarchy
A BOL value path starting from the BOL object type defined in External Object Name can be
defined as value path.
E.g. the current object is a Business Partner and we want to display the street of the bill
address in the same tree row, but in the model the address is an own object beneath the BP.
The path would be: //BillAdressRelation/STREET
Page
It is also possible to define translatable OTR texts as the content of the cell. The syntax for
the OTR path is: OTR/<otr_alias_name>. E.g. OTR/CRM_IC_APPL/PARTNER. The
OTR texts can be found or created in the transaction SOTR_EDIT
Value path B, C: You can define up to 3 values in the paths A, B and C which will be concatenated
and separated by a blank and diplayed in the cell
Editable: Defines whether this cell can be edited. If the Edit Mode (see Implementation Tasks) is
active and the flag is marked the value defined in Edit Value Path is rendered as an input field. The
value paths A, B and C are not used in edit mode.
Edit Value Path: The value path for the edit mode. (see Value Path A for syntax, dont use OTR
texts here)
Is Link: Defines whether the value should be rendered as a link within this cell.
Link Event ID: An event handler method of the parent UI Component is called when this link is
clicked, this ID is passed to differentiate between the links. (see Implementation Tasks)
3 Implementation Tasks
This chapter describes the needed implementation tasks to use the generic tree component IUBOTREE.
The next step is to set the tree profile which should be used in the tree component. This can be done
e.g in the method WD_USAGE_INITIALIZE of the parent component controller class:
Page
Page
ls_tree_props-toolbar_foreign_use = TRUE.
ls_tree_props-maxbuttonnumber
= 8.
ls_tree_props-fill_up_empty_rows = FALSE.
ls_tree_props-personalizable
= FALSE.
ls_tree_props-display_mode
= X.
ls_tree_props-initial_select
= if_crm_iu_bol_tree_evt_service=>co_mode_select_first.
ls_tree_props-expand_collapse_all = abap_true.
ls_tree_props-find
= abap_true.
ls_tree_props-allow_unselect
= abap_true.
ls_tree_props-multiselect
= abap_true.
lr_profile->set_property( iv_attr_name = TREEPROPERTIES
iv_value
= ls_tree_props ).
endif.
endif.
MODE: the value E lets appearing the environment toolbar buttons over the tree. These buttons
are:
Refresh: The tree is rebuilt (e.g. the agent assumes that some other objects could appear in
the tree).
Display Superior Object: This button is active if a row is selected, it selects (sets the focus
to) the superior row.
Restrict Environment to Focus Object: Only active if a row is selected, the slected row
becomes the root object (zoom to the selected row).
Extend Evironment: only active if the zoom-button was clicked before(Restrict Environment
to Focus Object), it re-zooms, the root object becomes a child again.
Display Entire Environment: only active if the zoom-button was clicked before (maybe
several times), it re-zooms to the top root object which is defined in the tree profile (it
executes several Extend Environment steps).
There are two types of hierarchies : See UI Guidelines for SAP CRM Chapter 10
If the the toolbar should be displayed within an assignment block header, set this property to
TRUE:
default value: 8
A more button appears if there are more buttons available the defined in this property.
Page
10
if TRUE -> tree rows are filled up with empty rows util the number Rows per
Page(Customizing) is reached
default value:FALSE
default value:
default value:
default value:
if TRUE: Expand All and Colapse All buttons appears in the toolbar:
if no line is selected, everything is expanded/collapsed, if lines is are selected, only the are
expanded/collapsed
default value:
With Position you can search for a string/pattern within the tree, the first found row will be
selected. With Next Hit the next found row will be selected.
Page
11
the maximal visible rows are defined here, if more rows are there a vertical scroll bar
appears:
default value:
default value:
To define a link event see 2.2.1 (cell attribute Is Link is marked and Link ID is defined)
To define a OCA event see 2.1.4 (OCA with OCA-ID is defined)
Toolbar buttons can not be defined via customizing, but via implementation (see below in this chapter)
To handle the events in the parent component the tree provides an event service. This event_service is a
public component node of the tree component. The event_service node implements the interface
if_crm_iu_bol_tree_evt_service. To get an instance of the service the public static method
cl_iubotree_bspwdcomponen_cn08=>get_event_service( ir_parent_component = <parent
component instance> iv_tree_usage_name = <tree usage name> )should be used. This can
be done e.g. in the WD_USAGE_INITIALIZE of the parent component. Additionaly, to the event service you
need to implement one or more event handler. An event handler has to implement the interface
IF_CRM_IU_BOL_TREE_EVT_HANDLER. E.g. the parent component itself could be the event handler.
So, if you have the service and an event handler you can register(subscribe) the handler to all events or only
to an event type or even only to a specific event:
data tree_event_service type ref to if_crm_iu_bol_tree_evt_service.
tree_event_service = cl_iubotree_bspwdcomponen_cn08=>get_event_service( ir_paren
t_component = me iv_tree_usage_name = iv_usage->usage_name ).
if tree_event_service is bound.
* subcsibe to all events:
tree_event_service>subscribe( event_handler = me event_type = space event_id = space ).
Page
12
Now whenever an event is triggered (link, OCA or button is clicked) the method
IF_CRM_IU_BOL_TREE_EVT_HANDLER~HANDLE_EVENT of your subscribed handler is called.
The method IF_CRM_IU_BOL_TREE_EVT_HANDLER~IS_EVENT_ACTIVE is called for links and for OCAs
before they are displayed, so you can control whether the actions/ links which are defined in customizing
should be active.
In the method IF_CRM_IU_BOL_TREE_EVT_HANDLER~ADJUST_TOOLBAR_ACTIONS it is possible to
adjust the toolbar buttons. It is possible to adjust (remove, sort, deactivate) the tree own buttons (like
position, next, expand all, collapse all, see 3.2 Tree properties) and its possible to define your own buttons:
method if_crm_iu_bol_tree_evt_handler~adjust_toolbar_actions.
data: ls_button type crmt_thtmlb_button.
ls_button-id = 'BUTTON_1'.
ls_button-text = 'Button 1'.
ls_button-tooltip = 'Click Button 1'.
ls_button-on_click = 'BUTTON_1'.
ls_button-on_client_click = ''.
ls_button-enabled = abap_true.
append ls_button to ct_toolbar_actions.
endmethod.
4 Other considerations
5 Conclusion
Page
13