Created by Jerry Wang, last modified on Mar 27, 2014

report执行之前的Acquisition contract有10个IP Product:

执行report之后到UI检查,所有的IP product都移除了:

report source code 如下:

REPORT  zunassign_ip.
PARAMETERS:order TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '5600000010'.DATA: lo_core                TYPE REF TO cl_crm_bol_core,lo_collection          TYPE REF TO if_bol_entity_col,lv_query_name          TYPE crmt_ext_obj_name,lt_selection_parameter TYPE genilt_selection_parameter_tab,ls_selection_parameter TYPE genilt_selection_parameter,lv_item_guid type crmt_object_guid,lr_del_handler type ref to cl_crm_ipm_item_delete_handler,lv_delete    type crmt_boolean,lv_count     type i value 0,ls_query_parameters    TYPE genilt_query_parameters.ls_selection_parameter-attr_name = 'OBJECTID'.
ls_selection_parameter-option =  'EQ'.
ls_selection_parameter-sign = 'I'.
ls_selection_parameter-low =  order.
APPEND ls_selection_parameter TO lt_selection_parameter.ls_query_parameters-max_hits = 1.
lv_query_name = 'BTAdvQueryAUI'.lo_core = cl_crm_bol_core=>get_instance( ).
lo_core->load_component_set( 'BT' ).
lo_core->load_component_set( 'IPMRM' ).
lo_collection = lo_core->dquery(iv_query_name               = lv_query_nameit_selection_parameters     = lt_selection_parameteris_query_parameters         = ls_query_parameters ).DATA(lo_contract) = lo_collection->get_current( ).
CHECK lo_contract IS NOT INITIAL.
DATA: lr_item_handler TYPE REF TO cl_crm_ipm_item_handler.
CREATE OBJECT lr_item_handler EXPORTING iv_header_bol_entity = lo_contract.DATA(ips) = lr_item_handler->get_ips( ).
DATA(ip_instance) = ips->get_first( ).WHILE ip_instance IS NOT INITIAL.IF ip_instance->lock( ) = abap_false.ip_instance = ips->get_next( ).CONTINUE.ENDIF.ip_instance->GET_PROPERTY_AS_VALUE( EXPORTING iv_attr_name = 'GUID' IMPORTING ev_result = lv_item_guid ).CALL FUNCTION 'CRM_IPM_ITEM_IP_DELETE_CHK'EXPORTINGIV_OBJECT_GUID = lv_item_guidIV_HEADER_GUID = lv_item_guidIMPORTINGEV_DELETE      = lv_delete.IF lv_delete = abap_false.ip_instance = ips->get_next( ).CONTINUE.ENDIf.DATA(ip_handler) = cl_crm_ipm_item_handler_provid=>get_instance( ip_instance ).create object lr_del_handlerexportingir_item_handler = ip_handler.data lr_col type ref to if_bol_bo_col.create object lr_col type cl_crm_bol_bo_col.lr_col->add( ip_instance ).lr_del_handler->delete_ips( lr_col ).ADD 1 TO lv_count.ip_instance = ips->get_next( ).
ENDWHILE.lo_core->modify( ).DATA(lo_transaction) = lo_core->get_transaction( ).
CHECK lo_transaction->check_save_possible( ) = abap_true.CHECK lo_transaction->save( ) = abap_true.lo_transaction->commit( ).WRITE: / 'Successfully Unassigned IP number: ', lv_count.

使用代码将IP product assign到指定的Acquisition contract

Created by Jerry Wang, last modified on Mar 19, 2014

执行report,指定需要assign的IP product ID 和需要assign的Acquisition contract:

执行成功后去UI查看:

发现指定的IP product已经成功被assign:

report 的source code如下:

