Created by Jerry Wang, last modified on Apr 29, 2015

执行report ZDETER_AND_CREATE,
这个report完成三件事情:

  1. 创建一个新的process type为SC1的service contract
  2. call partner determination的API,完成determination 逻辑(这个例子里determine出来的是employee responsible)
  3. 将step2 得到的partner assign到step1创建的service contract里,同时hard code 另一个Bill to party
  4. call order save将创建的service contract保存到DB
REPORT zdeter_and_create.
DATA: lt_input_fields     TYPE  crmt_input_field_tab,ls_input_field      LIKE LINE OF lt_input_fields,ls_field_name       LIKE LINE OF ls_input_field-field_names,lv_guid             TYPE guid_16,lt_orderadm_h_com   TYPE crmt_orderadm_h_comt,ls_orderadm_h_com   LIKE LINE OF lt_orderadm_h_com,lt_partner          TYPE crmt_partner_comt,ls_partner          LIKE LINE OF lt_partner,ls_partner_control  TYPE crmt_partner_control,ls_com_structure    TYPE string,lv_selection_needed TYPE  crmt_boolean,lv_is_buying_center TYPE  abap_bool,lt_partner_com      TYPE  crmt_partner_comt,ls_partner_com      LIKE LINE OF lt_partner_com,lt_attributes_com   TYPE  crmt_partner_attribute_com_tab,lt_save             TYPE crmt_object_guid_tab,lt_saved            TYPE crmt_return_objects,ls_saved            LIKE LINE OF lt_saved,lt_switch           TYPE crmt_active_switch_t,ls_switch           TYPE LINE OF crmt_active_switch_t.
START-OF-SELECTION.PERFORM call_bp_determ_api.PERFORM call_order_maintain.PERFORM call_order_save.
FORM call_bp_determ_api.CALL FUNCTION 'GUID_CREATE'IMPORTINGev_guid_16 = lv_guid.ls_partner_control-document_id = lv_guid.ls_partner_control-caller = 'CRM'.ls_partner_control-object_type = 'BUS2000112'.ls_partner_control-master_data_structure = 'CRMT_BUS_SALES_COM'.ls_partner_control-determ_proc = '00000041'.ls_partner_control-scope = 'A'.ls_partner_control-no_default_for_calendar_flag = 'X'.ls_partner_control-process_type = 'SC1'.CALL FUNCTION 'CRM_PARTNER_DETERMINATION_OW'EXPORTINGiv_ref_guid         = lv_guidiv_ref_kind         = 'A'iv_point_of_determ  = '0'iv_predecessor_guid = '00000000000000000000000000000000'is_partner_control  = ls_partner_controlis_md_structure     = ls_com_structureIMPORTINGev_selection_needed = lv_selection_neededet_partner_com      = lt_partner_comet_input_fields     = lt_input_fieldset_attributes_com   = lt_attributes_comEXCEPTIONSerror_occurred      = 1parameter_error     = 2OTHERS              = 3.IF sy-subrc = 0.WRITE: / 'partner determination is done successfully'.ENDIF.
ENDFORM.
FORM call_order_maintain.CLEAR: ls_orderadm_h_com, ls_input_field, lt_input_fields.ls_orderadm_h_com-guid = lv_guid.ls_orderadm_h_com-description = 'created by code on:' && sy-timlo.ls_orderadm_h_com-process_type = 'SC1'.ls_orderadm_h_com-mode = 'A'.APPEND ls_orderadm_h_com TO lt_orderadm_h_com.ls_input_field-ref_guid = lv_guid.ls_input_field-ref_kind = 'A'.ls_input_field-objectname = 'ORDERADM_H'.
* sorted tablels_field_name-fieldname = 'DESCRIPTION'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'MODE'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'PROCESS_TYPE'.APPEND ls_field_name TO ls_input_field-field_names.APPEND ls_input_field TO lt_input_fields.CLEAR: ls_input_field.ls_input_field-ref_guid = lv_guid.ls_input_field-ref_kind = 'A'.ls_input_field-objectname = 'PARTNER'.CLEAR: ls_field_name.ls_field_name-fieldname = 'DISPLAY_TYPE'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'KIND_OF_ENTRY'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'NO_TYPE'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'PARTNER_FCT'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'PARTNER_NO'.APPEND ls_field_name TO ls_input_field-field_names.ls_input_field-ref_handle = '0000000000'.ls_input_field-logical_key = '0000'.APPEND ls_input_field TO lt_input_fields.ls_partner-ref_guid = lv_guid.ls_partner-ref_kind = 'A'.ls_partner-kind_of_entry = 'C'.ls_partner-partner_fct = '00000003'. "Bill tols_partner-partner_no = '0004102821'.ls_partner-display_type = 'BP'.ls_partner-no_type = 'BP'.APPEND ls_partner TO lt_partner.READ TABLE lt_partner_com INTO ls_partner_com INDEX 1.ls_partner-ref_guid = lv_guid.ls_partner-ref_kind = 'A'.ls_partner-kind_of_entry = 'C'.ls_partner-partner_fct = ls_partner_com-partner_fct.ls_partner-partner_no = ls_partner_com-partner_no.ls_partner-display_type = 'BP'.ls_partner-no_type = 'BP'.APPEND ls_partner TO lt_partner.ls_switch-ref_guid = lv_guid.ls_switch-ref_kind = 'A'.ls_switch-partner_determ = 'A'.APPEND ls_switch TO lt_switch.CALL FUNCTION 'CRM_ORDER_MAINTAIN'EXPORTINGit_active_switch = lt_switchit_partner       = lt_partnerCHANGINGct_orderadm_h    = lt_orderadm_h_comct_input_fields  = lt_input_fieldsEXCEPTIONSOTHERS           = 99.IF sy-subrc = 0.WRITE:/ 'Order maintain function is done successfully.'.ENDIF.
ENDFORM.
FORM call_order_save.INSERT lv_guid INTO TABLE lt_save.CALL FUNCTION 'CRM_ORDER_SAVE'EXPORTINGit_objects_to_save   = lt_saveiv_update_task_local = abap_trueiv_no_bdoc_send      = abap_trueIMPORTINGet_saved_objects     = lt_savedEXCEPTIONSdocument_not_saved   = 1.IF sy-subrc <> 0.WRITE: / 'Service contract created failed'.ELSE.READ TABLE lt_saved INTO ls_saved INDEX 1.WRITE: / 'service contract created successfully, id: ' , ls_saved-object_id.ENDIF.COMMIT WORK AND WAIT.
ENDFORM.

