使用代码生成具有层级结构的IBASE
Created by Jerry Wang on Aug 01, 2014
維護待生成的IBASE description,external ID。 該report會為生成的IBASE 創建一個Object component,因此還需要維護一個individual object ID。
?
?
?
執行report后打印成功生成的IBASE ID:
?
?
?
通過IBASE ID在UI上成功搜索出report創建的IBASE:
?
?
?
?
?
?
Object component里維護的object ID即為report的輸入。
?
?
?
?
report source code如下:
?
?
*&---------------------------------------------------------------------*
*&?Report??ZIBASE_CREATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT?zibase_create.
PARAMETERS:?txt?TYPE?char40?OBLIGATORY?DEFAULT?'description?test',
????????????eid?TYPE?char30?OBLIGATORY?DEFAULT?'PROGRAM',
????????????oid?TYPE?comm_product-product_id?OBLIGATORY?DEFAULT?'CHILDOBJ8'.
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.
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.
總結
以上是生活随笔為你收集整理的使用代码生成具有层级结构的IBASE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2串1稳赚技巧月入十万 足彩有一个必胜公
- 下一篇: 口袋妖怪绿宝石琉璃市道馆怎么去 去琉璃市