IBASE component deletion
Created by Jerry Wang, last modified on Oct 18, 2014
在使用FM CRM_IBASE_COMP_DELETE删除一个IBASE component时(使用下列report 测试),
通过ST05 trace能发现component deletion不包含物理的Database 删除动作,仅仅是把相关的IBASE数据的valid to time stamp设置成deletion时的time stamp。
删除后在tcode IB52里无法再找到component 110059:
只有在tcode IB53里将valid on的时间设置成deletion之前的时间,
才能看到被删除的component 信息:
PARAMETERS: txt TYPE char40 OBLIGATORY DEFAULT 'description test',
eid TYPE char30 OBLIGATORY DEFAULT 'PROGRAM',
oid TYPE comm_product-product_id OBLIGATORY DEFAULT 'CHILDOB8',
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,
ls_comp_det TYPE ibap_comp2,
ls_comp_det_upd TYPE ibap_comp3,
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 ) ).
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 ) ).
obj_comp->set_property_as_string( iv_attr_name = 'DESCR_EXT' iv_value = 'Jerry12345' ).
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: ls_header TYPE ibap_head1,
lt_struc_tab TYPE ibap_struc1_tab,
ls_comp TYPE ibap_dat1.
ls_header-ibase = lv_ibase_id.
CALL FUNCTION 'CRM_IBASE_GET_DETAIL'
EXPORTING
i_ibase_head = ls_header
IMPORTING
e_struc_ibase_tab = lt_struc_tab
EXCEPTIONS
not_specified = 1
doesnt_exist = 2
no_authority = 3.
CHECK sy-subrc = 0.
READ TABLE lt_struc_tab ASSIGNING FIELD-SYMBOL(<line>) INDEX 1.
ls_comp-instance = <line>-instance.
CALL FUNCTION 'CRM_IBASE_COMP_GET_DETAIL'
EXPORTING
i_comp = ls_comp
i_date = sy-datlo
i_time = sy-timlo
iv_do_auth_check = 'X'
IMPORTING
e_comp_det = ls_comp_det
EXCEPTIONS
not_specified = 1
doesnt_exist = 2
no_authority = 3
OTHERS = 4.
MOVE-CORRESPONDING ls_comp_det TO ls_comp_det_upd.
ls_comp_det_upd-deviceid = '1'.
ls_comp_det_upd-descr = '2'.
CALL FUNCTION 'CRM_IBASE_COMP_CHANGE'
EXPORTING
i_comp = ls_comp
i_comp_det = ls_comp_det_upd
EXCEPTIONS
data_not_consistent = 1
ibase_locked = 2
not_succesful = 3
no_authority = 4
OTHERS = 5.
ASSERT sy-subrc = 0.
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.
CALL FUNCTION 'CRM_IBASE_COMP_DELETE'
EXPORTING
i_comp = ls_comp
EXCEPTIONS
data_not_consistent = 1
ibase_locked = 2
not_succesful = 3
no_authority = 4.
ASSERT sy-subrc = 0.
CALL FUNCTION 'CRM_IBASE_SAVE'.
COMMIT WORK AND WAIT.
CALL FUNCTION 'CRM_IBASE_COMP_GET_DETAIL'
EXPORTING
i_comp = ls_comp
i_date = sy-datlo
i_time = sy-timlo
iv_do_auth_check = 'X'
IMPORTING
e_comp_det = ls_comp_det
EXCEPTIONS
not_specified = 1
doesnt_exist = 2
no_authority = 3
OTHERS = 4.
IF sy-subrc = 2.
WRITE: / 'Component does not exist:' , ls_comp-instance COLOR COL_NEGATIVE.
ELSE.
WRITE: / 'Detail returned:' , ls_comp_det-instance COLOR COL_POSITIVE.
ENDIF.
IBASE component deletion相关推荐
- IBase component cannot be created and deleted in the same second
183284 2014 相关的corrective measure是1612172 (2012) 对应的ticket是0120031469 0001427502 2012 regarding dump ...
- 删除IBASE component时遇到data_not_consistent的exception
Created by Jerry Wang, last modified on May 05, 2014 在删除IBASE component时传入的i_date和i_time设定为component ...
- IBASE component valid to field
Created by Jerry Wang on Jan 03, 2015 IBASE 45885 具有一个IBASE component 45888, description "Jerry ...
- 打印出系统所有即未被assign到business transaction和IBASE component的product ID列表
Created by Jerry Wang on May 09, 2014 下面这个report可以打印出系统所有满足下列条件的product: product未被assign到任何的business ...
- 在同一session内创建, 修改和删除IBASE component
Created by Jerry Wang, last modified on May 02, 2014 该report 实现了在同一session内: 创建新的Individual Object 创 ...
- IBASE component删除出错
Created by Jerry Wang, last modified on Oct 18, 2014 在UI上创建一个新的Object component后, 根据Object component ...
- IBASE object component的where use list
Created by Jerry Wang, last modified on Aug 15, 2014 输入要查询的object ID, 输出是该Object 所属的IBASE object com ...
- IBASE important table
Created by Jerry Wang on May 09, 2014 输入root IBASE ID( field name IBASE ), 能够查询到该IBASE下所有的IBASE comp ...
- IBASE read buffer
Created by Jerry Wang, last modified on Apr 22, 2014 Function group IB_CRM_API里定义了一个类型为int的全局变量handl ...
最新文章
- Android怎样保证一个线程最多仅仅能有一个Looper?
- window清理垃圾
- 文档词频矩阵_论文理解:从词嵌入到文档距离
- C语言变量未赋初值时,输出为乱七八糟解释
- mysql中exeits用法_MySQL 8 在 Windows 下安装及使用
- 【redis 学习系列08】Redis小功能大用处02 Pipeline、事务与Lua
- 关于安装VS2005或MSDN时遇到“Please insert the disk:XXXXXXX” 错误提示的解决方法!...
- Windows环境下 node 取消 npm install 采用软连接引用node_modules
- [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
- MicroDicom viewer(Dicom格式看图软件) v3.4.7官方版
- MATLB|电动汽车充放电的最优调度
- restframework单元测试
- 机器学习资料与攻略超强整理吐血推荐(二)
- 设计模式(二)--策略模式
- 福昕阅读器常用快捷键
- 如何禁用计算机防病毒程序,win10系统怎么关闭Windows Defender防病毒程序
- 区块链测试(二):区块链测试
- 跨专业考研计算机,能否适应?
- CSS--BEM风格介绍
- JSObject.getWindow()方法找不到问题( 类 netscape.javascript.JSObject.getWindow)
热门文章
- JS解析json数据并将json字符串转化为数组的实现方法
- Win7+xp命令行 一键修改IP、DNS
- CTR 模型之 Deep Cross (DCN) 与 xDeepFM 解读
- R语言观察日志(part5)--利用readr和readxl包读写数据
- 线性规划的matlab实现
- 如何利用Python批量将Word中的信息提取到Excel?
- SAP Commerce Cloud 新一代 UI Spartacus 和 Customer Data cloud 的集成
- 如何在 SAP BTP 上 手动执行 workflow
- Jerry的反省:程序员不要轻易说出“这个功能技术上无法实现“
- jasmine spyOn的单步调试