BOL的使用例子

博客内容介绍了如何在CRM系统中利用ABAP操作BOL(Business Object Layer)数据,包括增删改等操作,并强调需注意特定代码的添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这个例子演示了怎么获取BOL的数据。


DATA iv_guid TYPE	crmt_object_guid.

iv_guid = '*********************************'.
CHECK iv_guid IS NOT INITIAL .

DATA lv_bol_core TYPE REF TO cl_crm_bol_core.
lv_bol_core = cl_crm_bol_core=>get_instance( ).
lv_bol_core->start_up( 'ONEORDER' ).

DATA lv_root TYPE REF TO cl_crm_bol_entity.
TRY.
    CALL METHOD lv_bol_core->get_root_entity
      EXPORTING
        iv_object_name = 'BTOrder'
        iv_object_guid = iv_guid
      RECEIVING
        rv_result      = lv_root.
  CATCH cx_crm_genil_model_error .
ENDTRY.

CHECK lv_root IS BOUND .

DATA lr_header TYPE REF TO cl_crm_bol_entity.

lr_header = lv_root->get_related_entity( iv_relation_name = 'BTOrderHeader' ).

CHECK lr_header IS BOUND .

DATA lr_datesset TYPE REF TO cl_crm_bol_entity.

lr_datesset = lr_header->get_related_entity( iv_relation_name = 'BTHeaderDatesSet' ).

CHECK lr_datesset IS BOUND .

DATA lr_datesall TYPE REF TO if_bol_entity_col.

lr_datesall = lr_datesset->get_related_entities( iv_relation_name = 'BTDatesAll' ).

CHECK lr_datesall IS BOUND.

DATA lr_iterator TYPE REF TO if_bol_entity_col_iterator.
DATA lr_property_access TYPE REF TO if_bol_bo_property_access.
DATA ls_date TYPE crmst_date_btil.

lr_iterator ?= lr_datesall->get_iterator( ).

CHECK lr_iterator IS BOUND.

lr_property_access ?= lr_iterator->get_first( ).

CHECK lr_property_access IS BOUND.

CALL METHOD lr_property_access->get_properties
  IMPORTING
    es_attributes = ls_date.

IF 条件判断.
逻辑代码
ENDIF.

WHILE lr_property_access IS BOUND.

  CALL METHOD lr_property_access->get_properties
    IMPORTING
      es_attributes = ls_date.

  IF 条件判断.
逻辑代码
 ENDIF. 
lr_property_access ?= lr_iterator->get_next( ).
ENDWHILE.


其实可以用这个方式操作BOL数据。增删改都行。

不过要记得加这几行代码。

lv_bol_core->modify( ).

DATA lv_transaction TYPE REF TO if_bol_transaction_context.
lv_transaction = lv_bol_core->get_transaction( ).
CHECK lv_transaction IS BOUND .
CHECK lv_transaction->check_save_possible( ) EQ abap_true.
CHECK lv_transaction->save( ) EQ abap_true.
lv_transaction->commit( ).



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值