zoukankan      html  css  js  c++  java
  • 如何用代码读取SAP CRM的Categorization Schema

    As I mentioned in my blog How to create Service Request subject data by code I need to generate a large number of Service Request as test data which should have Subject Category filled randomly.

    So it is necessary for me to figure out how to read out the hierarchy data of a given Categorization Schema so that I can spread it randomly to the created Service Request.

    I explore it a bit in BOL browser and find the root BOL node for the displayed schema above is MC_Schema:

    Then use relation “MC_CategoryRel” to get all Category node in first level.

    The category node has relation MC_TreeChildRel, which could be used to get all its children category nodes recursively.

    With this idea I have developed a API method to return the hierarchy Schema data based on a given Schema ID:

    Result:

    With this API, I have also developed a report to display the Schema tree in SAPGUI, which has exactly the same structure as displayed in WebUI.

    Source code for report to display schema in SAPGUI:

    REPORT ORDER_DISPLAY_SCHEMA_TREE.
    
    PARAMETERS: schemaid type string OBLIGATORY DEFAULT 'WJ_SOFTWARE'.
    
    DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree,
          gt_data    TYPE STANDARD TABLE OF cl_home_schema_tool=>ty_displayed_node,
          ok_code    LIKE sy-ucomm,
          save_ok    LIKE sy-ucomm,
          ls_data    LIKE LINE OF gt_data.
    
    END-OF-SELECTION.
      DATA(lo_tool) = NEW cl_home_schema_tool( ).
      DATA(lt_fieldcat) = lo_tool->get_fieldcat_by_data( ls_data ).
      PERFORM change_label.
      CALL SCREEN 100.
    
    MODULE pbo OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'MAINTITLE'.
      IF g_alv_tree IS INITIAL.
        PERFORM init_tree.
        CALL METHOD cl_gui_cfw=>flush
          EXCEPTIONS
            cntl_system_error = 1
            cntl_error        = 2.
        ASSERT sy-subrc = 0.
      ENDIF.
    ENDMODULE.
    
    MODULE pai INPUT.
      save_ok = ok_code.
      CLEAR ok_code.
      CASE save_ok.
        WHEN 'EXIT' OR 'BACK' OR 'CANC'.
          PERFORM exit_program.
        WHEN OTHERS.
          CALL METHOD cl_gui_cfw=>dispatch.
      ENDCASE.
      CALL METHOD cl_gui_cfw=>flush.
    ENDMODULE.
    FORM change_label.
      READ TABLE lt_fieldcat ASSIGNING FIELD-SYMBOL(<id>) INDEX 1.
      <id>-seltext = <id>-reptext = <id>-scrtext_m = <id>-scrtext_s = <id>-scrtext_l = 'Category ID'.
      <id>-outputlen = 20.
      READ TABLE lt_fieldcat ASSIGNING FIELD-SYMBOL(<text>) INDEX 2.
      <text>-seltext = <text>-reptext = <text>-scrtext_m = <text>-scrtext_l = 'Description'.
      <text>-scrtext_s = 'Name'.
      <text>-outputlen = 40.
    ENDFORM.
    FORM init_tree.
      g_alv_tree = lo_tool->get_tree( ).
      DATA l_hierarchy_header TYPE treev_hhdr.
      PERFORM build_hierarchy_header CHANGING l_hierarchy_header.
      CALL METHOD g_alv_tree->set_table_for_first_display
        EXPORTING
          is_hierarchy_header = l_hierarchy_header
        CHANGING
          it_fieldcatalog     = lt_fieldcat
          it_outtab           = gt_data.
      PERFORM create_tree.
      g_alv_tree->frontend_update( ).
      lo_tool->expand( ).
    ENDFORM.
    FORM create_tree.
      lo_tool->get_hierarchy_data( schemaid ).
      lo_tool->draw_tree( ).
    ENDFORM.
    FORM build_hierarchy_header CHANGING p_hierarchy_header TYPE treev_hhdr.
      p_hierarchy_header-heading = 'Categorization Schema'.
      p_hierarchy_header-width = 30.
      p_hierarchy_header-width_pix = ' '.
    ENDFORM.
    
    FORM exit_program.
      LEAVE PROGRAM.
    ENDFORM.
    

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

  • 相关阅读:
    JS闭包
    css3 背景渐变
    css扩展技术:Less和Sass的区别
    HTML5 Canvas八大核心技术及其API用法
    HTML5新标签含义,用法及其与HTML4的区别
    当离散遇见连续
    素数测试
    概率采样问题
    二分查找及其变种
    C++与Java多态的区别
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13586417.html
Copyright © 2011-2022 走看看