Product mass creation tool
Created by Jerry Wang on Mar 13, 2014
很多時候為了進行性能測試,需要在系統里準備大量的測試數據。
下面這個工具可以按照輸入產生指定的大量Product數據。
指定要產生的product的個數
?
執行之后按照指定的product ID的prefix能搜索出創建好的product數據
?
如果要產生的product數量非常大,可以將product schedule成background job來執行:
?
?
可以通過System->Own Jobs查看Job執行情況:
?
?
當job的狀態變成Finished之后, 點擊Spool button查看輸出:
?
?
?
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.
?
?
?
總結
以上是生活随笔為你收集整理的Product mass creation tool的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪微型电动车海鸥内饰发布:看齐海豚、
- 下一篇: 研究机构:全球电动汽车市场规模 2023