zoukankan      html  css  js  c++  java
  • SAP WebClient UI开发工具中attribute文件夹展开的实现原理分析

    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的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
    poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
    poj 1631 最多能有多少条不交叉的线 最大非降子序列 (LIS)
    hdu 5256 最少修改多少个数 能使原数列严格递增 (LIS)
    hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
    Gym 100512F Funny Game (博弈+数论)
    UVa 12714 Two Points Revisited (水题,计算几何)
    UVa 12717 Fiasco (BFS模拟)
    UVa 12718 Dromicpalin Substrings (暴力)
    UVa 12716 && UVaLive 6657 GCD XOR (数论)
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13581885.html
Copyright © 2011-2022 走看看