如何用代码读取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.
- poj-------------(2752)Seek the Name, Seek the Fame(kmp)
- hust--------The Minimum Length (最短循环节)(kmp)
- hdu-----(3746)Cyclic Nacklace(kmp)
- javaSE之如何将一个文件复制到另一个文件
- 将文件字节输出流写入到文本中
- javaSE之如何将一个文档显示出来(,txt,.doc,.....)
- Git -- 分支与合并 (命令行+可视化工具p4merge)
- java之如何实现调用启动一个可执行文件,exe
- file类之目录
- 理解Go语言Web编程(上)
- 理解Go语言Web编程(下)
- 呆呆的io流输入输出的一些基础
- 机器人 Go 语言库:Gobot
- poj------2406 Power Strings
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android应用之Hybird混合开发,集成web页面的方法尝试
- Spring Boot 通过 XML 的方式整合 MyBatis
- layUI登录界面验证码功能模块儿封装
- go语言微信公众号开发后台接口封装
- 【DB宝14】在Docker中只需2步即可拥有Oracle 11g企业版环境(11.2.0.4)
- 别忘了给gcc编译器工具链加上-fno-common选项
- 轻量安全的部署方案
- 算法集锦(34) | 强化学习| 出租车载客问题
- 前端测试题:(解析)关于ajax跨域的说法,下面错误的是?
- 什么才是定制化 IDE 的核心价值?
- RTOS内功修炼记(八)— CMSIS RTOS API,内核通用API接口
- 从零搭建Spring Boot脚手架(1):开篇以及技术选型
- 盘点 Python 10 大常用数据结构(下篇)
- 「干货」你需要了解的六种渲染模式
- 分享两个操作Java枚举的实用方法