PARAMETERS: prod  type comm_product-product_id OBLIGATORY,order TYPE CRMD_ORDERADM_H-object_id.DATA: lo_core                TYPE REF TO cl_crm_bol_core,lo_collection          TYPE REF TO if_bol_entity_col,lv_query_name          TYPE crmt_ext_obj_name,lt_selection_parameter TYPE genilt_selection_parameter_tab,ls_selection_parameter TYPE genilt_selection_parameter,ls_query_parameters    TYPE genilt_query_parameters.ls_selection_parameter-attr_name = 'OBJECTID'.
ls_selection_parameter-option =  'EQ'.
ls_selection_parameter-sign = 'I'.
ls_selection_parameter-low =  order.
APPEND ls_selection_parameter TO lt_selection_parameter.ls_query_parameters-max_hits = 1.
lv_query_name = 'BTAdvQueryAUI'.lo_core = cl_crm_bol_core=>get_instance( ).
lo_core->load_component_set( 'BT' ).lo_collection = lo_core->dquery(iv_query_name               = lv_query_nameit_selection_parameters     = lt_selection_parameteris_query_parameters         = ls_query_parameters ).DATA(lo_contract) = lo_collection->get_current( ).
CHECK lo_contract IS NOT INITIAL.
DATA(locked) = lo_contract->lock( ).CHECK locked  = 'X'.DATA(lr_item_handler)  = cl_crm_ipm_item_handler_provid=>get_instance( lo_contract ).
ASSERT lr_item_handler IS NOT INITIAL.lv_query_name = 'ProdAdvSearchRgProducts'.
CLEAR: lt_selection_parameter.
ls_selection_parameter-attr_name = 'PRODUCT_ID'.
ls_selection_parameter-option =  'EQ'.
ls_selection_parameter-sign = 'I'.
ls_selection_parameter-low =  prod.
APPEND ls_selection_parameter TO lt_selection_parameter.
lo_core->load_component_set( 'PROD_ALL' ).lo_collection = lo_core->dquery(iv_query_name               = lv_query_nameit_selection_parameters     = lt_selection_parameteris_query_parameters         = ls_query_parameters ).DATA(lo_product) = lo_collection->get_current( ).
ASSERT lo_product IS NOT INITIAL.
DATA(result) = lr_item_handler->create_ip( lo_product ).
ASSERT result IS NOT INITIAL.DATA(lo_transaction) = lo_core->get_transaction( ).lo_core->modify( ).
DATA(lv_changed) = lo_transaction->check_save_needed( ).CHECK lv_changed EQ abap_true.
DATA(lv_success) = lo_transaction->save( ).
IF lv_success = abap_true.lo_transaction->commit( ).WRITE:/ 'IP Assigned Successfully'.
ELSE.lo_transaction->rollback( ).WRITE: / 'IP Assigned failed'.
ENDIF.

使用代码批量生成IP product

Created by Jerry Wang on Mar 18, 2014

下列代码可以将UI上批量生成IP Product的功能自动化:

执行report, 指定template IP product ID和待生成的IP product number:

执行report后打印出成功生成的IP product ID:

report source code如下:

REPORT  zgenerate_ip.PARAMETERS: prod TYPE comm_product-product_id OBLIGATORY DEFAULT 'MEETMYFRIENDTOM',num  TYPE i.DATA: lo_core                TYPE REF TO cl_crm_bol_core,lo_collection          TYPE REF TO if_bol_entity_col,lv_query_name          TYPE crmt_ext_obj_name,lt_reltype_filter      TYPE comt_il_reltype_tab,lv_product_id          TYPE comm_product-product_id,lt_selection_parameter TYPE genilt_selection_parameter_tab,ls_selection_parameter TYPE genilt_selection_parameter,ls_query_parameters    TYPE genilt_query_parameters.lv_query_name = 'ProdAdvSearchRgProducts'.
CLEAR: lt_selection_parameter.
ls_selection_parameter-attr_name = 'PRODUCT_ID'.
ls_selection_parameter-option =  'EQ'.
ls_selection_parameter-sign = 'I'.
ls_selection_parameter-low =  prod.
APPEND ls_selection_parameter TO lt_selection_parameter.
lo_core = cl_crm_bol_core=>get_instance( ).
lo_core->load_component_set( 'PROD_ALL' ).lo_collection = lo_core->dquery(iv_query_name               = lv_query_nameit_selection_parameters     = lt_selection_parameteris_query_parameters         = ls_query_parameters ).DATA(lo_product) = lo_collection->get_current( ).
ASSERT lo_product IS NOT INITIAL.DO num TIMES.CALL METHOD cl_crm_ipm_ip_copy=>set_mass_gen_mode( lt_reltype_filter ).DATA(lr_col) = lo_product->execute( iv_method_name = 'COPY_PRODUCT' ). "#EC NOTEXTASSERT lr_col IS NOT INITIAL.DATA(lo_first) = lr_col->get_first( ).WHILE lo_first IS NOT INITIAL.lv_product_id = lo_first->get_property_as_string( 'PRODUCT_ID' ).WRITE: / 'Generated IP Product ID: ' , lv_product_id.lo_first = lr_col->get_next( ).ENDWHILE.
ENDDO.DATA(lo_transaction) = lo_core->get_transaction( ).lo_core->modify( ).
DATA(lv_changed) = lo_transaction->check_save_needed( ).CHECK lv_changed EQ abap_true.
DATA(lv_success) = lo_transaction->save( ).
IF lv_success = abap_true.lo_transaction->commit( ).WRITE:/ 'IP Generated Successfully'.
ELSE.lo_transaction->rollback( ).WRITE: / 'IP Generated failed'.
ENDIF.

