CRM and CX Blogs by SAP
Stay up-to-date on the latest developments and product news about intelligent customer experience and CRM technologies through blog posts from SAP experts.
cancel
Showing results for 
Search instead for 
Did you mean: 
JerryWang
Advisor
Advisor
0 Kudos

For project reason I need to figure out the logic how the field list is assembled when folder "Attributes" for a given context node is expanded in CRM WebClient UI workbench:



Debugging entry point is CL_BSP_WD_GUI_LIST_TREE~ON_EXPAND_NO_CHILDREN:



There are three kinds of fields which will appear under "Attributes" folder:

1. direct attribute


get the public method list of context node class with naming convention that method name starts with GET_, and have one importing parameter ATTRIBUTE_PATH and one returning parameter VALUE.



And then extract the attribute name and stored it to internal table lt_direct_attribute.



Once the direct attribute of the current context node class has been extracted, there is a recursive call with the same extraction logic on the super class.



Since I am using UI component BT116H_SRVO, context node BTADMH to debug, the inheritance hierarchy from children to parent in this example is:

CL_BT116H_S_DETAILS_CN00 -> CL_CRM_UIU_BTADMINH_CN -> CL_CRM_UIU_BT_EASYCNDENTRY_FCN -> CL_BSP_WD_CONTEXT_NODE -> CL_BSP_MODEL

For example, there is a method GET_BILL_BLOCK_STATUS with the specified signature,



so BILL_BLOCK_STATUS is regarded as one direct attribute for this context node:



2. implicit attribute


Retrieved from method get_implicite_cnode_attr,



Attributes defined in DDIC structure CRMST_ADMINH_BTIL are regarded as implicit attribute.



This structure is bound to context node BTAdminH in Genil model editor.



3. AET attribute ( Application Enhancement Tool )


In fact AET attribute could be regarded as a special kind of implicit attribute as it is physically appended to EEW structure just the same way as implicit attribute. AET fields are retrieved via method get_extension_cnode_attr:



Those fields are retrieved with API cl_axt_uif_access=>get_ext_attributes and marked with prefix EXT in UI component workbench:




You can use the following report to print out the attribute list of a given UI component's context node:


REPORT zget_ui_context_node_attr.

PARAMETERS: comp TYPE string OBLIGATORY DEFAULT 'BT116H_SRVO',
cs TYPE string OBLIGATORY DEFAULT 'CL_BT116H_S_DETAILS_CN00'.

DATA(lo_model) = cl_bsp_wd_appl_model=>get_appl_model(
EXPORTING iv_bsp_appl = CONV #( comp )
iv_model_type = 'CL_BSP_WD_APPL_MODEL_DDIC' ).
DATA(lt_attr) = lo_model->get_context_node_attr( iv_context_node_class = CONV #( cs )
iv_mark_ext_attributes = 'X' ).

LOOP AT lt_attr ASSIGNING FIELD-SYMBOL(<attr>).
WRITE:/ <attr>.
ENDLOOP.