避免CRM_IB 013 error message
Error CRM IB 避免 message 013
2023-09-14 09:03:02 时间
Created by Jerry Wang on Jul 27, 2014
当创建一个IBASE的object component时,如果assign的object 已经存在于系统里已有的其他IBASE object component上,就会遇到如下error message:
在CHECK_FOR_COMPONENT里抛出error message:
在用代码生成大批量IBASE 测试数据用于性能测试时,如果要避免这个error message, 可以参考系统里点了Yes button之后的标准实现:
实际上是调用了IBASE genil model里的MOVE_COMPONENT:
另一种思路是,每次生成一个IBASE object component时,都预先用代码生成一个unique的object,这样能保证assign 到object component里的object不会出现被其他IBASE component使用到的情况。
执行report,输入待创建的Object component包含Object的ID,object family和object category:
report执行成功,打印创建好的IBASE ID:
根据IBASE ID到UI上check,发现Object component包含的Object 信息和执行report时维护的信息一致。
report和创建object的class ZCL_OBJECT_GENERATOR代码如下:
REPORT zibase_create_unique. PARAMETERS: txt TYPE char40 OBLIGATORY DEFAULT 'description test', eid TYPE char30 OBLIGATORY DEFAULT 'PROGRAM', oid TYPE comm_product-product_id OBLIGATORY DEFAULT 'CHILDOBJ8', fam TYPE comm_product-object_family OBLIGATORY DEFAULT '0401', cat TYPE COMT_CATEGORY_ID OBLIGATORY DEFAULT 'OBJ_0401'. DATA: lt_param TYPE crmt_name_value_pair_tab, ls_param TYPE crmt_name_value_pair, lr_core TYPE REF TO cl_crm_bol_core, ls_object TYPE comm_product, lr_root TYPE REF TO if_bol_entity_col, entity TYPE REF TO cl_crm_bol_entity. CHECK zcl_object_generator=>create_object( iv_id = oid iv_family = fam iv_catid = cat ) = abap_true. ls_param-name = cl_crm_ibase_il_constant=>createparam. ls_param-value = '01'. APPEND ls_param TO lt_param. lr_core = cl_crm_bol_core=>get_instance( ). lr_core->load_component_set('IBASE_ONLY'). CALL METHOD lr_core->root_create EXPORTING iv_object_name = cl_crm_ibase_il_constant=>root_object iv_create_param = lt_param iv_number = 1 RECEIVING rv_result = lr_root. CHECK lr_root IS BOUND. entity ?= lr_root->get_current( ). CHECK entity IS BOUND. IF entity->lock( ) = abap_true. entity->switch_to_change_mode( ). ENDIF. entity->set_property_as_string( iv_attr_name = 'DESCR' iv_value = CONV #( txt ) ). entity->set_property_as_string( iv_attr_name = 'EXTID' iv_value = CONV #( eid ) ). "entity->set_property_as_string( iv_attr_name = 'IBTYP' iv_value = '01' ). lr_core->modify( ). DATA(lv_ibase_id) = entity->get_property_as_string( 'IBASE' ). DATA(component) = entity->create_related_entity( 'FirstLevelComponent' ). CHECK component IS NOT INITIAL. DATA(obj_comp) = component->create_related_entity( 'IBCompObj'). CHECK obj_comp IS NOT INITIAL. obj_comp->set_property_as_string( iv_attr_name = 'OBJECT_ID' iv_value = CONV #( oid ) ). SELECT SINGLE * INTO ls_object FROM comm_product WHERE product_id = oid. ASSERT sy-subrc = 0. obj_comp->set_property_as_string( iv_attr_name = 'OBJECT_GUID' iv_value = CONV #( ls_object-product_guid ) ). obj_comp->set_property_as_string( iv_attr_name = 'OBJECT_FAMILY' iv_value = CONV #( ls_object-product_guid ) ). lr_core->modify( ). DATA(lo_message_container) = entity->get_message_container( ). CALL METHOD lo_message_container->get_messages EXPORTING iv_message_type = if_genil_message_container=>mt_all IMPORTING et_messages = DATA(lt_msg1). LOOP AT lt_msg1 ASSIGNING FIELD-SYMBOL(<msg1>). WRITE:/ <msg1>-message COLOR COL_NEGATIVE. ENDLOOP. CHECK lt_msg1 IS INITIAL. DATA(lo_transaction) = lr_core->get_transaction( ). DATA(lv_changed) = lo_transaction->check_save_needed( ). CHECK lv_changed EQ abap_true. DATA(lv_success) = lo_transaction->save( ). DATA(lo_glb_msg_cont) = lr_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 = DATA(lt_msg). LOOP AT lt_msg ASSIGNING FIELD-SYMBOL(<msg>). WRITE:/ <msg>-message. ENDLOOP. IF lv_success = abap_true. lo_transaction->commit( ). WRITE:/ 'IBASE Created Successfully: ', lv_ibase_id COLOR COL_NEGATIVE. ELSE. lo_transaction->rollback( ). ENDIF. CLASS zcl_object_generator DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. TYPE-POOLS abap . CLASS-METHODS create_object IMPORTING !iv_id TYPE comm_product-product_id !iv_family TYPE comm_product-object_family !iv_catid TYPE comt_category_id RETURNING VALUE(rv_create_ok) TYPE abap_bool . CLASS-METHODS class_constructor . PROTECTED SECTION. PRIVATE SECTION. CLASS-DATA so_core TYPE REF TO cl_crm_bol_core . CLASS-DATA so_fact TYPE REF TO cl_crm_bol_entity_factory . CLASS-DATA sv_id TYPE comm_product-product_id . CLASS-DATA sv_fam TYPE comm_product-object_family . CLASS-DATA sv_catid TYPE comt_category_id . CLASS-METHODS init IMPORTING !iv_id TYPE comm_product-product_id !iv_family TYPE comm_product-object_family !iv_catid TYPE comt_category_id . CLASS-METHODS create_header . TYPE-POOLS abap . CLASS-METHODS save RETURNING VALUE(rv_create_ok) TYPE abap_bool . ENDCLASS. CLASS ZCL_OBJECT_GENERATOR IMPLEMENTATION. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Public Method ZCL_OBJECT_GENERATOR=>CLASS_CONSTRUCTOR * +-------------------------------------------------------------------------------------------------+ * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD class_constructor. so_core = cl_crm_bol_core=>get_instance( ). so_core->load_component_set( 'PROD_ALL' ). so_fact = so_core->get_entity_factory( 'Product' ). ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Private Method ZCL_OBJECT_GENERATOR=>CREATE_HEADER * +-------------------------------------------------------------------------------------------------+ * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD create_header. DATA: lt_param TYPE crmt_name_value_pair_tab, ls_param TYPE crmt_name_value_pair. ls_param-name = 'PRODUCT_ID'. ls_param-value = sv_id. APPEND ls_param TO lt_param. ls_param-name = 'PRODUCT_TYPE'. ls_param-value = '01'. APPEND ls_param TO lt_param. ls_param-name = 'ROOT_CAT_ID'. ls_param-value = sv_catid. 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'. ls_param-value = 'Dummy'. APPEND ls_param TO lt_param. ls_param-name = 'OBJECT_FAMILY'. ls_param-value = sv_fam. APPEND ls_param TO lt_param. DATA(lr_product) = so_fact->create( lt_param ). IF lr_product IS INITIAL. DATA(lo_glb_msg_cont) = so_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 = DATA(lt_msg). LOOP AT lt_msg ASSIGNING FIELD-SYMBOL(<msg>). WRITE:/ <msg>-message. ENDLOOP. ENDIF. ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Public Method ZCL_OBJECT_GENERATOR=>CREATE_OBJECT * +-------------------------------------------------------------------------------------------------+ * | [--->] IV_ID TYPE COMM_PRODUCT-PRODUCT_ID * | [--->] IV_FAMILY TYPE COMM_PRODUCT-OBJECT_FAMILY * | [--->] IV_CATID TYPE COMT_CATEGORY_ID * | [<-()] RV_CREATE_OK TYPE ABAP_BOOL * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD create_object. init( iv_id = iv_id iv_family = iv_family iv_catid = iv_catid ). create_header( ). rv_create_ok = save( ). ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Private Method ZCL_OBJECT_GENERATOR=>INIT * +-------------------------------------------------------------------------------------------------+ * | [--->] IV_ID TYPE COMM_PRODUCT-PRODUCT_ID * | [--->] IV_FAMILY TYPE COMM_PRODUCT-OBJECT_FAMILY * | [--->] IV_CATID TYPE COMT_CATEGORY_ID * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD init. sv_id = iv_id. sv_fam = iv_family. sv_catid = iv_catid. ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Private Method ZCL_OBJECT_GENERATOR=>SAVE * +-------------------------------------------------------------------------------------------------+ * | [<-()] RV_CREATE_OK TYPE ABAP_BOOL * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD save. DATA(lo_transaction) = so_core->get_transaction( ). DATA(lv_changed) = lo_transaction->check_save_needed( ). CHECK lv_changed EQ abap_true. DATA(lv_success) = lo_transaction->save( ). IF lv_success = abap_true. lo_transaction->commit( ). rv_create_ok = abap_true. ELSE. lo_transaction->rollback( ). ENDIF. so_core->reset( ). ENDMETHOD. ENDCLASS.
相关文章
- ORA-29307: datafile string error, string ORACLE 报错 故障修复 远程处理
- MySQL Error number: 3785; Symbol: ER_RPL_ENCRYPTION_KEY_NOT_FOUND; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: 4004; Symbol: ER_DA_CANT_OPEN_ERROR_LOG; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: 4066; Symbol: ER_CHANGE_REP_SOURCE_CANT_DISABLE_REQ_ROW_FORMAT_WITH_GTID_ONLY; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010069; Symbol: ER_SSL_LIBRARY_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- ORA-00473: ARCH process terminated with error ORACLE 报错 故障修复 远程处理
- MySQL Error number: MY-010187; Symbol: ER_CANT_OPEN_ERROR_LOG; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010557; Symbol: ER_RPL_SLAVE_ERROR_READING_FROM_SERVER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010925; Symbol: ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011063; Symbol: ER_MYISAM_CRASHED_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011216; Symbol: ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011452; Symbol: ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011461; Symbol: ER_GRP_RPL_DONOR_TRANS_INFO_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011505; Symbol: ER_GRP_RPL_MEMBER_EXPELLED; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-012268; Symbol: ER_IB_MSG_443; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-012419; Symbol: ER_IB_MSG_594; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013202; Symbol: ER_CANT_SET_ERROR_SUPPRESSION_LIST_FROM_COMMAND_LINE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013328; Symbol: ER_GRP_RPL_ERROR_ON_CERT_DB_INSTALL; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013500; Symbol: ER_INIT_FAILED_TO_GENERATE_ROOT_PASSWORD; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013791; Symbol: ER_GRP_RPL_SLAVE_THREAD_ERROR_ON_SECONDARY_MEMBER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013821; Symbol: ER_GRP_RPL_ERROR_SET_SINGLE_CONSENSUS_LEADER; SQLSTATE: HY000 报错 故障修复 远程处理
- pandas read_csv 错误: pandas.parser.CParserError: Error tokenizing data. C error详解大数据
- How to Fix MYSQL Error 1239 and Keep Your Database Running Smoothly(mysql1239)
- 备份CRM系统MySQL数据备份保护数据不受灾害影响(crm系统的mysql)
- CRM系统与MySQL的搭配实现客户管理升级(crm和mysql)
- 深入探索CRM与MySQL的关系(crm和mysql关系)