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相关推荐

  1. IBase component cannot be created and deleted in the same second

    183284 2014 相关的corrective measure是1612172 (2012) 对应的ticket是0120031469 0001427502 2012 regarding dump ...

  2. 删除IBASE component时遇到data_not_consistent的exception

    Created by Jerry Wang, last modified on May 05, 2014 在删除IBASE component时传入的i_date和i_time设定为component ...

  3. IBASE component valid to field

    Created by Jerry Wang on Jan 03, 2015 IBASE 45885 具有一个IBASE component 45888, description "Jerry ...

  4. 打印出系统所有即未被assign到business transaction和IBASE component的product ID列表

    Created by Jerry Wang on May 09, 2014 下面这个report可以打印出系统所有满足下列条件的product: product未被assign到任何的business ...

  5. 在同一session内创建, 修改和删除IBASE component

    Created by Jerry Wang, last modified on May 02, 2014 该report 实现了在同一session内: 创建新的Individual Object 创 ...

  6. IBASE component删除出错

    Created by Jerry Wang, last modified on Oct 18, 2014 在UI上创建一个新的Object component后, 根据Object component ...

  7. IBASE object component的where use list

    Created by Jerry Wang, last modified on Aug 15, 2014 输入要查询的object ID, 输出是该Object 所属的IBASE object com ...

  8. IBASE important table

    Created by Jerry Wang on May 09, 2014 输入root IBASE ID( field name IBASE ), 能够查询到该IBASE下所有的IBASE comp ...

  9. IBASE read buffer

    Created by Jerry Wang, last modified on Apr 22, 2014 Function group IB_CRM_API里定义了一个类型为int的全局变量handl ...

最新文章

  1. Android怎样保证一个线程最多仅仅能有一个Looper?
  2. window清理垃圾
  3. 文档词频矩阵_论文理解:从词嵌入到文档距离
  4. C语言变量未赋初值时,输出为乱七八糟解释
  5. mysql中exeits用法_MySQL 8 在 Windows 下安装及使用
  6. 【redis 学习系列08】Redis小功能大用处02 Pipeline、事务与Lua
  7. 关于安装VS2005或MSDN时遇到“Please insert the disk:XXXXXXX” 错误提示的解决方法!...
  8. Windows环境下 node 取消 npm install 采用软连接引用node_modules
  9. [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
  10. MicroDicom viewer(Dicom格式看图软件) v3.4.7官方版
  11. MATLB|电动汽车充放电的最优调度
  12. restframework单元测试
  13. 机器学习资料与攻略超强整理吐血推荐(二)
  14. 设计模式(二)--策略模式
  15. 福昕阅读器常用快捷键
  16. 如何禁用计算机防病毒程序,win10系统怎么关闭Windows Defender防病毒程序
  17. 区块链测试(二):区块链测试
  18. 跨专业考研计算机,能否适应?
  19. CSS--BEM风格介绍
  20. JSObject.getWindow()方法找不到问题( 类 netscape.javascript.JSObject.getWindow)

热门文章

  1. JS解析json数据并将json字符串转化为数组的实现方法
  2. Win7+xp命令行 一键修改IP、DNS
  3. CTR 模型之 Deep Cross (DCN) 与 xDeepFM 解读
  4. R语言观察日志(part5)--利用readr和readxl包读写数据
  5. 线性规划的matlab实现
  6. 如何利用Python批量将Word中的信息提取到Excel?
  7. SAP Commerce Cloud 新一代 UI Spartacus 和 Customer Data cloud 的集成
  8. 如何在 SAP BTP 上 手动执行 workflow
  9. Jerry的反省:程序员不要轻易说出“这个功能技术上无法实现“
  10. jasmine spyOn的单步调试