IPM: 使用代码删除Acquisition contract上的IP Product相关推荐

  1. 使用代码删除Acquisition contract上指定IP的right scope

    Created by Jerry Wang, last modified on Oct 10, 2014 假设需要删除第二个line item IP拥有的四个right scope: 执行report ...

  2. IPM: Partner determination in Acquisition contract containing IP Product

    Created by Jerry Wang on Mar 12, 2014 Licensor 维护Business partner 2750722, 下列partner自动被determine出来 根 ...

  3. 基于OkHttp 、Retrofit 、Volley 、RxJava、Novate多种网络框架整合的快速项目开发框架,一行代码实现Ftp文件上传、文件下载、文件删除和进度监听的工具类的使用

    基于OkHttp .Retrofit .Volley .RxJava.Novate多种网络框架整合的快速项目开发框架,Ftp文件上传.文件下载的工具类的使用. 依赖于Ftp的jar包,对上传.下载.删 ...

  4. 删除顽固文件的执行代码,删除rhsa属性文件,删除服务器中黑客留下...

      删除顽固文件的执行代码,删除rhsa属性文件,删除服务器中黑客留下的畸形文件文件有时候服务器的网站空间被黑客入侵,上传了删除不了的文件,我们可以用bat代码来执行删除. DEL /F /A /Q ...

  5. php中划线,html中下划线、删除线、上划线的样式与用法实例

    这篇文章主要介绍了下划线.删除线.上划线等常用的实例,划线是非常常见的一种样式,为了网页中的视觉效果以及对文字的说明,我们经常对文体进行一些划线操作.下面文章就是对各种划线的详细介绍. 一. 下划线的 ...

  6. antd design Upload文件上传,删除,批量上传组件封装

    1.单个文件上传组件,无文件时显示上传,有文件时显示文件,可删除,重新上传,样式适合图片上传,可根据文件格式更改样式,效果图如下. 页面调用代码 <FormItem{...formItemLay ...

  7. Git入门之命令行删除文件及上传大文件至Github(二)

    自2013年开始,作者的代码基本是分享到CSDN下载区,最早设置均是免费的,但随着下载量增加,分数自动增长.为了更好地分享开源代码及相关工具,赶上时代潮流,作者后续会将代码分享至Github和CSDN ...

  8. 使用AndroidStudio打包OpenCV和C++代码并在安卓上运行

    使用AndroidStudio打包OpenCV和C++代码并在安卓上运行 在为服务器部署OpenCV和C++的过程中尝试了很多方法,这里记录一下在AndroidStudio上打包OpenCV和C++的 ...

  9. 高级前端进阶:我是如何把 C/C++ 代码跑在浏览器上的?

    最近组长交给我一个任务,让我尝试一下将知名视频转码库 ffmpeg (使用 C 编写)跑在浏览器里面,我当时就懵了,还能这么玩?调研了一番,发现有个叫 WebAssembly 的东西可以干这么件事情, ...

最新文章

  1. Linux安全检查方法
  2. 《数据竞赛白皮书》发布:竞赛核心价值及促进人才数字化转型
  3. 第十九课.Pytorch-geometric扩展
  4. ps查看oracle进程数,通过ps -ef | grep oracle查出的进程,怎样对应数据库中跑的进程...
  5. 机器学习算法选择——特征提取
  6. 临床研究和医疗保健行业实现数据湖架构的机会和挑战
  7. bsp模型适用于图计算_CODE V微信简报:光束合成传播算法(BSP)
  8. C# WinForm开发系列 - TextBox
  9. 如何查看sqlserver日志的方法
  10. File类与FileInfo类
  11. 自媒体平台数据统计分析爬虫系列教程文档
  12. Android接入TapTap踩坑
  13. Spring Cloud 快速入门指南(二)
  14. 浅析AI边缘计算的车辆/车牌识别技术研发及场景应用
  15. 腾讯云 mysql 远程_腾讯云服务器 MySQL 远程连接设置
  16. Linux的基础存储管理
  17. JavaScript-事件和事件对象、实现键盘打字小游戏
  18. Error: Request failed with status code 429
  19. Java XML分析技术: StAX, SAX, DOM, DOM4j, JDOM
  20. TAR GZ 压缩,解压缩命令

热门文章

  1. C语言。自定义函数简单版
  2. 高德地图JavaScript API开发研究
  3. WDK tips (9.1) 同步机制与锁
  4. webpart template
  5. 把图片保存到数据库的实现
  6. 文献记录(part36)--A survey on heterogeneous network representation learning
  7. Django从理论到实战(part19)--DTL模板语法
  8. 如何利用SQL求取微信的共同好友数?
  9. Sql 中的变量使用
  10. Docker 实战教程之从入门到提高 (四)