Created by Jerry Wang on Mar 20, 2014

如果需要使用代码实现下面的search 功能:

我们可以使用如下代码,通过重用BOL 层的query来实现搜索。

DATA: lo_core                TYPE REF TO cl_crm_bol_core,lo_collection          TYPE REF TO if_bol_entity_col,lv_query_name          TYPE crmt_ext_obj_name,lt_selection_parameter TYPE genilt_selection_parameter_tab,ls_selection_parameter TYPE genilt_selection_parameter,ls_query_parameters    TYPE genilt_query_parameters.ls_selection_parameter-attr_name = 'MAINCATEGORY'.
ls_selection_parameter-option =  'EQ'.
ls_selection_parameter-sign = 'I'.
ls_selection_parameter-low =  'SRVO'.
APPEND ls_selection_parameter TO lt_selection_parameter.ls_selection_parameter-attr_name = 'POSTING_DATE'.
ls_selection_parameter-option =  'BT'.
ls_selection_parameter-sign = 'I'.
ls_selection_parameter-low =  '20140318'.
ls_selection_parameter-high = '20140320'.
APPEND ls_selection_parameter TO lt_selection_parameter.ls_query_parameters-max_hits = 1.
lv_query_name = 'BTAdvQueryAUI'.lo_core = cl_crm_bol_core=>get_instance( ).
lo_core->load_component_set( 'BT' ).lo_collection = lo_core->dquery(iv_query_name               = lv_query_nameit_selection_parameters     = lt_selection_parameteris_query_parameters         = ls_query_parameters ).当然我们也可以更深入一层,重用Genil layer的实现代码来执行搜索:代码如下:DATA: lo_tool TYPE REF TO zcl_crm_queryaui_run_btil.DATA: lt_parameter TYPE crmt_name_value_pair_tab,ls_parameter LIKE LINE OF lt_parameter,lt_sel_para  TYPE genilt_selection_parameter_tab,ls_sel_para  LIKE LINE OF lt_sel_para.ls_parameter-name = 'MAINCATEGORY'.
ls_parameter-value = 'SRVO'.
APPEND ls_parameter TO lt_parameter.ls_parameter-name = 'POSTING_DATE'.
ls_parameter-value = '20140318'.
APPEND ls_parameter TO lt_parameter.ls_sel_para-attr_name = 'MAINCATEGORY'.
ls_sel_para-sign = 'I'.
ls_sel_para-option = 'EQ'.
ls_sel_para-low = 'SRVO'.
APPEND ls_sel_para TO lt_sel_para.ls_sel_para-attr_name = 'POSTING_DATE'.
ls_sel_para-sign = 'I'.
ls_sel_para-option = 'BT'.
ls_sel_para-low = '20140318'.
ls_sel_para-high = '20140320'.
APPEND ls_sel_para TO lt_sel_para.CREATE OBJECT lo_tool EXPORTING iv_objname = 'BTAdvQueryAUI'.lo_tool->read( i_param_tab             = lt_parameterit_selection_parameters = lt_sel_paraiv_advanced_search      = abap_true ).DATA(result) = lo_tool->get( ).

这里的zcl_crm_queryaui_run_btil是一个新的class,继承自cl_crm_queryaui_run_btil。继承的原因是我们需要使用GET_RESULT_LIST和READ_BUSINESS_TRANSACTIONS这两个protected方法。sub class的代码如下:

class ZCL_CRM_QUERYAUI_RUN_BTIL definitionpublicinheriting from CL_CRM_QUERYAUI_RUN_BTILfinalcreate public .public section.methods READimporting!I_PARAM_TAB type CRMT_NAME_VALUE_PAIR_TAB optional!IT_SELECTION_PARAMETERS type GENILT_SELECTION_PARAMETER_TAB optional!IV_ADVANCED_SEARCH type CRMT_BOOLEAN default ABAP_FALSE .methods GETimporting!IT_PARAMETERS type CRMT_NAME_VALUE_PAIR_TAB optionalreturningvalue(RR_RESULT_LIST) type ref to CRMT_REPORT_LOCATORLIST_TA .
protected section.methods GET_RESULT_LISTredefinition .methods READ_BUSINESS_TRANSACTIONSredefinition .
private section.
ENDCLASS.CLASS ZCL_CRM_QUERYAUI_RUN_BTIL IMPLEMENTATION.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_CRM_QUERYAUI_RUN_BTIL->GET
* +-------------------------------------------------------------------------------------------------+
* | [--->] IT_PARAMETERS                  TYPE        CRMT_NAME_VALUE_PAIR_TAB(optional)
* | [<-()] RR_RESULT_LIST                 TYPE REF TO CRMT_REPORT_LOCATORLIST_TA
* +--------------------------------------------------------------------------------------</SIGNATURE>method GET.
CALL METHOD me->GET_RESULT_LISTEXPORTINGit_parameters  = it_parametersRECEIVINGRR_RESULT_LIST = rr_result_list.endmethod.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZCL_CRM_QUERYAUI_RUN_BTIL->GET_RESULT_LIST
* +-------------------------------------------------------------------------------------------------+
* | [--->] IT_PARAMETERS                  TYPE        CRMT_NAME_VALUE_PAIR_TAB(optional)
* | [<-()] RR_RESULT_LIST                 TYPE REF TO CRMT_REPORT_LOCATORLIST_TA
* +--------------------------------------------------------------------------------------</SIGNATURE>method GET_RESULT_LIST.
CALL METHOD SUPER->GET_RESULT_LISTEXPORTINGit_parameters  = it_parametersRECEIVINGRR_RESULT_LIST = rr_result_list.endmethod.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_CRM_QUERYAUI_RUN_BTIL->READ
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_PARAM_TAB                    TYPE        CRMT_NAME_VALUE_PAIR_TAB(optional)
* | [--->] IT_SELECTION_PARAMETERS        TYPE        GENILT_SELECTION_PARAMETER_TAB(optional)
* | [--->] IV_ADVANCED_SEARCH             TYPE        CRMT_BOOLEAN (default =ABAP_FALSE)
* +--------------------------------------------------------------------------------------</SIGNATURE>method READ.
CALL METHOD me->READ_BUSINESS_TRANSACTIONSEXPORTINGi_param_tab             = i_param_tabit_selection_parameters = it_selection_parametersiv_advanced_search      = iv_advanced_search.endmethod.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZCL_CRM_QUERYAUI_RUN_BTIL->READ_BUSINESS_TRANSACTIONS
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_PARAM_TAB                    TYPE        CRMT_NAME_VALUE_PAIR_TAB(optional)
* | [--->] IT_SELECTION_PARAMETERS        TYPE        GENILT_SELECTION_PARAMETER_TAB(optional)
* | [--->] IV_ADVANCED_SEARCH             TYPE        CRMT_BOOLEAN (default =ABAP_FALSE)
* +--------------------------------------------------------------------------------------</SIGNATURE>method READ_BUSINESS_TRANSACTIONS.
CALL METHOD SUPER->READ_BUSINESS_TRANSACTIONSEXPORTINGi_param_tab             = i_param_tabit_selection_parameters = it_selection_parametersiv_advanced_search      = iv_advanced_search.endmethod.
ENDCLASS.

