Created by Jerry Wang, last modified on Apr 22, 2014

issue: 执行wiki 末尾的report,

该report 会生成一个新的IBASE,包含一个IBASE component,该component上维护了一个individual object, ID为JERRYOBJECT1. 该report会根据输入的Object Family和Object Category,首先创建出Object,再创建Object component,最后删除object component,并保存整个transaction。

report执行完毕后,通过transaction code SMW01能观察到IBASE和Individual object对应的BDOC。

问题是在product system上执行report后SMW01里没有生成对应的entry。

分析:

在CL_SMW_MFLOW~PROCESS_OUTBOUND上设断点,

发现原因在于IBASE和I Object对应的BDOC 被维护成了"not send":

该setting在此处维护:

*&---------------------------------------------------------------------*
*& Report  ZIBASE_CREATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zibase_create_delete.

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: ls_header      TYPE ibap_head1,
      lt_struc_tab   TYPE ibap_struc1_tab,
      ls_comp TYPE IBAP_DAT1.
"delete component"

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_DELETE'
  EXPORTING
     i_comp = ls_comp
  EXCEPTIONS
      DATA_NOT_CONSISTENT = 1
      IBASE_LOCKED = 2
      NOT_SUCCESFUL = 3
      NO_AUTHORITY = 4.

CASE sy-subrc.
   WHEN 1.
      WRITE: / 'data not consistent' COLOR COL_NEGATIVE.
   WHEN 2.
      WRITE: / 'cannot delete locked component' COLOR COL_NEGATIVE.
   WHEN 3.
      WRITE: / 'deletion not successful' COLOR COL_NEGATIVE.
   WHEN 4.
      WRITE: / 'no deletion authorization' COLOR COL_NEGATIVE.
 ENDCASE.

CHECK sy-subrc = 0.

BREAK-POINT.

BREAK-POINT.

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.

no BDOC found in SMW01相关推荐

  1. 利用SMW01分析BDOC错误

    Created by Jerry Wang, last modified on Apr 17, 2014 例子: 如何分析下图BDOC error 点击"Show BDoc Msg Erro ...

  2. why Material request downlaod get an empty BDOC in SMW01 - structure MGV_TLMNR

    Created by Jerry Wang, last modified on Jan 06, 2015 Download request定义如下: 在ERP端debug,发现request里定义的m ...

  3. why Material request download get an empty BDOC in SMW01 - inconsistent filter setting in R3AC1

    Created by Jerry Wang, last modified on Jan 05, 2015 Debug ERP端抽取数据的代码: 但是在CRM inbound端,检查bapistruct ...

  4. Equipment download - No data contained in BDoc

    Created by Jerry Wang on Aug 09, 2014 在SMW01里查看BDOC发现没有任何equipment成功download下来: 尽管download request在R ...

  5. 由于Item category group customizing 缺失导致的BDOC error

    Created by Jerry Wang, last modified on May 07, 2014 在tcode SMW01里观察到存在处于Error状态的BDOC: 查看发现错误是由于item ...

  6. IBASE change related BDOC generation

    Created by Jerry Wang, last modified on Jan 03, 2015 在UI上修改IBASE 信息save后: 后台SMW01里能观察到对应生成的BDOC: 通过如 ...

  7. 查找包含指定关键字的BDOC

    Created by Jerry Wang, last modified on Apr 27, 2015 假设需要查找指定时间段内,包含指定关键字的BDOC列表. 执行report,指定时间间隔和关键 ...

  8. BDOC generated after customer product id is changed in CRM - CUST_MAT_INF

    Created by Wang, Jerry, last modified on Sep 18, 2016 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  9. 解决BDOC structure里header和data structure里数据格式不一致的问题

    在BAdI definition PRODUCT_R3_ADAPTER的BAdI implementation里需要操作structure comt_prod_material_bdoc. 可以发现几 ...

最新文章

  1. 一边动,一边画,自己就变二次元!华人小哥参与的黑科技:实时交互式视频风格化...
  2. 常用数据库的 扩展名 格式 后缀 端口
  3. 链家秋招内推编程笔试题目
  4. SQL Server中如何取得刚插入的标识值
  5. Android本地视频播放器开发--视频解码
  6. struts2 Action 通过Spring管理, 并通过Spring的方式读取配置文件
  7. spring源码分析,聊聊PropertyPlaceholderConfigurer
  8. android UI进阶之实现listview的分页加载
  9. sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据
  10. 在CentOS7上安装和使用ZooKeeper最新版本(V3.4.12)
  11. 有人利用两个SaltStack 漏洞攻击思科 VIRL-PE 基础设施
  12. [导入].net中设置系统时间
  13. Python学习笔记[5]---else语句和with语句
  14. 通过反编译深入理解Java String及intern
  15. 初学ASP.Net时在论坛收藏收集的一些资料备忘
  16. 中职计算机创新杯说课比赛课件,2017年全国中等职业学校“创新杯”  教师信息化教学说课大赛总结...
  17. [强网杯 2019]随便注 —— 堆叠注入
  18. 张小娴说男人不如一条狗,现在连市场分析师也说男人不如一条狗
  19. 微博评论点赞mysql设计_微博点赞功能设计得是否合理?
  20. MVC 几种过滤器及如何使用

热门文章

  1. ELF Format 笔记(七)—— 符号表
  2. 安装 CocoaPods Alcatraz
  3. 对于sonar展示的问题数的研究
  4. sklearn自学指南(part44)--生成数据集
  5. 心电信号去噪(part4)--经验模态分解法(EMD)
  6. 第三次学JAVA再学不好就吃翔(part32)--方法重写
  7. 20应用统计考研复试要点(part19)--概率论与数理统计
  8. 网络编程(part1)--IO及字节串
  9. SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版
  10. SAP 电商云 Spartacus UI 4.1 版本的延迟加载技术介绍