前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Product mass creation tool

Product mass creation tool

作者头像
Jerry Wang
发布2019-07-11 12:23:25
3750
发布2019-07-11 12:23:25
举报
知识共享许可协议
知识共享许可协议

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

Created by Jerry Wang on Mar 13, 2014

很多时候为了进行性能测试,需要在系统里准备大量的测试数据。

下面这个工具可以按照输入产生指定的大量Product数据。

指定要产生的product的个数

clipboard1
clipboard1

执行之后按照指定的product ID的prefix能搜索出创建好的product数据

clipboard2
clipboard2

如果要产生的product数量非常大,可以将product schedule成background job来执行:

clipboard3
clipboard3
clipboard4
clipboard4

可以通过System->Own Jobs查看Job执行情况:

clipboard5
clipboard5
clipboard6
clipboard6

当job的状态变成Finished之后, 点击Spool button查看输出:

clipboard7
clipboard7
clipboard8
clipboard8

report  zhana_product_create_mass. SELECTION-SCREEN BEGIN OF BLOCK rad1                           WITH FRAME TITLE title. SELECTION-SCREEN COMMENT 1(79) text-001                                    FOR FIELD prefix. parameters: prefix   type c LENGTH 20 obligatory LOWER CASE. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-002                                    FOR FIELD cat_id. PARAMETERS: cat_id    type comt_category_id obligatory default 'MAT_'. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-003                                    FOR FIELD descrip. PARAMETERS: descrip   type string OBLIGATORY DEFAULT 'Description' LOWER CASE. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-004                                    FOR FIELD bs_uom. PARAMETERS: bs_uom    type COML_PR_UNIT_UI_DYNP-unit default 'EA'. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-005                                    FOR FIELD note. PARAMETERS: note      type string OBLIGATORY DEFAULT 'Long Text' LOWER CASE. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-006                                    FOR FIELD config. PARAMETERS: config      type COMT_PRODUCT_UI-config  DEFAULT  abap_true. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-007                                    FOR FIELD so_org . PARAMETERS: so_org      type CRMT_PRIL_DC_UI-sales_org OBLIGATORY DEFAULT 'O 50000732'. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-008                                    FOR FIELD dist_c. PARAMETERS: dist_c      type CRMT_PRIL_DC_UI-DISTR_CHAN OBLIGATORY DEFAULT '01'. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-009                                    FOR FIELD status. PARAMETERS: status      type CRMT_PRIL_STATUS_ATT-stat DEFAULT 'I1103'. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-010                                    FOR FIELD altid. PARAMETERS: altid      type ISAM_O_VEH_IDS_DYNP_SV-ALTVEHNO OBLIGATORY. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-011                                    FOR FIELD cusproid. PARAMETERS: cusproid  type string OBLIGATORY. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-012                                    FOR FIELD count. PARAMETERS: count     type i DEFAULT 100. SELECTION-SCREEN SKIP. SELECTION-SCREEN COMMENT 1(79) text-013                                    FOR FIELD start. PARAMETERS: start     type i DEFAULT 0. SELECTION-SCREEN SKIP. *SELECTION-SCREEN COMMENT 1(79) text-013 *                                   FOR FIELD comp. *PARAMETERS: comp     type COMT_PR_COMP. *SELECTION-SCREEN SKIP. SELECTION-SCREEN END OF BLOCK rad1. data: lo_core               type ref to cl_crm_bol_core,       lo_collection         type ref to if_bol_entity_col,       lo_root_entity        type ref to cl_crm_bol_entity,       lr_product            type ref to cl_crm_bol_entity,       lr_note               type ref to cl_crm_bol_entity,       lr_altid              type ref to cl_crm_bol_entity,       lr_dischain           type ref to cl_crm_bol_entity,       lr_status             type ref to cl_crm_bol_entity,       lo_transaction        type ref to if_bol_transaction_context,       lr_fac                type ref to cl_crm_bol_entity_factory,       lt_param              type crmt_name_value_pair_tab,       ls_param              type crmt_name_value_pair,       lv_success            type abap_bool,       lv_index              TYPE string,       lv_header_failed      TYPE abap_bool,       ls_name               TYPE string,       lv_input_invalid      TYPE abap_bool,       lr_product_id         TYPE REF TO data,       ls_product            type comt_product_ui,       lv_changed            type abap_bool,       lv_note               type string,       lv_altid              type string,       lv_msg                type string,       lo_glb_msg_cont       type ref to cl_crm_genil_global_mess_cont,       lt_msg                type crmt_genil_message_tab,       ls_msg                type crmt_genil_message,       lo_altid              type ref to cl_crm_bol_entity. FIELD-SYMBOLS: <product_id> TYPE COMT_PRODUCT_ID. INITIALIZATION.   title = 'Product Mass Creation Option'. START-OF-SELECTION.   PERFORM check_input.   CHECK lv_input_invalid = abap_false.   lo_core = cl_crm_bol_core=>get_instance( ).   lo_core->load_component_set( 'PROD_ALL' ).   lr_fac   = lo_core->get_entity_factory( 'Product' ).   DO count TIMES.     PERFORM create_header.     CHECK lv_header_failed = abap_false.     "************** 1: LONG TEXT     PERFORM create_long_text.     "************** 2: ALT ID     PERFORM create_alt_id.     "************** 3: SALES ORG and DISTRI CHAIN     PERFORM create_sale_org.     "************** 4: STATUS     PERFORM create_status.     "************** 5: CONFIG     PERFORM set_config.     "************** 6: COMPETITOR *    PERFORM set_competitor.     PERFORM create_customer_id.     PERFORM save_single.   ENDDO. FORM check_input.   IF count <= 0 OR count > 100000.     WRITE:/ 'Specify number of product you want to mass create: between 1 and 100000' COLOR COL_NEGATIVE INTENSIFIED ON.     lv_input_invalid = abap_true.   ENDIF.   IF start < 0 OR start > 100000.     WRITE:/ 'Specify start index: between 1 and 100000' COLOR COL_NEGATIVE INTENSIFIED ON.     lv_input_invalid = abap_true.   ENDIF. ENDFORM. FORM create_header.   CLEAR: lv_header_failed.   clear lt_param.   ls_param-name = 'PRODUCT_ID'.   lv_index = sy-index + start.   CONCATENATE prefix lv_index INTO ls_param-value.   append ls_param to lt_param.   CONCATENATE 'Creating Product:' ls_param-value INTO lv_msg SEPARATED BY space.   PERFORM display_progress USING sy-index count lv_msg.   ls_param-name = 'PRODUCT_TYPE'.   ls_param-value = '01'.   append ls_param to lt_param.   ls_param-name = 'ROOT_CAT_ID'.   ls_param-value = cat_id.   append ls_param to lt_param.   ls_param-name = 'ROOT_HIER_ID'.   ls_param-value = 'R3PRODSTYP'.   append ls_param to lt_param.   ls_param-name = 'SHORT_TEXT'.   CONCATENATE descrip lv_index INTO ls_param-value.   append ls_param to lt_param.   ls_param-name = 'BASE_UOM'.   ls_param-value = bs_uom.   append ls_param to lt_param.   lr_product = lr_fac->create( lt_param ).   if lr_product is initial.     lo_glb_msg_cont = lo_core->get_global_message_cont( ).     CALL METHOD lo_glb_msg_cont->if_genil_message_container~get_messages       EXPORTING         iv_message_type = if_genil_message_container=>mt_all       IMPORTING         et_messages     = lt_msg.     loop at lt_msg into ls_msg.       write:/ ls_msg-message.     endloop.     lv_header_failed = abap_true.   endif. ENDFORM. FORM save_single.   lo_core->modify( ).   lo_transaction = lr_product->get_transaction( ).   lv_changed = lo_transaction->check_save_needed( ).   lr_product_id = lr_product->get_property( 'PRODUCT_ID' ).   ASSIGN lr_product_id->* TO <product_id>.   check lv_changed eq abap_true.   lv_success = lo_transaction->save( ).   if lv_success = abap_true.     lo_transaction->commit( ).     write:/ 'Product Created Successfully, Product ID: ', <product_id> COLOR COL_POSITIVE INTENSIFIED ON.   else.     lo_transaction->rollback( ).     WRITE:/ 'Product Created Failed, index: ' , sy-index.   endif.   lo_core->reset( ). ENDFORM. FORM create_sale_org.   CLEAR: lr_dischain.   PERFORM create_sub_node USING 'ProductDistrChain' CHANGING lr_dischain.   CHECK lr_dischain IS NOT INITIAL.   lr_dischain->set_property( iv_attr_name = 'SALES_ORG' iv_value = so_org ).   lr_dischain->set_property( iv_attr_name = 'DISTR_CHAN' iv_value = dist_c ). ENDFORM. FORM create_alt_id.   CLEAR: lr_altid, lv_altid.   CONCATENATE altid lv_index INTO lv_altid.   PERFORM create_sub_node USING 'ProductVehIDs' CHANGING lr_altid.   CHECK lr_altid IS NOT INITIAL.   lr_altid->set_property( iv_attr_name = 'ALTVEHNO' iv_value = lv_altid ). ENDFORM. FORM create_customer_id.   CLEAR: lo_altid.   PERFORM create_sub_node USING 'ProductRelPrdCpn' CHANGING lo_altid.   CHECK lo_altid IS NOT INITIAL.   lo_altid->set_property( iv_attr_name = 'BU_PARTNER_ID' iv_value = '118' ).   lo_altid->set_property( iv_attr_name = 'PRID_VENDOR' iv_value = cusproid ). ENDFORM. FORM create_long_text.   CLEAR: lv_note, lr_note.   CONCATENATE note lv_index INTO lv_note.   PERFORM create_sub_node USING 'ProductLongtext' CHANGING lr_note.   CHECK lr_note IS NOT INITIAL.   lr_note->set_property( iv_attr_name = 'TDSPRAS'                        iv_value     = 'E' ).   lr_note->set_property( iv_attr_name = 'TDID'                        iv_value     = 'BASE' ).   lr_note->set_property( iv_attr_name = 'CONC_LINES'                        iv_value     = lv_note ). ENDFORM. FORM create_status.   CLEAR: lr_status.   CHECK status IS NOT INITIAL.   PERFORM create_sub_node USING 'ProductStat' CHANGING lr_status.   CHECK lr_status IS NOT INITIAL.   lr_status->set_property( iv_attr_name = 'STAT' iv_value = status ). ENDFORM. FORM create_sub_node USING iv_relation_name TYPE CRMT_RELATION_NAME CHANGING ir_sub.   CLEAR: ir_sub.   CALL METHOD lr_product->create_related_entity     EXPORTING       iv_relation_name = iv_relation_name     RECEIVING       rv_result        = ir_sub. ENDFORM. FORM set_config.   lr_product->set_property( iv_attr_name = 'CONFIG'                         iv_value     = config ). ENDFORM. *FORM set_competitor. *  CHECK comp IS NOT INITIAL. *  lr_product->set_property( iv_attr_name = 'COMPETITOR_PROD' *                      iv_value     = comp ). *ENDFORM. FORM display_progress USING current type i total type i text type string.   DATA: percent TYPE i.   percent = current * 100 / total.   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'     EXPORTING       PERCENTAGE = percent       text       = text. ENDFORM.

clipboard9
clipboard9
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang on Mar 13, 2014
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档