重用CL_CRM_QUERYAUI_RUN_BTIL实现order search相关推荐

  1. One order search by guid uuid

    The detail page keeps loading forever is because the response of this odata request never returns: h ...

  2. One order search的框架代码里,硬编码了要去取Interaction object相关的数据

    One order search的框架代码里,硬编码了要去取Interaction object相关的数据,见下图214行方法:get_io_info:里面有个开关: 这个开关的配置地址: 我把这个功 ...

  3. One order search dynamic sql statement生成位置

    line 30负责根据ui传入的search parameter生成动态的sql statement example1: 所以我们得知One order的search,最终是通过OPEN SQL到如下 ...

  4. SAP CRM Service Order search Tool

    Created by Jerry Wang, last modified on Mar 21, 2014 这个工具能够根据UI 上的search条件( Main Category和Created on ...

  5. CRM One Order search max hit实现原理讨论

    One Order的setting应该不起作用,这里需要的是Fiori Personalize的setting,如果没有,程序会把One Order的Max Hit设成1000: 大概看了一下cust ...

  6. IC Order search 的debugging关键点

    Created by Jerry Wang, last modified on Mar 20, 2014 UI输入: 对于不同的search参数有不同的处理: 执行sql语句: 执行结果: 要获取更多 ...

  7. One order search dynamic SQL build logic

    Created by Jerry Wang, last modified on Jul 24, 2015 使用传入的search tab构造SQL: 取得逻辑操作符: 依次处理search tab里传 ...

  8. Magento Order Search使用api查询订单

    Magento1.6版本中已经集成了订单的查询功能,不过早期的版本要实现订单查询还得花点心思.网上也有对应的插件就是了,hellokeykey的 订单查询插件,不过要 50刀,感觉贵了点,不过一分钱一 ...

  9. how CRM One Order search by contact name work in the past

最新文章

  1. Android开发之使用Preferences设计软件设置界面(源代码分享)
  2. elasticsearch分组统计,取最大值、最小值、求和
  3. vba vbscript.regexp加载dll错误_[原]排错实战——拯救加载调试符号失败的IDA
  4. 如何开通实时计算 Flink 版?
  5. 每天一道LeetCode-----为二叉树增加next节点,指向同一层的下一个节点
  6. ChildWindow在Open时旋转出现
  7. mysql千万级数据量根据索引优化查询速度
  8. 3d激光雷达开发(icp匹配)
  9. 【简报】帮助你免费制作单页面个人网站
  10. 关闭浏览器后Session失效原因分析
  11. javascript 闭包理解总结
  12. VUE3中使用粒子特效
  13. JavaWeb - 小米商城网 - 项目启动
  14. python微信机器人之小i
  15. 量子计算机 叉院,清华团队首次实现量子GAN 准确率98.8%
  16. 基于Nodejs+vue开发实现高校学院网站系统
  17. python定义单位矩阵_单位矩阵与正则矩阵NumPy/Python的高效Kronecker积
  18. hihoCoder - 1633(2017北京icpc现场赛-G题)
  19. 对于公司裁员和转型的无力吐槽
  20. python 占位符(百分号方式、Format 方式)

热门文章

  1. Extjs 4.2 MVC+ThreeJs学习笔记(二)一个简单的ThreeJS场景
  2. python fork 守护进程
  3. 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度。
  4. 谈谈新手如何学习PHP^_^【转】
  5. 创建自定义验证控件(1)
  6. 向seaborn传递matplotlib绘图参数,精细地控制seaborn输出图形
  7. python质数n以内_用Python寻找前n个质数
  8. 基于 abapGit 和 abaplint 的 ABAP 持续集成的一个例子
  9. SAP Spartacus 的延迟加载 Lazy load 设计原理
  10. SAP成都研究院小伙伴们开发的一个SAP C4C POC - 通过名片扫描的方式录入联系人数据到系统