关于crm:SAP-WebClient-UI开发工具中attribute文件夹展开的实现原理分析

41次阅读

共计 2146 个字符,预计需要花费 6 分钟才能阅读完成。

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.

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

正文完
 0