如何使用代码创建service contract并实现partner determination相关推荐

  1. 如何使用代码区分service contract和service contract quotation

    SAP standard deliver的service contract和service contract quotation的transaction type分别为SC1和SCQ1: 这两个tra ...

  2. 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承...

    当今的IT领域,SOA已经成为了一个非常时髦的词,对SOA风靡的程度已经让很多人对SOA,对面向服务产生误解.其中很大一部分人甚至认为面向服务将是面向对象的终结,现在的面向对象将会被面向服务完全代替. ...

  3. WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance

    我们知道WCF有3种典型的对service instance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Sin ...

  4. 【Binder 机制】AIDL 分析 ( 创建 Service 服务 | 绑定 Service 远程服务 )

    文章目录 一.创建 Service 远程服务 1.创建 Service 2.AndroidManifest.xml 清单文件中配置 Service 二.绑定 Service 远程服务 1.核心代码 2 ...

  5. SharePoint 使用代码创建 SPWeb/SPSiite/SPWebApplication以及WebPart添加到页面与删除 (一)...

    在创建的时候注意你要有权限.还有如果要使用请注意合理释放资源,因为我是随便写的 就没有去考虑资合理问题. 首先我要写的大家怎么去获取SPWeb/SPSiite/SPWebApplication,我会使 ...

  6. 存根类 测试代码 java_有关为旧版代码创建存根的更多信息–测试技术7

    存根类 测试代码 java 在我的上一个博客中 ,我谈到了如何处理行为不佳的不可测试的 (1) SitePropertiesManager 类,以及如何通过提取接口来创建存根. 但是,如果由于旧类的源 ...

  7. 存根类 测试代码 java_为旧版代码创建存根-测试技术6

    存根类 测试代码 java 任何阅读此博客的人都可能已经意识到,目前我正在开发一个项目,其中包含大量的旧代码,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为非常差的类 ...

  8. 为旧版代码创建存根–测试技术6

    任何阅读此博客的人都可能已经意识到,目前我正在开发一个包含大量旧代码的项目,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为异常的类非常普遍,整个团队都一次又一次地犯错 ...

  9. 有关为旧版代码创建存根的更多信息–测试技术7

    在上一个博客中 ,我谈到了如何处理行为不佳的不可测试的 (1) SitePropertiesManager 类,以及如何通过提取接口来创建存根. 但是,如果由于旧类的源代码已被锁定在第三方JAR文件中 ...

最新文章

  1. 如何将Wav文件做到EXE文件里
  2. android+note2+分辨率,5.5英寸720p屏全新RGB像素排列_三星 GALAXY Note II_手机Android频道-中关村在线...
  3. Java Character 方法
  4. Hemberg-lab单细胞转录组数据分析(一)
  5. 网络打印服务器的作用,内置网络打印服务器有什么用?
  6. mysql经典四表查询_mysql经典问题四表查询(教师,学生,成绩,课程表)
  7. EJB3.0 Timer
  8. 单片机应用中的c语言用词注解,嵌入式C编程 PIC单片机和C编程技术与应用pdf
  9. 2.1.5、会员权限管理系统应用
  10. 防火墙中的DMZ区域,Trust区域,Untrust区域
  11. win10计算机属性管理打不开,win10无法打开设置应用的两种解决方法【图文】
  12. 划分数,分苹果问题·计算机算法·动态规划·C/C++
  13. 国外邮箱安全性排名,国外邮箱哪个安全好用?
  14. php easysms,Laravel 短信发送组件 - easy-sms
  15. 幼儿认知发展虚拟仿真系统
  16. input的23种type类型
  17. Java知识点梳理思维导图
  18. 计算二叉树的深度和叶子结点数
  19. vulnhub靶场-hacksudo - Thor
  20. ios apple语音性别_iOS 14:Apple终于听了

热门文章

  1. Java数据结构-基于数组的栈和泛型
  2. 项目-团队-技术-个人 (团队建设篇)
  3. 学习:java设计模式—工厂模式
  4. 开始做在线拍照功能了
  5. C# 利用系统剪贴板 保存 自定义对象
  6. numpy基础(part4)--统计量
  7. win7 php mysql扩展名_Win7 配置Apache+PHP+Mysql环境
  8. SAP UI5 应用开发教程之五十二 - 如何使用 SAP UI5 的标准控件结合 Cordova 插件调用手机摄像头进行条形码扫描
  9. SAP 电商云 Spartacus UI set delivery mode HTTP put 请求的触发时机
  10. Orbeon form 的安装和使用教程