Created by Jerry Wang, last modified on Jul 16, 2014

下列report能给指定的product创建3个用户输入的distribution chain:

执行完report后UI检查结果如下:

detail page:

source code如下:

REPORT prod_create_distr_chain.
PARAMETERS: id TYPE comm_product-product_id OBLIGATORY DEFAULT 'R15'.
SELECTION-SCREEN BEGIN OF BLOCK b1WITH FRAME TITLE txt1.PARAMETERS: sa_org1 type string OBLIGATORY DEFAULT 'O 50001213',dc1 type string OBLIGATORY DEFAULT '01',shotxt1 type string OBLIGATORY DEFAULT 'Inbox Test',satxt1 type string OBLIGATORY DEFAULT 'IC Inbox Test',dctxt1 type string OBLIGATORY DEFAULT 'Distribution channel 01',dcid1 type string OBLIGATORY DEFAULT 'O 50001213 / 01',long1 type string OBLIGATORY DEFAULT 'Sales Organization Inbox Test , Distrib.Channel 01'.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2WITH FRAME TITLE txt2.PARAMETERS: sa_org2 type string OBLIGATORY DEFAULT 'O 50001194',dc2 type string OBLIGATORY DEFAULT '02',shotxt2 type string OBLIGATORY DEFAULT 'Labs',satxt2 type string OBLIGATORY DEFAULT 'SAP Labs SH',dctxt2 type string OBLIGATORY DEFAULT 'for test',dcid2 type string OBLIGATORY DEFAULT 'O 50001194 / 02',long2 type string OBLIGATORY DEFAULT 'Sales Organization Labs , Distrib.Channel 02'.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3WITH FRAME TITLE txt3.PARAMETERS: sa_org3 type string OBLIGATORY DEFAULT 'O 50004509',dc3 type string OBLIGATORY DEFAULT '30',shotxt3 type string OBLIGATORY DEFAULT 'Crm-sales',satxt3 type string OBLIGATORY DEFAULT 'Crm-sales',dctxt3 type string OBLIGATORY DEFAULT '',dcid3 type string OBLIGATORY DEFAULT 'O 50004509 / 30',long3 type string OBLIGATORY DEFAULT 'Sales Organization Crm-sales , Distrib.Channel 30'.
SELECTION-SCREEN END OF BLOCK b3.
INITIALIZATION.txt1 = 'Distribution chain1'.txt2 = 'Distribution chain2'.txt3 = 'Distribution chain3'.
START-OF-SELECTION.
DATA(product) = cl_crm_prod_internal_tool=>get_prod_by_id( id ).
DATA: lv_index TYPE int4 VALUE 1.
DATA(lo_dist_chain) = product->get_related_entities( iv_relation_name = 'ProductDistrChain' ).
IF lo_dist_chain->size( ) > 0.WRITE: / 'Current product already has distribution chain maintained.' COLOR COL_NEGATIVE.RETURN.
ENDIF.
* 1
DATA(lo_chain_single) = product->create_related_entity( iv_relation_name = 'ProductDistrChain'iv_child_name = 'ProdDistrChain' ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SALES_ORG' iv_value = sa_org1 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DISTR_CHAN' iv_value = dc1 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SHORT_DESC' iv_value = shotxt1 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SALES_DESC' iv_value = satxt1 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DISTR_DESC' iv_value = dctxt1 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DSTRBCHAIN_ID' iv_value = dcid1 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DESCRIPTION' iv_value = long1 ).
*2
lo_chain_single = product->create_related_entity( iv_relation_name = 'ProductDistrChain'iv_child_name = 'ProdDistrChain' ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SALES_ORG' iv_value = sa_org2 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DISTR_CHAN' iv_value = dc2 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SHORT_DESC' iv_value = shotxt2 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SALES_DESC' iv_value = satxt2 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DISTR_DESC' iv_value = dctxt2 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DSTRBCHAIN_ID' iv_value = dcid2 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DESCRIPTION' iv_value = long2 ).
lo_chain_single = product->create_related_entity( iv_relation_name = 'ProductDistrChain'iv_child_name = 'ProdDistrChain' ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SALES_ORG' iv_value = sa_org3 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DISTR_CHAN' iv_value = dc3 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SHORT_DESC' iv_value = shotxt3 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'SALES_DESC' iv_value = satxt3 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DISTR_DESC' iv_value = dctxt3 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DSTRBCHAIN_ID' iv_value = dcid3 ).
lo_chain_single->set_property_as_string( iv_attr_name = 'DESCRIPTION' iv_value = long3 ).
DATA(lv_saved) = cl_crm_prod_internal_tool=>save_transaction( ).
WRITE: / 'saved successfully?' , lv_saved COLOR COL_TOTAL.class CL_CRM_PROD_INTERNAL_TOOL definitionpublicfinalcreate public .
public section.class-methods CLASS_CONSTRUCTOR .class-methods GET_PROD_BY_IDimporting!IV_PRODUCT_ID type COMM_PRODUCT-PRODUCT_IDreturningvalue(RO_BOL) type ref to CL_CRM_BOL_ENTITY .class-methods SAVE_TRANSACTIONreturningvalue(RV_SUCCESS) type ABAP_BOOL .
protected section.
private section.class-data SO_BOL_CORE type ref to CL_CRM_BOL_CORE .
ENDCLASS.
CLASS CL_CRM_PROD_INTERNAL_TOOL IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method CL_CRM_PROD_INTERNAL_TOOL=>CLASS_CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>method CLASS_CONSTRUCTOR.so_bol_core = cl_crm_bol_core=>get_instance( ).so_bol_core->load_component_set( 'PROD_ALL' ).endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method CL_CRM_PROD_INTERNAL_TOOL=>GET_PROD_BY_ID
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_PRODUCT_ID                  TYPE        COMM_PRODUCT-PRODUCT_ID
* | [<-()] RO_BOL                         TYPE REF TO CL_CRM_BOL_ENTITY
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD get_prod_by_id.DATA:lo_collection      TYPE REF TO if_bol_entity_col,lo_root_entity     TYPE REF TO cl_crm_bol_entity,lv_view_name       TYPE crmt_view_name,lv_query_name      TYPE crmt_ext_obj_name,lt_query_parameter TYPE crmt_name_value_pair_tab,ls_query_parameter LIKE LINE OF lt_query_parameter,lv_size            TYPE i.ls_query_parameter-name = 'PRODUCT_ID'.ls_query_parameter-value = iv_product_id.APPEND ls_query_parameter TO lt_query_parameter.ls_query_parameter-name = 'MAX_ROWS'.ls_query_parameter-value = 1.APPEND ls_query_parameter TO lt_query_parameter.lv_query_name = 'ProdAdvancedSearchProducts'.lo_collection = so_bol_core->query(iv_query_name               = lv_query_nameit_query_params             = lt_query_parameteriv_view_name                = lv_view_name ).ASSERT lo_collection IS NOT INITIAL.ASSERT lo_collection->size( ) = 1.ro_bol = lo_collection->get_current( ).ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method CL_CRM_PROD_INTERNAL_TOOL=>SAVE_TRANSACTION
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RV_SUCCESS                     TYPE        ABAP_BOOL
* +--------------------------------------------------------------------------------------</SIGNATURE>method SAVE_TRANSACTION.so_bol_core->modify( ).DATA(lo_transaction) = so_bol_core->get_transaction( ).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( ).rv_success = abap_true.ELSE.lo_transaction->rollback( ).ENDIF.endmethod.
ENDCLASS.

如何使用代码给product创建distribution chain相关推荐

  1. SAP RETAIL WB02 为门店激活物料分类账报错 - Distribution chain NMI1 00 not valid for retail price determination -

    SAP RETAIL WB02 为门店激活物料分类账报错 - Distribution chain NMI1 00 not valid for retail price determination - ...

  2. SAP cross distribution chain status在Fiori应用中的draft handling

    The explanation why draft handling is necessary in Fiori application could be found from Fiori Desig ...

  3. performance improvement in Distribution chain scenario

    Created by Jerry Wang, last modified on Jul 16, 2014 当删除一个product下面的所有distribution chain并且成功save之后,在 ...

  4. SAP CRM Distribution Chain数据模型

    Created by Jerry Wang, last modified on Nov 25, 2014 系统里Product R15维护了如下格式的Distribution chain 数据: 在B ...

  5. SAP QM 使用QP01事务代码真的不能创建含有Multiple Specification的检验计划

    SAP QM 使用QP01事务代码真的不能创建含有Multiple Specification的检验计划 1, 如下的物料号, QM视图里有激活01检验类型,同时勾选了Multiple Specs选项 ...

  6. Xcode代码块的创建、使用和删除

    Xcode中提供了代码块这一功能,能够让我们快速的创建出自己想要的代码,分为系统自带和自定义代码块两种. 代码块位置在Xcode的最右侧导航栏的底部"{ }"即代表代码块. 橘黄色 ...

  7. vba遍历数组_VBA代码解决方案的第59讲内容:如何在代码运行时创建数组

    大家好,我们今日继续讲解VBA代码解决方案的第59讲内容:如何在代码运行时创建数组 .数组大家并不陌生,在之前我讲过很多了,估计详细阐述数组的只有我这个平台可以找到了,今日讲的是在VBA中代码运行的时 ...

  8. ionic xcode 上传appstroe 创建Distribution证书报错 you already have a current iOS Distribution certificate

    ionic xcode 上传appstroe 创建Distribution证书报错 you already have a current iOS Distribution certificate 报错 ...

  9. java 创建topic,RocketMQ在Java代码之中手动创建Topic

    Rocketmq在Java代码之中手动创建Topic [原创,转载请注明出处] 我的 [博客园主页] [CSDN主页] [简书主页] 加V进Java交流群,备注Java交流:w1129574379 * ...

最新文章

  1. golang hmac的sha1加密例子
  2. PHP核心技术笔记(2):面向对象的设计原则
  3. java 线程安全性_我如何测试Java类的线程安全性
  4. 更改linux子系统软件源为国内镜像
  5. drupal建站系统_容器将如何塑造Drupal生态系统
  6. html获取一条一条的li,html – 在一个li中定位一个span
  7. GridView中BoundField重复绑定数据
  8. Tomcat服务器修改默认端口号
  9. echarts地图map下钻到镇街、KMZ文件转GeoJson、合成自定义区域
  10. SAI+PS超萌Q版插画手绘视频教程
  11. mysql基础面试题大全
  12. PC端QQ协议解析之0825
  13. 台式计算机序列号怎么查,台式机如何查看序列号
  14. 2014_hitcon_stkof学习
  15. Why “the CUDA Samples are not meant for performance measurements”?
  16. 一个接近90岁的维族老大爷用酒把我撂倒了
  17. WAMP/WNMP单独安装
  18. 用 Python 创建属于自己的网易云音乐
  19. AIM Tech Round (Div. 1) C. Electric Charges 二分
  20. excel中每三行取一个数值

热门文章

  1. MySQL 常用语法 之 DISTINCT
  2. udp与tcp协议介绍
  3. 文献记录(part60)--高维模型选择方法综述
  4. 文献记录(part1)--NP-hardness of Euclidean sum-of-squares clustering
  5. 图卷积神经网络(part1)--卷积概述
  6. SAP UI5 初学者教程之二十六 - OData 服务配合 Mock 服务器的使用步骤详解试读版
  7. 如何将 winston log 库记录的日志写入 mongo DB 数据库
  8. Angular 下拉菜单实现的一个例子
  9. SAP Commerce Cloud 的 build 过程
  10. SAP BTP SDK for iOS 介绍